美国服务器CPU利用率的介绍

关于美国服务器CPU利用率可以反映出整机的繁忙程度,从整体上了解CPU的使用情况,美联科技小编本文就带来关于CPU利用率的介绍。美国服务器CPU是给软件服务的,这是指用户进程等调度单元,也就可以知道进程的CPU利用率是多少,因此美国服务器CPU利用率可以分为3个粒度来考虑:

1.单个CPU核心的利用率

2.整机CPU利用率

3.进程的CPU利用率。

这3种CPU利用率有各自的算法,美国服务器操作系统是以时间片来为系统记时的,是最本质的时间单位,其它能看到的更人性化的时间格式都是通过它转换的。需要注意的是,时间片是个累积量,无论是针对CPU级别还是进程级别,从操作系统被加载到内存并掌权后,操作系统为它们记录各自的时间片累积数,这个量会一直累积增长,直到关机或进程结束生命周期。

美国服务器CPU利用率是指一段时间内CPU消耗的度量,强调的是经过一段时间内测出来的,就像速度一样,其概念是单位时间内移动的距离,这也解释了为什么top命令要有个时间间隔,默认是2秒。总的来说CPU利用率的实现原理是:在单位时间内连续两次采样CPU的时间片数,由于其是累积量,因此要取其差以获取增量,然后再经过后续处理得到不同级别的CPU利用率。

1、单个CPU核心的利用率

通过一定的时间间隔,周期地对某个CPU核心上的idle线程运行的时间片数,和该CPU运行的时间片数进行两次采样,分别将两次采样值各自取其差,然后进行环比,最后再将比值乘以100%,所得的百分比便是该CPU的空闲率。

服务器中有多个CPU,我们用其中的一个CPU-CPU1来举例说在时间A对CPU1的idle线程运行的时间片数和CPU1的总运行时间片数采样,采样值分别为 cpu1_ idle_ slices_A和cpul_ total sices A,然后在时间B同样对CPU1的idle线程运行的时间片数和CPU1的总运行时间片数采样,采样值分别是 cpu1_idle_ slices_B和cpul_total_ slices_B。那么在B-A这段时间里,CPU1的空闲率公式便为:

(cpu1_idle_slicesB-cpu1_idle_slices_A)/(cpu1_total_slices_Bcpu1_total_slices_)"100%

相应CPU1的利用率便为100减去上面公式的结果。如果CPU1很繁忙,idle线程一直未被调度运行,CPU1的空闲率便是0%,即利用率是100%。

2、整机CPU利用率

通过一定的时间间隔周期对所有美国服务器CPU上idle线程运行的时间片数和所有CPU运行的时间片数进行两次采样,分别将两次采样值各自取其差,然后进行环比,也就是用这段采样周期内所有CPU核心上idle线程运行的时间片数之和,比上这段采样周期内所有CPU运行的时间片数之和,最后再将比值乘以100%,所得的百分比便是所有idle线程在所有CPU上的利用率,也就是系统的整体空闲率。

假如在时间A对所有CPU上的idle线程运行的时间片数和所有CPU运行的时间片数采样,采样值分别是 cpuall_idle_ slices_A和 cpual_total_ slices_A,然后在时间B同样对所有CPU上的idle线程运行的时间片数和所有CPU运行的时间片数采样,采样值分别是 cpuall_idle_ slices_B和 cpuall_total slices_B,那么在B-A这段时间里,整机CPU空闲率公式便为:

(cpuall _idle_slices_b-cpuall idle_slices_A)/(cpuall_totalslices_b-cpualltotallslices_A)*100%同样,相应整机的CPU利用率便为100去上面公式的结果。

以上这两类CPU利用率主要是看CPU是否运行idle线程,属于CPU级别的。由于运行哪个任务是由操作系统的任务调度器决定的,也就是只有当操作系统发现没有任务可运行时才会去执行idle线程,因此只要idle在运行,就表示CPU有多余的空闲资源。

3、进程的CPU利用率

进程的美国服务器CPU利用率同样是需要两次采样才能得到,但却与前两种CPU利用率有很大不同,进程在任意时刻只会在一个CPU上运行,当美国服务器上有多个CPU时,保不准进程会在多个CPU之间来回转移,比如当前CPU负载很高,利用率已接近100%,当下一次该进程重新运行在CPU上时,调度器会根据实际CPU负载情况,将其换到另一个负载轻的CPU上执行。

尽管切换CPU这在一定程度上会影响性能,但由于进程之前所在的CPU的利用率已经是100%,换到空闲CPU上对进程来说,得到了更多的执行机会,可以更早的结束运行,因此利大于弊。

因此无法获知在两次采样期间,进程被换了多少个CPU运行,多个CPU是并行的,它们各自独立运行了一定的时间片数,虽然可以获取进程运行的时间片数,但没办法知道进程经过了哪些CPU,仅能知道最后一次是在哪个CPU上执行,所以不知道去获取哪些CPU在这段采样周期内运行的时间片数。

基于这个原因,进程CPU利用率的计算原理采用了“时间比”,也就是进程的执行时间比上次采样周期时间,所得的比值再乘以100%。但操作系统为用户进程记录的是进程的时间片数,因此要将时间片数转换为时间。转换的方法也很简单,将时间片数除以 syscon_SC_ CLK TCK换成以秒为单位的时间,然后再除以秒为单位的采样时间。

当然,如果是以秒这种粗粒度的时间去比较,必然会造成一定的误差,因此,常常换算为以毫秒为单位的时间比。原理是这样的,具体取决于实现,如果要以微秒为单位采样也是可以的。

关注美联科技,了解更多IDC资讯!