预先做其事必先利其器,先总结一下linux常用的调优工具
第一个是最常用的 top
从上往下看
第一行
top 是当前的时间
up 启动了的时间
user 当前有多少用户登录系统
load average 平均负载,平均活跃进程数,
从左到右分别是1分钟,3分钟,15分钟的统计数值,跟cpu核数比较,例如当平均负载为 2 时,意味着什么呢?
1 只有 2 个 CPU 的系统上,意味着所有的 CPU 都刚好被完全占用。
2 在 4 个 CPU 的系统上,意味着 CPU 有 50% 的空闲。
3 而在只有 1 个 CPU 的系统中,则意味着有一半的进程竞争不到 CPU。
第二行:显示任务的数量情况
total: 进程总数
running: 运行进程数
sleepinbg: 休眠进程数
stoped: 终止进程数
zamble: 僵死进程数
第三行:表示cpu的运行情况,按下1可以显示每个核的运行情况
%us: 用户空间占用cpu百分比
%sy: 内核空间系统占用cpu百分比
%ni: 用户进程空间内改变过优先级的进程占用cpu百分比
%id: 空闲cpu百分比,反映一个系统cpu的闲忙程度。越大越空闲
%wa: 等待输入输出(I/O)的cpu百分比;
%hi: 指的是cpu处理硬件中断的时间;
%si: 值的是cpu处理软件中断的时间;
%st: 用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间。
第四行: 内存memory的使用情况
total: 总的物理内存;
used: 使用物理内存大小;
free: 空闲物理内存;
buffers/cache:
1 Buffers 是内核缓冲区用到的内存,对应的是 /proc/meminfo 中的 Buffers 值
2 Cache 是内核页缓存和 Slab 用到的内存,对应的是 /proc/meminfo 中的 Cached 与 SReclaimable 之和。
两个的意思都是缓存,具体的区别是:
1 Buffers 是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据,通常不会特别大(20MB 左右)。这样,内核就可以把分散的写集中起来,统一优化磁盘的写入,比如可以把多次小的写合并成单次大的写等等。
2Cached 是从磁盘读取文件的页缓存,也就是用来缓存从文件读取的数据。这样,下次访问这些文件数据时,就可以直接从内存中快速获取,而不需要再次访问缓慢的磁盘。
SReclaimable 是 Slab 的一部分。Slab 包括两部分,其中的可回收部分,用 SReclaimable 记录;而不可回收部分,用 SUnreclaim 记录。
总结:
Buffer 是对磁盘数据的缓存,而 Cache 是文件数据的缓存,它们既会用在读请求中,也会用在写请求中。
第五行: 表示交换空间swap的使用情况
PID:进程编号
USER:进程所属用户
PR/NI:Priority/Nice value进程执行的优先顺序
VIRT:VIRT 是进程虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内
RES:RES 是常驻内存的大小,也就是进程实际使用的物理内存大小,但不包括 Swap 和共享内存
SHR:是共享内存的大小,比如与其他进程共同使用的共享内存、加载的动态链接库以及程序的代码段等
S:Process Status 进程状态
%CPU:cpu使用率
%MEM 是进程使用物理内存占系统总内存的百分比
TIME+:进程开始运行时使用cpu的总时间
COMMAND:进程运行的命令
常用的命令:
top -b -n 60 -d 60 > /home/cpu.txt
该命令每隔60秒会将服务器运行状态保存到一个文本文件,共运行60次,其实就是将服务器1个小时的运行状态保存起来。
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明:
d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p:通过指定监控进程ID来仅仅监控某个进程的状态。
q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S:指定累计模式。
s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i:使top不显示任何闲置或者僵死进程。
c:显示整个命令行而不只是显示命令名
常用命令说明:
Ctrl+L:擦除并且重写屏幕
K:终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
i:忽略闲置和僵死进程。这是一个开关式命令。
q:退出程序
r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S:切换到累计模式。
s:改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F:从当前显示中添加或者删除项目。
o或者O:改变显示项目的顺序
l:切换显示平均负载和启动时间信息。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据驻留内存大小进行排序。
P:根据CPU使用百分比大小进行排序。
T:根据时间/累计时间进行排序。
W:将当前设置写入~/.toprc文件中。
查看多核CPU命令
mpstat -P ALL 和 sar -P ALL
说明:sar -P ALL > aaa.txt 重定向输出内容到文件 aaa.txt
top命令经常用来监控Linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。