查询系统负载信息 Linux 命令详解.docx
《查询系统负载信息 Linux 命令详解.docx》由会员分享,可在线阅读,更多相关《查询系统负载信息 Linux 命令详解.docx(14页珍藏版)》请在冰豆网上搜索。
查询系统负载信息Linux命令详解
linuxuptime命令主要用于获取主机运行时间和查询linux系统负载等信息。
uptime命令过去只显示系统运行多久。
现在,可以显示系统已经运行了多长时间,信息显示依次为:
现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
uptime命令用法十分简单:
直接输入
#uptime
即可。
输入样例:
18:
02:
41up41days,23:
42,1user,loadaverage:
0.00,0.00,0.00
1可以被认为是最优的负载值。
负载是会随着系统不同改变得。
单CPU系统1-3和SMP系统6-10都是可能接受的。
另外还有一个参数-V,是用来查询版本的。
(注意是大写的字母v)
[linux@localhost]$uptime-V
procpsversion3.2.7
[linux@localhost]$uptime
显示结果为:
10:
19:
04up257days,18:
56,12users,loadaverage:
2.10,2.10,2.09
显示内容说明:
10:
19:
04//系统当前时间
up257days,18:
56//主机已运行时间,时间越大,说明你的机器越稳定。
12user//用户连接数,是总连接数而不是用户数
loadaverage//系统平均负载,统计最近1,5,15分钟的系统平均负载
那么什么是系统平均负载呢?
系统平均负载是指在特定时间间隔内运行队列中的平均进程数。
如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。
如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
如果你的linux主机是1个双核CPU的话,当LoadAverage为6的时候说明机器已经被充分使用了。
查看cpu负载
怎样才能快速的定位到并发高是由于磁盘io开销大呢?
可以通过三种方式:
第一种:
用top命令中的cpu信息观察
Top可以看到的cpu信息有:
Tasks:
29total,1running,28sleeping,0stopped,0zombie
Cpu(s):
0.3%us,1.0%sy,0.0%ni,98.7%id,0.0%wa,0.0%hi,0.0%si
具体的解释如下:
Tasks:
29total进程总数
1running正在运行的进程数
28sleeping睡眠的进程数
0stopped停止的进程数
0zombie僵尸进程数
Cpu(s):
0.3%us用户空间占用CPU百分比
1.0%sy内核空间占用CPU百分比
0.0%ni用户进程空间内改变过优先级的进程占用CPU百分比
98.7%id空闲CPU百分比
0.0%wa等待输入输出的CPU时间百分比
0.0%hi
0.0%si
0.0%wa的百分比可以大致的体现出当前的磁盘io请求是否频繁。
如果wa的数量比较大,说明等待输入输出的的io比较多。
第二种:
用vmstat
vmstat命令报告关于线程、虚拟内存、磁盘、陷阱和CPU活动的统计信息。
由vmstat命令生成的报告可以用于平衡系统负载活动。
系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。
输入命令:
vmstat25
如果发现等待的进程和处在非中断睡眠状态的进程数非常多,并且发送到块设备的块数和从块设备接收到的块数非常大,那就说明磁盘io比较多。
vmstat参数解释:
Procs
r:
等待运行的进程数b:
处在非中断睡眠状态的进程数w:
被交换出去的可运行的进程数。
此数由linux计算得出,但linux并不耗尽交换空间
Memory
swpd:
虚拟内存使用情况,单位:
KB
free:
空闲的内存,单位KB
buff:
被用来做为缓存的内存数,单位:
KB
Swap
si:
从磁盘交换到内存的交换页数量,单位:
KB/秒
so:
从内存交换到磁盘的交换页数量,单位:
KB/秒
IO
bi:
发送到块设备的块数,单位:
块/秒
bo:
从块设备接收到的块数,单位:
块/秒
System
in:
每秒的中断数,包括时钟中断
cs:
每秒的环境(上下文)切换次数
CPU
按CPU的总使用百分比来显示
us:
CPU使用时间
sy:
CPU系统使用时间
id:
闲置时间
准测
更多vmstat使用信息
第二种:
用iostat
安装:
Iostat是sysstat工具集的一个工具,需要安装。
Centos的安装方式是:
yuminstallsysstat
Ubuntu的安装方式是:
aptitudeinstallsysstat
使用:
iostat-dx显示磁盘扩展信息
root@fileapp:
~#iostat-dx
r/s和w/s分别是每秒的读操作和写操作,而rKB/s和wKB/s列以每秒千字节为单位显示了读和写的数据量
如果这两对数据值都很高的话说明磁盘io操作是很频繁。
Linux查看IO的工具主要有两个,iostat(集成于sysstat包中)和iotop。
前者经常用于查看分区的IO情况,后者常用来查看每个进程的IO占用。
[root@bogon~]#yuminstallsysstat
[root@bogon~]#iostat-x1#每隔一秒显示一次
avg-cpu:
%user%nice%system%iowait%steal%idle
0.000.000.000.000.00100.00
Device:
rrqm/swrqm/sr/sw/srsec/swsec/savgrq-szavgqu-szawaitsvctm%
sda0.000.000.000.000.000.000.000.000.000.00
sda10.000.000.000.000.000.000.000.000.000.00
sda20.000.000.000.000.000.000.000.000.000.00
dm-00.000.000.000.000.000.000.000.000.000.00
dm-10.000.000.000.000.000.000.000.000.000.00
hdc0.000.000.000.000.000.000.000.000.000.00
[root@bogon~]#yuminstalliotop
[root@bogon~]#iotop-o#仅显示占用IO的进程
TotalDISKread:
0.00B/s|TotalDISKwrite:
25.97K/s
TIDPRIOUSERDISKREADDISKWRITESWAPINIO>command
5be/3root0.00B/s0.00B/s0.00%0.88%[khelper]
534be/3root0.00B/s25.17K/s0.00%0.03%[kjournald]
187be/3root0.00B/s0.00B/s0.00%0.01%[cqueue/0]
2945be/4root0.00B/s0.00B/s0.00%0.00%automount--pid-fi~var/run/autofs.pid
2513be/3root0.00B/s0.00B/s0.00%0.00%auditd
2865be/4haldaemo0.00B/s0.00B/s0.00%0.00%hald-addon-keyboar~/dev/input/event0
18be/3root0.00B/s0.00B/s0.88%0.00%[kblockd/0]
2844be/4root0.00B/s0.00B/s0.00%0.00%hald-runner
2457be/4root0.00B/s0.00B/s0.00%0.00%dhclient-1-q-lf~ient-eth0.pideth0
508be/3root0.00B/s0.00B/s0.00%0.00%[ata/0]
2970be/4root0.00B/s0.00B/s0.00%0.00%sshd
iotop选项:
–versionshowprogram’sversionnumberandexit
-h,–helpshowthishelpmessageandexit
-o,–onlyonlyshowprocessesorthreadsactuallydoingI/O
-b,–batchnon-interactivemode
-nNUM,–iter=NUMnumberofiterationsbeforeending[infinite]
-dSEC,–delay=SECdelaybetweeniterations[1second]
-pPID,–pid=PIDprocesses/threadstomonitor[all]
-uUSER,–user=USERuserstomonitor[all]
-P,–processesonlyshowprocesses,notallthreads
-a,–accumulatedshowaccumulatedI/Oinsteadofbandwidth
-k,–kilobytesusekilobytesinsteadofahumanfriendlyunit
-t,–timeaddatimestamponeachline(implies–batch)
-q,–quietsuppresssomelinesofheader(implies–batch)
-p指定进程ID,显示该进程的IO情况
-u指定用户名,显示该用户所有的进程IO情况
CPU使用率
例如每1秒采集一次CPU使用率,共采集5次。
[root@li676-235~]#sar-u15
Linux3.18.5-x86_64-linode52(li676-235)07/20/2015_x86_64_(1CPU)
02:
41:
25PMCPU%user%nice%system%iowait%steal%idle
02:
41:
26PMall64.710.0018.630.000.9815.69
02:
41:
27PMall29.470.0022.1114.740.0033.68
02:
41:
28PMall67.330.0031.680.990.000.00
02:
41:
29PMall7.000.002.000.000.0091.00
02:
41:
30PMall69.000.0023.000.000.008.00
Average:
all47.790.0019.483.010.2029.52
和top一样,可以看到所有cpu的使用情况。
如果需要查看某颗cpu的使用可以用-P参数。
例如指定显示0号cpu的使用情况。
[root@li676-235~]#sar-P0-u15Linux3.18.5-x86_64-linode52(li676-235)07/20/2015_x86_64_(1CPU)02:
45:
14PMCPU%user%nice%system%iowait%steal%idle02:
45:
15PM044.000.0052.004.000.000.0002:
45:
16PM09.280.0026.8062.891.030.0002:
45:
17PM03.060.0014.2981.631.020.0002:
45:
18PM04.120.0022.6872.161.030.0002:
45:
19PM04.120.0022.6872.161.030.00Average:
013.090.0027.8158.280.820.00
进程队列长度和平均负载状态
例如每1秒采集一次,共采集5次。
[root@li676-235~]#sar-q15Linux3.18.5-x86_64-linode52(li676-235)07/20/2015_x86_64_(1CPU)02:
48:
47PMrunq-szplist-szldavg-1ldavg-5ldavg-1502:
48:
48PM11330.340.430.4102:
48:
49PM21320.340.430.4102:
48:
50PM11330.340.430.4102:
48:
51PM21340.310.420.4002:
48:
52PM11330.310.420.40Average:
11330.330.430.41
输出项:
runq-sz:
运行队列的长度(等待运行的进程数)
plist-sz:
进程列表中进程(processes)和线程(threads)的数量
ldavg-1:
最后1分钟的系统平均负载(Systemloadaverage)
ldavg-5:
过去5分钟的系统平均负载
ldavg-15:
过去15分钟的系统平均负载
进程创建的平均值和上下文切换的次数
例如每1秒收集一次,共收集5次。
[root@li676-235~]#sar-w15Linux3.18.5-x86_64-linode52(li676-235)07/20/2015_x86_64_(1CPU)02:
54:
03PMproc/scswch/s02:
54:
04PM1.01156.5702:
54:
05PM1.00132.0002:
54:
06PM2.00201.0002:
54:
07PM2.02126.2602:
54:
08PM2.00114.00Average:
1.61145.98
sar命令也可以获取过去指定日期的性能参数。
[root@li676-235~]#sar-u-f/var/log/sa/sa20Linux3.18.5-x86_64-linode52(li676-235)07/20/2015_x86_64_(1CPU)01:
10:
01PMCPU%user%nice%system%iowait%steal%idle01:
20:
02PMall25.780.008.883.590.1561.6001:
30:
01PMall26.060.009.963.330.1060.5501:
40:
01PMall25.730.009.173.700.0961.3201:
50:
01PMall25.700.009.502.790.1261.8902:
00:
01PMall26.700.009.732.200.1061.2802:
10:
01PMall26.160.009.564.340.1159.8202:
20:
01PMall25.490.009.612.760.0762.0702:
30:
01PMall26.470.009.940.640.3062.6502:
40:
02PMall27.320.0010.373.860.1558.3002:
50:
02PMall26.980.0010.384.560.1357.95Average:
all26.240.009.713.180.1360.74
4、mpstat
这个命令也在sysstat包中,语法类似。
例如每1秒收集一次,共5次。
[root@li676-235~]#mpstat15Linux3.18.5-x86_64-linode52(li676-235)07/20/2015_x86_64_(1CPU)03:
01:
18PMCPU%usr%nice%sys%iowait%irq%soft%steal%guest%idle03:
01:
19PMall52.530.0023.230.000.000.000.000.0024.2403:
01:
20PMall21.000.004.000.000.000.000.000.0075.0003:
01:
21PMall53.000.0018.000.000.000.000.000.0029.0003:
01:
22PMall26.000.003.000.000.000.000.000.0071.0003:
01:
23PMall46.000.0018.000.000.000.000.000.0036.00Average:
all39.680.0013.230.000.000.000.000.0047.09
cpu使用情况比sar更加详细些,也可以用-P指定某颗cpu。
6、dstat
每秒cpu使用率情况获取
[root@li676-235~]#dstat-c----total-cpu-usage----
usrsysidlwaihiqsiq
5491100
271162000
521137000
261063001
501337001
21672000
最占cpu的进程获取
[root@li676-235~]#dstat--top-cpu-most-expensive-
cpuprocess
mysqld1.5
php-fpm:
pool24
mysqld59
#vmstat
procs-----------memory-------------swap-------io------system-------cpu------
rbswpdfreebuffcachesisobiboincsussyidwast
143297962604045283379824115016036172108530
procs
r列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
cpu表示cpu的使用状态
us列显示了用户方式下所花费CPU时间的百分比。
us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
sy列显示了内核进程所花费的cpu时间的百分比。
这里us+sy的参考值为80%,如果us+sy大于80%说明可能存在CPU不足。
wa列显示了IO等待所占用的CPU时间的百分比。
这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
id列显示了cpu处在空闲状态的时间百分比
system显示采集间隔内发生的中断数
in列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数,如当cs比磁盘I/O和网络信息包速率高得多,都应进行进一步调查。
memory
swpd切换到内存交换区的内存数量(k表示)。
如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
free当前的空闲页面列表中内存数量(k表示)
buff作为buffercache的内存数量,一般对块设备的读写才需要缓冲。
cache:
作为pagecache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
swap
si由内存进入内存交换区数量。
so由内存交换区进入内存数量。
IO
bi从块设备读入数据的总量(读磁盘)(每秒kb)。
bo块设备写入数据的总量(写磁盘)(每秒kb)
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
第二种:
用iostat
安装:
Iostat是sysstat工具集的一个工具,需要安装。
Centos的安装方式是:
yuminstallsysstat
Ubuntu的安装方式是:
aptitudeinstallsysstat
使用:
iostat-dx显示磁盘扩展信息
root@fileapp:
~#iostat-dx
r/s和w/s分别是每秒的读操作和写操作,而rKB/s和wKB/s列以每秒千字节为单位显示了读和写的数据量
如果这两对数据值都很高的话说明磁盘io操作是很频繁。
linux下查看系统资源和负载,以及性能监控的查看
1,查看磁盘
df-h
2,查看内存大小
free
free[-m|g]按MB,GB显示内存
vmstat
3,查看cpu
cat/proc/cpuinfo
只看cpu数量grep"modelname"/proc/cpuinfo|wc-l
4,查看系统内存
cat/proc/meminfo
5,查看每个进程的情况
cat/proc/5346/status5347是pid
6,查看负载
w
uptime
7,查看系统整体状态
top
最后一些输出信息的解释:
loadaverage:
0.09,0.05,0.01
三个数分别代表不同时间段的系统平均负载(一分钟、五分钟、以及十五分钟),它们的数字当然是越小越好。
“有多少核心即为