100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > linux查看虚拟内存和cpu占用率

linux查看虚拟内存和cpu占用率

时间:2021-08-22 01:44:05

相关推荐

linux查看虚拟内存和cpu占用率

topfreecat/proc/meminfocat/proc/cpuinfo[root@centerlisdbproc]#dmidecode|grep-A16"MemoryDevice"|more[objectObject]========================================================================================

==============================================================

一般我们查看系统性能主要是在以下几个方面

1.用户使用CPU情况 展现为 %user

2.系统使用CPU情况 展现为 %sys

3.wio或iowait展现为 %iowait 进程由于等待磁盘IO而使CPU处于空闲状态的比率

4.CPU的空闲率

5.CPU上下文的交换的比率,也有说明为CPU上下文的切换。即内存和寄存器中数据的切换

6.nice 这个还不是很明白是啥意思

7.real-time 还是未知

8.运行队列的长度

9.平均负载

常见用法:

top -d 3//每三秒刷新一次数据 默认是每5秒刷新一次数据

Ctrl+L//擦除并且重写屏幕。

概念详解:

load average:

可以理解为每秒钟CPU等待运行的进程个数.

在Linux系统中,sar -q、uptime、w、top等命令都会有系统平均负载load average的输出,那么什么是系统平均负载呢?

系统平均负载被定义为在特定时间间隔内运行队列中的平均任务数。如果一个进程满足以下条件则其就会位于运行队列中:

- 它没有在等待I/O操作的结果

- 它没有主动进入等待状态(也就是没有调用'wait')

- 没有被停止(例如:等待终止)二 常用命令

1.mpstat

2.iostat

3.vmstat

4.sar

三命令详解

1. mpstat -P ALL 5//需要注意的P和ALL一定要大写

17时22分24秒CPU%user%nice%sys%iowait%irq%soft%steal%idleintr/s17时22分29秒all0.300.000.100.670.020.070.0098.83821.4017时22分29秒01.000.000.601.000.200.600.0096.60560.0017时22分29秒10.000.000.000.000.000.000.00100.200.0017时22分29秒20.600.000.200.200.000.200.0099.00250.时22分29秒30.000.000.004.000.000.000.0096.0011.时22分29秒40.000.000.000.000.000.000.00100.200.0017时22分29秒50.800.000.000.000.000.000.0099.200.0017时22分29秒60.000.000.000.000.000.000.00100.000.0017时22分29秒70.000.000.000.000.000.000.00100.000.00

上面信息我们可以看出,有8个CPU。

%user :在internal时间段里,即为用户态的CPU时间,及登录用户所消耗的CPU时间比。

%sys:在internal时间段里,负进程消耗的CPU时间,占所有CPU的百分比

%nice :优先进程占用时间

%iowait:在internal时间段里,所有未等待磁盘IO操作进程占CPU的百分比

%irq: 这个还是未知

%soft : 在internal时间段里,软中断时间(%) softirq/total*100

%idle : 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间 (%)

intr/s: 在internal时间段里,每秒CPU接收的中断的次数

2.iostat 主要是为了查看磁盘IO

Linux2.6.16.46-0.12-smp(iread-85)03/29/avg-cpu:%user%nice%system%iowait%steal%idle9.470.001.591.270.0086.67Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtnsda15.46114.45401.2244378459155576936

参数详解:

avg-cpu中参数不做过多解释,详细可见其他命令,类似。

rrqm/s:每秒进行 merge 的读操作数目。即 delta(rmerge)/s

wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s

r/s:每秒完成的读 I/O 设备次数。即 delta(rio)/s

w/s:每秒完成的写 I/O 设备次数。即 delta(wio)/s

rsec/s:每秒读扇区数。即 delta(rsect)/s

wsec/s: 每秒写扇区数。即 delta(wsect)/s

rkB/s:每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)

wkB/s:每秒写K字节数。是 wsect/s 的一半。(需要计算)

avgrq-sz:平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)

avgqu-sz:平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。

await:平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)

svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)

%util:一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘

可能存在瓶颈。

idle小于70% IO压力就较大了,一般读取速度有较多的wait.

同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

