1概述
1.1影响Linux服务程序性能的因素
CPU、内存、磁盘I/O带宽、网络I/O带宽
1.2性能评判
CPU:user% + sys%< 70%; 程序在用户态和内核态的执行时间百分比。
内存:Swap In(si)=0; Swap Out(so)=0; 以不使用交换分区为准,如果频繁用到交换分区,内存可能不够了。
硬盘:iowait % < 20%;
网络:只要有足够带宽尽情的使用吧,达到网卡带宽linux系统表示毫无压力
其中: %user:表示CPU处在用户模式下的时间百分比。
%sys:表示CPU处在内核模式下的时间百分比。
%iowait:表示CPU等待输入输出完成时间的百分比。
swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM
swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。
1.3性能分析工具
常用系统命令:top、free、ps、uptime、iotop、vmstat、iostat 、dstat、sar。
使用方法:top命令把握全局,使用特定命令深入分析
常用组合方式:
(1)CPU瓶颈:top、vmstat、iostat、sar –u、sar -q
(2)内存瓶颈:free、vmstat、sar -B、sar –r、sar -W
(3)磁盘I/O瓶颈:iotop、iostat、sar -b、sar –u、sar -d
(4)网络瓶颈: dstat
2 top
2.1功能
提供了实时的对系统处理器、内存、任务等状态监视;该命令可以按CPU使用、内存使用对任务进行排序;TOP是一个动态显示过程,可以通过用户按键来不断刷新当前状态,也可以在启动时指定刷新间隔。
2.2命令输出示意图
top - 10:16:29 up 38 days, 15:48, 5 users, load average: 0.04, 0.10, 0.05
Tasks: 569 total, 2 running, 562 sleeping, 0 stopped, 5 zombie
Cpu(s): 2.6%us, 1.3%sy, 0.4%ni, 95.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3839112k total, 3151560k used, 687552k free, 302944k buffers
Swap: 6078456k total, 631852k used, 5446604k free, 348548k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10603 zhixiang 20 0 1225m 284m 30m S 4.6 7.6 271:48.24 vs_exe
2473 xulun 20 0 118m 43m 6932 S 3.0 1.2 964:14.99 Xvnc
1412 xulun 30 10 232m 12m 5216 S 2.3 0.3 0:04.59 floaters
14823 chujie 20 0 1112m 247m 17m S 2.0 6.6 363:51.38 vs_exe
17772 sihao 20 0 1101m 202m 10m S 1.7 5.4 631:21.17 vs_exe
11054 sihao 20 0 906m 65m 9412 S 1.0 1.7 410:06.55 vs_exe
20782 yongtao 20 0 1049m 173m 9996 S 1.0 4.6 196:05.10 vs_exe
14637 chujie 20 0 1274m 132m 2388 S 0.7 3.5 63:20.18 KugooPopMsgServ
1439 yanyun 20 0 15428 1600 940 R 0.3 0.0 0:00.01 top
3491 zhixiang 20 0 129m 55m 17m S 0.3 1.5 10:57.25 Xvnc
1 root 20 0 19344 1200 984 S 0.0 0.0 0:00.89 init
2.3命令输出解析
Top输出的信息很多基本囊括了所有的性能指标,前五行是统计信息区,表示的是系统整体的统计信息,包括:系统负载、任务、CPU、内存等;后面的是每个进程相关信息。
第一行是任务队列信息,同uptime命令的执行结果是一样的
[yanyun@~/test]$ uptime
10:20:17 up 38 days, 15:52, 5 users, load average: 0.00, 0.04, 0.03
其内容如下:10:20:17:当前时间
38 days, 15:52:系统运行时间
5 users:当前登录用户数
load average: 0.00, 0.04, 0.03:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二行为进程的信息
内容如下:569 total:进程总数
2 running,:正在运行的进程数
562 sleeping:睡眠的进程数
0 stopped:停止的进程数
5 zombie:僵尸进程数
第三行为CPU的信息
内容如下:2.6%us:用户空间占用CPU百分比
1.3%sy:内核空间占用CPU百分比
0.4%ni:用户进程空间内改变过优先级的进程占用CPU百分比
95.7%id:空闲CPU百分比
0.0%wa:等待输入输出的CPU时间百分比
第四、五行为内存信息;命令输出跟free相同
[yanyun@~]$ free
total used free shared buffers cached
Mem: 3839112 3256976 582136 0 143664 444992
-/+ buffers/cache: 2668320 1170792
Swap: 6078456 574772 5503684
内容如下:Mem :3839112k total:物理内存总量
3151560k used:使用的物理内存总量
687552k free:空闲内存总量
302944k buffers:用作缓冲的内存量
Swap: 6078456k total:交换区总量
631852k used:使用的交换区总量
5446604k free:空闲交换区总量
348548k cached:缓存总量。
注:buffer:可以认为是写出磁盘的缓冲区;
Cache:读出磁盘的缓存。
Linux系统