1、cpu与load
1.1%cpu
%cpu是根据cpu每个核的利用率之和计算出来;
if (prev_hist_count) do { if (prev_hist[i].pid == pid) { cur->pcpu = cur->ticks - prev_hist[i].ticks; total_pcpu += cur->pcpu; break; } i = (i+1) % prev_hist_count; } while (i != last_i); 很明显total_pcpu就是累加了每个线程对每个核的使用率,所以%CPU的最大值就是核数*100%。 1.2cpu利用率 是从系统的/proc/stat这里读取的,那么CPU利用率可以使用以下方法,先取两个采样点,然后计算其差值:cpu usage=(idle2-idle1)/(cpu2-cpu1)*100 cpu usage=[(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100;
1.3 cpu与load关系
load是从/proc/loadavg中读取的,Linux的系统负载指运行队列的平均长度,也就是等待CPU的平均进程数。
load与执行的任务有关;
2、影响linux系统因素
1)cpu
影响性能因素 | 评判标准 | ||
好 | 坏 | 糟糕 | |
CPU | user% + sys%< 70% | user% + sys%= 85% | user% + sys% >=90% |
内存 | Swap In(si)=0 Swap Out(so)=0 | Per CPU with 10 page/s | More Swap In & Swap Out |
磁盘 | iowait % < 20% | iowait % =35% | iowait % >= 50% |
系统内存充足:应用程序可用内存/系统物理内存>70%时;
系统内存满足要求:20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。
系统内存不足:应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存;3)disk io
正常情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关,CPU、内存的负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加。
await值的大小一般取决与svctm的值和I/O队列长度以及I/O请求模式,如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。
%util项的值也是衡量磁盘I/O的一个重要指标,如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。
如果Blk_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序,如果Blk_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。
4)net