运行超过 CPU 计数的 I/O 操作

问题描述 投票:0回答:1

假设我的服务器中有 2 个 CPU 并运行 10 个异步 I/O 操作(发送 HTTP 请求)。如果每个请求需要 1 秒,使用 Promise.all 我在大约 1 秒内得到所有结果。但我只有 2 个 CPU。所有这 10 个请求如何并行运行,我如何在 1 秒内得到结果。理论上,减少负载 2 次需要 5 秒。谁能给我解释一下。

concurrency io
1个回答
0
投票

在任何现代系统中,您的 CPU 不必参与 I/O 花费的大部分时间,它只需要定期参与以获取 I/O 子系统在缓冲区中接收到的数据或提供I/O 子系统缓冲要发送的数据。其余时间它可以做其他事情。如果涉及大量等待,即使是 I/O 子系统也可能不需要做那么多工作(因为网络操作和实际硬盘 I/O [对于 SSD 而言较少])。

© www.soinside.com 2019 - 2024. All rights reserved.