根据负载估算所需的核心容量?

Estimate Core capacity required based on load?

我有四核 ubuntu 系统。说如果我在高峰时段的最后 15 分钟内看到平均负载为 60。平均负载也达到 150。 这种负载通常只发生在高峰时段。基本上我想知道是否有任何标准公式可以推导出理想情况下处理给定负载所需的内核数量?

Objective :- 如果将负载视为 60,那么这意味着在过去 15 分钟内的任何时间点平均有 60 个任务在排队?添加 cpu 可以帮助我服务器 请求更快或避免系统挂起或崩溃。

Linux 平均负载(由 uptimetop 打印) 包括 I/O 等待 中的任务,因此它与可能并行使用的 CPU 时间关系不大。

如果所有任务都纯粹 CPU 绑定,那么 150 持续平均负载意味着 150 个核心可能有用。 (但如果它不能持续,那么它可能只是一个临时的长队列,如果你有更好的 CPU 吞吐量就不会那么长。)

如果您遇到崩溃,那是一个无法用高负载解释的大问题。 (除非它来自内存不足杀手。)


使用 vmstatdstat 来查看在 user/kernel space 中花费了多少 CPU 时间可能会有所帮助。正在建立,或者如果它可能主要是 I/O.

或者您当然可能知道您的机器上有哪些任务 运行,以及一个任务是 I/O 绑定还是 CPU 绑定在一台空闲的机器上。 I/O 吞吐量通常与队列深度成正比,但在磁性硬盘驱动器上除外,因为这会将顺序 read/write 变成查找繁重的工作负载。