#iostat-x1avg-cpu:%user%nice%sys%idle16.240.004.3179.44Device:rrqm/swrqm/sr/sw/srsec/swsec/srkB/swkB/savgrq-szavgqu-szawaitsvctm%util/dev/cciss/c0d00.0044.901.0227.558.16579.594.08289.8020.5722.3578.215.0014.29/dev/cciss/c0d0p10.0044.901.0227.558.16579.594.08289.8020.5722.3578.215.0014.29/dev/cciss/c0d0p20.000.000.000.000.000.000.000.000.000.000.000.000.00

上面的 iostat 输出表明秒有 28.57 次设备 I/O 操作: 总IO(io)/s = r/s(读) +w/s(写) = 1.02+27.55 = 28.57 (次/秒) 其中写操作占了主体 (w:r = 27:1)。

平均每次设备 I/O 操作只需要 5ms 就可以完成,但每个 I/O 请求却需要等上 78ms,为什么? 因为发出的 I/O 请求太多 (每秒钟约 29 个),假设这些请求是同时发出的,那么平均等待时间可以这样计算:

平均等待时间 = 单个 I/O 服务时间 * ( 1 + 2 + ... + 请求总数-1) / 请求总数

应用到上面的例子: 平均等待时间 = 5ms * (1+2+...+28)/29 = 70ms,和 iostat 给出的78ms 的平均等待时间很接近。这反过来表明 I/O 是同时发起的。

每秒发出的 I/O 请求很多 (约 29 个),平均队列却不长 (只有 2 个 左右),这表明这 29 个请求的到来并不均匀,大部分时间 I/O 是空闲的。

一秒中有 14.29% 的时间 I/O 队列中是有请求的,也就是说,85.71% 的时间里 I/O 系统无事可做,所有 29 个 I/O 请求都在142毫秒之内处理掉了。

delta(ruse+wuse)/delta(io) = await = 78.21 => delta(ruse+wuse)/s =78.21 * delta(io)/s = 78.21*28.57 = 2232.8,表明每秒内的I/O请求总共需要等待2232.8ms。所以平均队列长度应为 2232.8ms/1000ms = 2.23,而 iostat 给出的平均队列长度 (avgqu-sz) 却为 22.35,为什么?! 因为 iostat 中有 bug,avgqu-sz 值应为 2.23,而不是 22.35。

3.vmstat

procs-----------memory-------------swap-------io-----system-------cpu------rbswpdfreebuffcachesisobiboincsussyidwast11138571266752112164142×××34145014210288101013857126454011220814309760031042599659515281300013857126208411223214330080011276206877721817740001385712608081122321434036001297303686919010

参数详解:

r:当前系统中等待CPU的进程数(所有的CPU),若是改值连续都大于CPU的个数,表明有多数进程在等待CPU进行处理。若是该值大于CPU个数4倍的话,那么表明该服务器缺少CPU,或者CPU的处理速度过慢

in :cpu每秒产生的中断数

cs :每秒产生的上下文切换

us:用户占用的CPU时间百分比,同mpstat 的%user,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速(比如PHP/PERL)

sy:系统占用的CPU时间百分比,同mpstat 的%sys。内核进程消耗的CPU时间百分比(sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因)

id:CPU处于空闲状态时间百分比,如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us) 系统则面临着CPU资源的短缺.

wa:IO等待消耗的CPU时间百分比,wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

us+sy+id = 100%

常见用法:

vmstat -n 3 //每三秒获取一次数据

vmstat 4 5//间隔4次输出5次数据

概念详解:

上下文切换:CPU的切换就是将轮到该时间片的进程,将该进程中的数据从内容中刷到CPU的寄存器中,同时将原寄存器中的数据刷到内存中保存。

4.sar

sar [options] [-A] [-o file] t [n]

t 和 n两个参数指定了采样间隔和采样次数

- o 较日志记录到某个文件中

sar 5 6 //每5秒采用一次,共采样6次。

Linux2.6.18-53.el5PAE(localhost.localdomain)03/28/07:40:17PMCPU%user%nice%system%iowait%steal%idle07:40:19PMall12.440.006.971.740.0078.8607:40:21PMall26.750.0012.5016.000.0044.7507:40:23PMall16.960.007.980.000.0075.06

参数详解:

大部分的参数同mpstat top等命令。

%idle :等同于vmstat 中的id .就是空闲CPU百分比.如果该值高,表明CPU较空闲,但是处理速度还是很慢,则表明CPU在等待内存分配,应该加大服务器的内存。若是该值持续低于10%,表明CPU处理能力较弱,需要增加CPU。

%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。