首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么高IO速率的操作会使linux上的一切变慢?

为什么高IO速率的操作会使linux上的一切变慢?
EN

Stack Overflow用户
提问于 2010-11-27 16:06:37
回答 2查看 6.6K关注 0票数 18

这可能有点OT,但我想知道为什么拥有一个大量使用IO的进程(例如,从一个位置到同一磁盘上的另一个位置的cp大文件)会减慢一切,即使是主要受CPU限制的进程。我注意到我在两个操作系统上都大量使用(mac OS x和linux)。

特别是,我想知道为什么多核在这里没有真正的帮助:这是商用硬件(磁盘控制器等)的硬件限制,还是操作系统的限制,或者在分配正确的资源(调度)方面存在固有的困难?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-28 05:40:52

因为,复制大文件(大于可用缓冲区缓存)通常涉及将其放入缓冲区缓存,这通常会导致最近较少使用的页面被抛出,然后必须将其带回。

其他进程只是偶尔执行少量的IO (比如统计一个目录),然后它们的缓存都会被清除,并且必须进行物理读取才能将这些页面带回来。

希望这可以通过复制命令来修复,复制命令可以检测到这种情况,并相应地建议内核(例如,使用posix_fadvise),以便不需要随后读取的文件的大型一次性批量传输不会完全丢弃缓冲区缓存中的所有干净页面,这通常会发生。

票数 2
EN

Stack Overflow用户

发布于 2010-11-27 17:41:53

高IO操作率通常意味着必须由CPU处理的高中断率,这会占用CPU时间。

对于cp,它还使用了大量的可用内存带宽,因为每个数据块都要复制到用户空间或从用户空间复制。这也将倾向于从CPU缓存和TLB中弹出其他进程所需的数据,这将在其他进程接受缓存未命中时减慢它们的速度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4290679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档