磁盘速度慢导致 CPU 负载过高?

磁盘速度慢导致 CPU 负载过高?

我们正在一台 3 年前的服务器上运行在线应用程序(四核 Xeon、4GB RAM、SAN 磁盘)。除了 Web 应用程序外,该服务器还托管 SQL、FTP、SFTP、SMTP 和 POP 服务。

多年来,客户数量大幅增加,服务器已达到极限,通常会在很长的时间内达到 CPU 100%。

当我监控服务器性能时,我注意到任务管理器经常报告 100% CPU(性能选项卡)或接近这个数字,但是系统空闲进程(流程标签)报告类似 30% 的内容。

问题
尽管系统空闲进程占比 > 0%,但总 CPU 工作负载是否能达到 100% ?我的观察正确吗?


更新

TomTom 很友好地回答了我的问题并提供了以下信息:

  • 等待磁盘 IO 的任务将会从 CPU 中移除,直到调度程序做出答复为止。
  • 是的,有可能有 100% 的工作量,而其中 30% 的时间处于闲置状态。因为这并不意味着这 30% 的时间被浪费了。
  • 有可能的情况是,CPU 100% 繁忙,但由于所有原因而处于省电模式waiting
  • 举个例子waiting:因为它可能正在等待磁盘 IO。

重新表述问题:在下图中,显示 CPU 使用率 = 100% 为什么不显示总 CPU 使用率100 - 58 = 42

在此处输入图片描述

答案1

让我们从你的猜测开始 - 这是错误的。等待磁盘 io 的任务将被从 CPU 中移除,直到调度程序对此做出答复。

其次,“系统空闲进程”并不是“无事可做”。查看维基百科:

在 Windows NT 操作系统中,系统空闲进程包含一个或多个内核线程,当 CPU 上没有其他可运行线程时,这些线程会运行。例如,系统中可能没有可运行线程,或者所有可运行线程都已在另一个 CPU 上运行。在多处理器系统中,每个 CPU 都有一个空闲线程。

那里有更多信息。一般来说 - 这不是“CPU 什么都不做”而是“CPU 忙于处理空闲进程中的事情”。

所以,是的,有可能有 100% 的工作负载,而其中 30% 的时间处于空闲状态。因为这并不意味着这 30% 的时间被浪费了。话虽如此,请查看省电设置。

有可能的情况是,CPU 100% 繁忙,但由于所有等待而处于省电模式。更改省电模式将显示可用的 CPU 时间。3 年前还很年轻,可以节省不少电能。

请问,什么是“当时的典型”?8 核、64GB 内存,带 24 盘 SAS 子系统?那是我 4-5 年前买的服务器 ;)

相关内容