linux性能监控之---cpu篇
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•上下文切换(Context Switches):如果可运行的线程数大于CPU的数量,那么OS最终会强行换出正在执行的线程,从而使其他线程能够使用CPU,它会保存当前运行线程的执行上下文,并重建新调入线程的执行上下文。
•运行队列(Run Queue ):每个CPU 都维护一个线程的运行队列。如果CPU 子系统处于高负荷下,那就意味着内核调度将无法及时响应系统请求.导致结果,可运行状态进程拥塞在运行队列里.当运行队列越来越巨大,进程线程将花费更多的时间获取被执行.每个处理器应该运行队列不超过1-3个线程.例子,一个双核处理器应该运行队列不要超过6 个线程。
•load:就是指在CPU 队列中有多少数目的线程,以及其中当前有多少进程线程数目被执行的组合. 安全的load:一般是cpu的个数
•CPU 利用率(CPU Utilization):CPU 使用的百分比User TimeSystem TimeWait IOIdle。如果一个CPU 被充分使用,利用率分类之间均衡的比例应该是:65% -70% User Time;30% -35% System Time;0% -5% Idle Time
•中断(Interrupts) --Devices tell the kernel that they are done processing。例子,当一块网卡设备递送网络数据包或者一块硬件提供了一次IO 请求.
查看 CPU信息: cat/proc/cpuinfo
获取CPU个数:grep 'processor' /proc/cpuinfo | wc -l ( l 是 L)
•uptime
显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有
多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
相关命令:w 显示目前登入系统的用户:
vmstat(virtual memory*statistics) :*实时的性能监测工具
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干正经事的时间少了,CPU没有充分利用,是不可取的。us用户CPU时间
sy系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id空闲CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wt等待IO CPU时间
mpstat(Multiprocessor Statistics):不但能查看所有CPU的平均状况信息,而且能够查看特定CPU 的信息
sar:能够查看历史数据,也可查看实时
(2 3 表示查询3次,每隔2秒查询一次)
查看历史某一天的,这个很重要可以和以往进行对比
sar -u -f /var/log/sa/sa13