为什么在我使用过的每个 Linux 上,当一个程序确实受 I/O 限制时,它会使机器陷入困境?当我(不小心)尝试编译gcc
一个(有效!)50Mb C 文件时,就发生了这种情况。 GCC 的 I/O 非常密集,导致机器瘫痪。
另一个时刻是当apt-get
或类似的正在下载软件包时,有时我什至无法同时访问互联网,所有请求都会超时。
在 Windows 上,操作可能不那速度很快,但至少进程之间可以共享 I/O 时间。
这是因为设计决定吗?如果是的话,我可以改变这种行为吗?
(请不要将此视为对 Linux 的批评)
答案1
抱歉,这个问题太宽泛,无法解决。我们只能在这里真正处理具体问题。发生这种情况的原因有很多。通常,糟糕的性能只是被用户误解。
- 系统内存不足吗?
- 它的硬盘速度慢吗?
- 系统设置不是最佳的吗?
我并不是简单地驳回你的问题,而是在我的职业生涯中我做了相当多的基准测试,当你把一个所谓的性能问题分解为具体问题时,总会有一个原因,而且一旦你分解问题,它通常是显而易见的进入其离散的部分。
为了进一步调试这个“问题”,我们必须卷起袖子,首先开始深入研究:
- 确定系统的其余部分在此事件期间正在做什么。
- 有足够的 RAM 可用吗?
- 是否正在使用交换?
- 是否有其他进程竞争系统上的有限资源?
- 实际对“慢速”运行过程进行计时并比较运行时间的感知差异
- 我的流程试图使用哪些资源?硬盘?内存?多少?
这个列表可以一直列下去,但在确定问题的解决方法之前,您需要诊断这些类型的事情。