首页 > 编程知识 正文

linux系统负载如何计算,查看系统负载的命令

时间:2023-05-03 22:27:34 阅读:135744 作者:2380

一.引言vmstat命令:用于获取有关流程、虚构、页面交换空间和CPU活动的信息。 这些信息反映了系统的负荷状况

二.使用vmstat参数的用法

vmstat [-a ] [-n ] [-sunit ] [ delay [ count ] ] vmstat [-s ] [-n ] [-sunit ] vmstat [-m ] [-n ] [ delay [ count ] - m :显示slabinfo-n :首先只显示每个字段名一次。 -s :显示内存相关的统计信息和各种系统活动的数量。 delay :刷新间隔。 如果未指定,则只显示一个结果。 count :刷新次数。 如果没有指定刷新次数,而是指定了刷新间隔,则刷新次数将是无限的。 -d :显示磁盘相关的统计信息。 -p :显示指定的磁盘分区统计信息-S :以指定的单位显示。 参数有k、k、m和m,分别表示1000、1024、1000000和1048576字节(字节)。 默认单位显示k(1024bytes(-v:vmstat版本信息)。 三. vmstat信息显示的一般命令如下。

vmstat 1 10 1表示每秒收集服务器状态,10表示只收集10次。

$ vmstat 110 procs-------- memory------ swap---- swap---- io---- io 0 1 0 0 1597548 64376 1599228 0 0 0 0 530 470 24 4 71 0 0 1 0 0 1595148 64384 1599264 0 0 32 60 5 27 541 28 2 70 0 0 0 0 0 1593576 64384 1599272 0 0 0 0 407 252 21 3 77 0 0 0 0 0 1578476 64384 1606308 0 0 0 0 501 501 3 3 94 0 0 0 0 0 1580360 64384 1 604112 0 0 0 0 649 564 8 3 89 0 0 0 0 0 1583168 643 84 1598088000282 232 1847900 1570280 64380 161136060 665 774 2527300000155581264388161490800530386328600100155736464381615070

r :运行队列中的进程数。 该值还可以确定是否需要增加CPU。 (长期大于1 ),如果此值超过CPU数量,则会出现CPU瓶颈。 这也与top的负荷有关,一般负荷超过3时变高,超过5时变高,超过10时变得异常,服务器的状态变得危险。 (b ) I )等待o的进程数量和被阻止的进程。Procs(进程):

swpd :使用虚拟内存大小。 如果大于0,则表示机器物理内存不足。 如果不是导致程序内存泄漏的原因,则需要升级内存或将消耗内存的任务转移到其他机器。

注:如果swpd的值不为0,并且SI和SO的值长期为0,则此情况不会影响系统性能。

free :可用物理内存大小

buff用作缓冲区的内存大小、inux/Unix系统用作存储的缓存,如目录中包含的内容和权限

cache :用作缓存的内存大小(这里是Linux/Unix的聪明之处。 带来一部分空闲的物理内存来缓存文件和目录是为了提高程序的执行性能。 当程序使用内存时,将立即使用buffer/cached。 )

注意:如果cache的值较大,则cache中的文件数会较多。 如果所有经常访问的文件都位于cache中,则磁盘读取IO bi非常小。

Memory(内存):

si :每

秒从交换区写到内存的大小,由磁盘调入内存,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。

so:每秒写入交换区的内存大小,由内存调入磁盘,如果这个值大于0,同上。

注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO:(现在的Linux版本块的大小为1kb)

bi:每秒读取的块数,块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。

bo:每秒写入的块数,块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

系统:

in:每秒中断数,包括时钟中断。

cs:每秒上下文切换数。每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示):

us:用户进程执行时间百分比(user time)

注意: us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

sy:内核系统进程执行时间百分比(system time), 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁

注意:sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

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

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

id:空闲时间百分比,空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率

wt:等待IO CPU时间。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。