https://blog.csdn.net/joeyon1985/article/details/46682939
https://blog.csdn.net/u013144287/article/details/60964012
一、名词解释
CPU:工人,干活的,判断以及逻辑处理
内存:车间,工人干活的地方,车间中加工原料,当车间中没有原料了,在从仓库中取原料,对原料进行加工 内存本身有一定的存储空间,对内存中的数据进行处理的速度比从硬盘取数据再处理的速度快很多
硬盘:仓库,原料,数据存储
CPU对数据进行判断以及逻辑处理,本身不能存储数据,这时cpu从内存取数据进行逻辑计算,如果内存没有数据,才会从硬盘读数据到内存,再对数据进行处理
就像人吃饭一样,cpu就是人,内存就是碗,硬盘就是饭锅!
当cpu进程等待,会造成内存开销的增加,内存不够用的时候会用到虚拟内存,导致虚拟内存的增加,这时磁盘IO开销就会增加,系统态sy%提升,cpu开销增加;内存里数据不够用,才用磁盘中取数据。
1、系统CPU利用率高是什么原因?
系统中断和切换频繁很耗用CPU,共享资源竞争,大量io交互。CPU太差,主频太低,都是形容 CPU差。
苹果系统一直是单线程,因为这样减少了N多插队的请求导致的中断减速
2、用户CPU利用率高是什么原因?
答:用户态高原因 程序运算量大。
3、下面IO高的原因是?
读写量大;磁盘太慢,是因为转速慢,或者磁头少,或者RAID 型号不太OK(RAID 有 0 1 5 10 100 等等,有的可以做存储盘,有的可以做备份盘) ;
内存不足,操作系统就会用虚拟内存,肯定要用系统的交换区了,比如LINUX 的SWAP,就造成分页增多;
果你是老板,你如何检查打工仔的效率(性能) 呢?我们一般会通过以下这些信息来判断打工仔是否偷懒:
/1、 打工仔接受和完成多少任务并向老板汇报了(中断);
/2、打工仔和老板沟通、协商每项工作的工作进度(上下文切换);
/3、打工仔的工作列表是不是都有排满(可运行队列);
/4、打工仔工作效率如何,是不是在偷懒(CPU 利用率)
四、系统中的上下文切换 、运行队列等
上下文切换:每个CPU(或多核CPU的每个核心)在同一时间只能执行一个线程<不包括超线程CPU>,Linux采用抢占式调度。当线程执行到达一个时间片后,如果线程有IO阻塞或高优先级线程要执行的时候,Linux将执行线程切换,切换前先保存当前线程执行状态(现场),并恢复待执行线程状态,这个过程就叫做上下文切换。在Java应用中,文件IO、网络IO、锁等待、线程Sleep操作都会使该线程进行阻塞或睡眠状态,从而触发上下文切换。频繁的上下文切换会造成内核占用较高的CPU,使得响应速度下降。
运行队列:每个CPU核心都维护了一个可运行队列,例如一个4核CPU,启动8个线程,且8个线程都处于可运行状态,平均分配情况下,每个核心的可运行队列里就有2个线程。通常而言,系统的load是由CPU运行队列决定的,假设以上状态维持了1分钟,则1分钟内系统load就是2。运行队列值越大,代表线程要消耗越长的时间才能执行完成。通常建议每个核心运行队列为1-3个。
利用率:CPU利用率指在用户进程,内核,中断处理,IO等待以及空闲五个部分百分比,这五个值是用来分析CPU消耗情况的关键指标。Linux System and NetWork Performent Monitoring建议用户进程/内核消耗比例为 65%-70% / 30%-35% 左右。
应用类型
监测工具
本系列将按照CPU、内存、磁盘IO、网络这几个方面分别介绍。
Linux性能监测:CPU篇
底线
可运行队列,每个可运行队列不应该有超过1-3个线程(每处理器),比如:双处理器系统的可运行队列里不应该超过6个线程。
vmstat
举两个现实中的例子来实际分析一下:
1 2 3 4 5 6 7 8 | $ vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
free
in
id wa st
|
从上面的数据可以看出几点:
1 2 3 4 5 6 7 8 | $ vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
free
in
id wa st
|
从上面的数据可以看出几点:
参数介绍:
mpstat
1 2 3 4 5 6 7 8 9 | $ mpstat -P ALL 1 Linux 2.6.18-164.el5 (vpsee) 11 /13/2009
nice
/s
|
ps
1 2 3 4 5 6 7 |
while
do ps -eo pid,ni,pri,pcpu,psr, comm
grep 'firefox'
sleep
done
|
Linux性能监测:内存篇
物理内存和虚拟内存
1 2 | # /sbin/sysctl -n vm.dirty_background_ratio 10 |
vmstat
1 2 3 4 5 6 7 8 | # vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
free
in
id wa st
|
上面是一个频繁读写交换区的例子,可以观察到以下几点:
Linux性能监测:磁盘IO篇
内存页
1 2 3 4 |
/usr/bin/time - v date ... Page size (bytes): 4096 ... |
缺页中断
1 2 3 4 5 |
/usr/bin/time - v date ... Major (requiring I /O ) page faults: 1 Minor (reclaiming a frame) page faults: 260 ... |