内核时间与用户时间

相信大家对于CPU的内核时间和用户时间会有一个简单的认识了。具体两者之间的差别,可以参考下图:

性能测试分析之-CPU时间分类与饱和度_性能分析

  1. 其中IO密集型的应用为什么说内核时间占用比较多呢?内核时间占用较多,一般是指密集的IO操作需要的系统调用频率也比较高,它是需要执行内核代码达到进行IO操作的目的。
  2. 而计算密集型的应用一般是把时间花在用户态代码上比较多。比如图像处理,大数据分析等。

所以说从以上系统的分类来说,在测试时,也可以验证,是不是系统类别和CPU的时间分类是一致的。如果趋势是不一致的,那么可能系统有异常,此时就需要查找更多日志信息,进行具体问题具体分析了,至于如何获取用户时间和内核时间,之前的视频有过介绍,这里就不赘述了。

CPU饱和度概念

CPU饱和度的概念是基于CPU使用率而言的。如果说一个CPU的使用率是100%的话,那么我们可以判断此CPU是饱和的。这个100%使用率会导致CPU饱和是指绝对值而言的。

还有一种饱和度的计算或者判断方式,是和云计算的环境相关联的。比如在云环境GCP,AWS等云资源上,管理员可以设定CPU的饱和值,比如70%,那么也就是说当CPU的使用达到70%的时候,CPU就已经是饱和的状态了,如果其他的线程想运行就需要等待,轮到它们执行的机会。在云环境目前大流行时期,要对CPU是否饱和状态有个清晰的认识。

但是CPU处于饱和态,是不是就一定需要去处理?答案是不一定,因为要监测观察这种高饱和度的是不是一直持续。况且Linux操作系统支持自愿内核抢占方法,在内核代码的逻辑停止点是可以做检查并执行抢占的。