我正在尝试分析执行IO操作的程序(例如网络设备)。 以下是一些确定的事实:
1)我的工作负载生成器使请求饱和。
2)我的IO设备没有得到充分利用(约70%)
3)top显示我的CPU核心空闲时间为30%。
我不明白的是,由于工作负载生成器的请求已经饱和,如果有可用的CPU资源和设备资源,是不是应该充分利用?
我正在处理的源代码非常大,因此需要分析热路径。 目前,我所能想到的可能原因是:
A)热门路径中可能有一些“等待”例程。
因为CPU空闲时间约为30%,所以热路径并不总是在CPU内核上执行。
注意:根据每个CPU核心的观察结果,核心没有瓶颈,因此问题不在于负载平衡。所有核心都处于空闲状态,占30%。
我希望你们中的一些人可能有类似的经历,可以给我一些暗示来构建我的瓶颈分析假设。