vmstat、top
vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。
vmstat 最常用的有两个数字参数,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如果不写就是一直采样下去。
下面是使用 make -j10 编译时输出的报告:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 4944468 261552 2525348 0 0 0 2 1 5 0 0 99 0 0 0 0 0 4944840 261552 2525348 0 0 0 48 359 176 1 0 99 0 0 0 0 0 4944584 261552 2525348 0 0 0 0 60 38 0 0 100 0 0 10 0 0 4885292 261552 2525360 0 0 0 0 7369 582 59 30 11 0 0 10 0 0 4868388 261552 2525424 0 0 0 0 8101 485 69 30 0 0 0
字段说明详见 man vmstat ,如下:
Procs(进程):
r: 运行队列中进程数量
b: 等待IO的进程数量,即阻塞的进程
Memory(内存):
swpd: 虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap:
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数
bo: 每秒写入的块数
系统:
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
CPU(以百分比表示):
us: 用户进程执行时间(user time)
sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间)
wa: 等待IO时间
top:
可以动态观察系统进程状况,方便系统管理员实时了解系统资源现状。
常用热键 | 用途 |
---|---|
t | 显示摘要信息开关. |
m | 显示内存信息开关. |
A | 分类显示系统不同资源的使用大户。有助于快速识别系统中资源消耗多的任务。 |
f | 添加删除所要显示列. |
o | 调整所要显示列的顺序. |
r | 调整一个正在运行的进程Nice值. |
k | 结束一个正在运行的进程. |
z | 彩色/黑白显示开关 |
1 | 单CPU显示开关 |
H | 显示线程 |
x | 高亮显示排序的列 |
y | 高亮显示正在运行的任务 |
z | 彩色、黑白显示 |
Z | 选择颜色模板(a或 w来调整,回车确定) |
N | 按PID排序 |
M | 按内存使用排序 |
P | 按CPU使用排序 |
<(>) | 以当前排序列的左边(或右边)列进行排序 |
R | 反向排序 |
PR (Priority):即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高。
NI (Nice value):Nice值,其表示进程可被执行的优先级的修正数值。如前面所说,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行。在UNIX系统或者LINUX系统中,使用从-20到+19的一个可变数值来表示这个nice值。
uptime 命令主要用于获取主机运行时间和查询linux系统负载等信息。
依次显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
08:00:30 up 5 days, 1:29, 2 users, load average: 0.08, 0.05, 0.08
free 命令
total used free shared buffers cached Mem: 8160468 2470356 5690112 0 240448 1866024 -/+ buffers/cache: 363884 7796584 Swap: 0 0 0
对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。从应用程序的角度来说,可用内存= free buffers+cached = total-used
pmap 命令可以显示进程的内存映射,使用这个命令可以找出造成内存瓶颈的原因。
while true; do pmap -d 3066 | tail -1; sleep 2; done
mapped: 11952K writeable/private: 248K shared: 0K mapped: 11952K writeable/private: 248K shared: 0K mapped: 11952K writeable/private: 248K shared: 0K