我们正在一台 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 年前买的服务器 ;)