性能重要指标CPU

来源:互联网 发布:中关村发展集团 知乎 编辑:程序博客网 时间:2024/06/08 09:53

一、基本概念

1、上下文切换(context switches):如果可运行的线程数大于cpu的数量,那么os最终会强制换出正在执行的线程,从而使其他线程能够使用cpu,它会保存当前运行线程的执行上下文,并重新调入线程的执行上下文。

2、运行队列(run queue):每个cpu都维护一个线程的运行队列。如果cpu子系统处于高负荷下,那就意味着内核调度将无法及时响应系统请求,导致结果,可运行状态进程拥塞在运行队列里。当运行队列越来越巨大,进程线程将花费更多的时间获取被执行,每个处理器应该运行队列不超过1-3个线程,即一个双核处理器应该运行队列不要超过6个线程。如果一个进程满足以下条件则其就会位于运行队列中:

(1)、它没有在等待I/O操作的结果。

(2)、没有主动进入等待状态。

(3)、没有被停止。

3、load:就是指在cpu队列中有多少数目的线程,以及其中当前有多少进程线程数目被执行的组合。安全的load:一般是cpu的个数。

4、cpu利用率(cpu utilization):cpu使用的百分比User TimeSystem TimeWaitIOIdle。如果一个cpu被充分使用,利用率分类之间均衡的比例应该是:65%-70% User Timer;30%-35% System Time;0%-5% Idle Time

5、中断(interrupts):devices tell the kernel that they are done processing。例如:当一块网卡设备递送网络数据包或者一块硬盘提供了一次IO请求。

二、cpu检测

1、查看cpu信息:cat  /proc/cpuinfo

cpuinfo

2、获取cpu个数:grep ‘processor’  /proc/cpuinfo | wc -l

3、uptime 

显示系统已经运行了多次时间,它依次显示下列信息:现在时间、系统已经运行了多次时间、目前有多少登录用户、系统在过去的一分钟、5分钟和15分钟内的平均负载。

相关命令:W  显示目前登录系统的用户

4、vmstat(virtual memory*statistics):实时的性能监测工具

监测工具

其中2:每隔2秒采集一次

3: 总共采集3次。

r:表示运行队列(就是说多少个进程真的分配到cpu),当这个值超过了cpu数目,就会出现cpu瓶颈了。这个也和top的负载有关系,一般负载超过3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列,如果运行队列过大,表示你的cpu很繁忙,一般会造成cpu使用率很高。

b:表示阻塞的进程。

swpd:虚拟内存已使用的大小。

free:空闲的物理内存的大小。

buff:linux/unix系统是用来存储

cache:cache直接用来记忆我们打开的文件,给文件做缓冲

si:每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。

so:每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

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

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

in :每秒cpu的中断次数,包括时间中断。

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

us:用户cpu时间。

sy:系统cpu时间,如果太高,表示系统调用时间长,例如IO操作频繁。

id:空闲cpu时间,一般来说id+us+sy=100

wt:等待IO cpu时间。

5、top

6、mpstat(multiprocessor statistics):不但能查看所有cpu的平均状况信息,而且能够查看待定cpu信息。

mpstat  -P ALL 1

mpstat -P 1 1

7、sar:能够查看历史数据,也可查看实时

sar -q 查看load状况

sar -u 查看cpu使用率

查看历史某一天的,这个很重要可以和以往进行对比

sar -u -f  /var/log/sa/sa03

原创粉丝点击