术语“CPU限制”和“I/O限制”是什么意思?
当前回答
CPU限制是指进程的速度受CPU速度的限制。对一小组数字执行计算的任务,例如乘小矩阵,可能会受到CPU的限制。
I/O约束是指进程的速度受I/O子系统的速度限制。处理来自磁盘的数据的任务(例如,计算文件中的行数)可能受到I/O限制。
内存限制是指进程进程的速度受可用内存数量和内存访问速度的限制。处理大量内存内数据的任务,例如乘法大型矩阵,很可能是memory Bound。
缓存约束是指进程进程受可用缓存数量和速度限制的速率。如果一个任务处理的数据超过了缓存的容量,那么它就会被缓存绑定。
I/O绑定比内存绑定慢,缓存绑定比CPU绑定慢。
I/O受限的解决方案不一定是获得更多内存。在某些情况下,访问算法可以围绕I/O、内存或缓存限制进行设计。参见缓存无关算法。
其他回答
CPU限制是指进程的速度受CPU速度的限制。对一小组数字执行计算的任务,例如乘小矩阵,可能会受到CPU的限制。
I/O约束是指进程的速度受I/O子系统的速度限制。处理来自磁盘的数据的任务(例如,计算文件中的行数)可能受到I/O限制。
内存限制是指进程进程的速度受可用内存数量和内存访问速度的限制。处理大量内存内数据的任务,例如乘法大型矩阵,很可能是memory Bound。
缓存约束是指进程进程受可用缓存数量和速度限制的速率。如果一个任务处理的数据超过了缓存的容量,那么它就会被缓存绑定。
I/O绑定比内存绑定慢,缓存绑定比CPU绑定慢。
I/O受限的解决方案不一定是获得更多内存。在某些情况下,访问算法可以围绕I/O、内存或缓存限制进行设计。参见缓存无关算法。
这很直观:
如果一个程序在CPU更快的情况下运行得更快,那么它就受到了CPU的限制,也就是说,它的大部分时间都在简单地使用CPU(进行计算)。计算π的新数字的程序通常是cpu限制的,它只是处理数字。
如果一个程序能够在I/O子系统更快的情况下运行得更快,那么它就是I/O约束的。具体的I/O系统是不同的;我通常把它与磁盘联系在一起,当然,一般来说,网络或通信也很常见。在一个大文件中查找一些数据的程序可能会成为I/O限制,因为瓶颈是从磁盘读取数据(实际上,这个例子在今天可能有点过时,从ssd读取数百MB/s)。
I/O限制是指完成计算所需的时间主要由等待输入/输出操作完成的时间决定的一种情况。
这与受CPU限制的任务相反。当请求数据的速度比消耗数据的速度慢时,或者换句话说,花费在请求数据上的时间比处理数据的时间多时,就会出现这种情况。
IO绑定进程:花更多的时间做IO比计算,有很多 短CPU突发。 CPU绑定进程:花费更多的时间进行计算,很少有很长时间的CPU爆发
另一种表达相同想法的方式是:
如果加速CPU并没有加速你的程序,它可能是I/O受限的。 如果加速I/O(例如使用更快的磁盘)没有帮助,那么您的程序可能是CPU受限的。
(我使用“可能是”是因为你需要考虑其他资源。内存就是一个例子。)