1. top
以进程为单位动态显示各进程的CPU,memory, 调试等信息
top - 16:31:25 up 21 days, 22:18, 19 users, load average: 1.44, 1.50, 1.48 //当前时间,已运行时间,已登录用户数,1/5/15分钟的平均负载情况
Tasks: 313 total, 3 running, 310 sleeping, 0 stopped, 0 zombie // 进程状况
%Cpu0 : 4.1 us, 7.1 sy, 0.0 ni, 86.4 id, 2.4 wa, 0.0 hi, 0.0 si, 0.0 st // 按数字键1可显示各CPU或汇总CPU的信息 us 用户空间占用CPU百分比
%Cpu1 : 5.6 us, 8.3 sy, 0.3 ni, 84.1 id, 1.7 wa, 0.0 hi, 0.0 si, 0.0 st // sy kernel space ni:改变过进程优先级的 id: idel
%Cpu2 : 4.1 us, 9.8 sy, 0.0 ni, 85.4 id, 0.7 wa, 0.0 hi, 0.0 si, 0.0 st // wa: wait hi: hardware interrupts si: software interrupts
%Cpu3 : 4.4 us, 8.4 sy, 0.0 ni, 86.8 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st // st: steal time hypervisor 服务另一虚拟处理器时,虚拟CPU等待实际CPU的时间百分比
KiB Mem: 16355700 total, 16179524 used, 176176 free, 12728 buffers // used即系统内核控制的内存数,不是真正正在使用的,可被重复利用的也在这类中 , free: 未被纳入控制的内在数
KiB Swap: 16697340 total, 5060472 used, 11636868 free. 6966508 cached Mem // swap 的used如果不断地在变化,说明内核在不断进行交换,真正的内存应该不够用了
/// 习惯计算可用内存数方法: mem.free + mem. buffers + swap.cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND //到PR 优先级,NI nice值, VIRT=swap+res, RES=code+data res所占空间
4634 qi+ 20 0 8392040 6.087g 6.023g S 26.6 39.0 287:53.93 vmware-vmx
3510 hadoop 20 0 4720296 1.082g 5124 S 0.0 6.9 180:22.58 java
18682 hadoop 20 0 4644564 934588 5372 S 0.7 5.7 7:21.73 java
3248 qi+ 20 0 4582660 910980 52280 S 8.0 5.6 1475:54 firefox
几个常用快捷键:
多核CPU监控 : 按数字键1
打开/关闭行加亮效果: b/y
打开/关闭列序列的加亮效果:x, 默认是按%CPU排序的,按shift+> or shift+< 可改变排序列
进入编辑视图: f // 可修改显示的列字段
对top的补充:top只能以进程为单位进行显示和监控
java线程数: ps -eLf | grep java ("bin/java") | wc -l // 笔者电脑上显示2406
监控网络客户连接数: netstat -n | grep tcp | grep 侦听的端口 | wc -l
同样,ls /proc/PID/task | wc -l 也可显示该进程下的所有线程数
pmap PID 可输出进程的内存状态,分析线程堆栈
2. vmstat
获取有关进程、虚拟内存、页面交换空间及CPU活动的信息,反映了系统的负载情况。
vmstat -a -f -m -n -s [delay count] -d -p -S -V
vmstat 2 50 // 每2秒刷一次,刷50次
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
2 0 5422396 573384 1956680 13338408 32 0 32 36 3302 16148 5 13 81 1 0
1 0 5422320 573268 1956792 13338452 16 0 16 70 3452 15831 6 20 74 1 0
1 0 5422256 572120 1956948 13338444 94 0 94 2 3650 21972 6 35 58 1 0
0 0 5422176 572516 1957076 13338504 0 0 0 722 3541 15418 8 22 68 2 0
0 0 5422116 572268 1957100 13338592 16 0 16 10 3281 14824 4 6 90 1 0
procs: r 为等待运行的任务数, b 等待队列中的内核线程数目(waut cpu, io, etc)
memory: swpd, free, inact:非活跃内存大小,即被标明可回收的
swap: si, swap->mem so mem->swap kbit/s pi/po,page-in,out,
I/O: bi 每秒读取的块数 bo每秒写入的块数 1024 bytes/block
system: in 中断数每秒 cs 上下文切换数
cpu: 同top
经验判定:4 core CPU
a. r 经常大于4,id 经常小于40, 则说明CPU负荷较重
b. pi/po 长期不等于0,表示内存不足,一直在交换
c. disk 经常不等于0,且了b中队列大于3,表示IO性能不佳
d. r中运行的进程ID是连续的,且大于在系统中的CPU个数,表示系统运行比较慢,很多进程正在等待CPU
e. r 大于4倍的CPU数,刚系统面临CPU资源短缺的问题或者CPU速率过低,很多进程都在等CPU,造成运行过慢
f. 空闲时间id持续为0,且cpu sy 多倍于cpu us,刚系统面临cpu资源短缺问题。
针对这些问题,通常优先调整应用程序更有效地使用CPU,同时借助工具ps aux , top . prstat 等进一步综合考虑。
3. iostat
常用的一合法性参数和用法如下
iostat -d -k 1 10 //每秒一次刷10次,查看TPS(每秒的传输次数)和吞吐量,通常会根据显示的结果取tpc平均值
iostat -d -x -k 1 10 //查看设备使用率(%util)和响应时间(await)
iostat -c 1 10 // 查看CPU信息
4. nmon工具及报表生成工具
默认已在ubuntu中有源,安装即可用。
输入nmon即可启动,界面上输入不同快捷键可显示对应的信息。
- q : 停止并退出Nmon
- h : 查看帮助信息
- c : 查看 CPU 统计信息
- m : 查看内存统计信息
- d : 查看磁盘统计信息
- k : 查看内核统计信息
- n : 查看网络统计信息
- N : 查看 NFS 统计信息
- j : 查看文件系统统计信息
- t : 查看 Top 进程统计信息
- V : 查看虚拟内存统计信息
- v : 详细输出模式
- f: 输出文件
- -T: 输出最耗资源的进程
- -s: 收集数据的时间间隔
- -c: 收集次数
e.g.nmon -f -s 5 -c 20 --->使用nmon输出监控数据:使用nmon监控资源100s,每5s捕获一次数据(5*20=100s)
也可启动cron任务来定时执行。nmon_analyser:
http://blog.csdn.net/a7442358/article/details/50186283
https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power+Systems/page/nmon_analyser
https://www.ibm.com/developerworks/aix/library/au-nmon_analyser/