小编ste*_*tef的帖子

防止大文件写入冻结系统

所以在我的 Linux 桌面上,我正在将一些大文件写入本地磁盘或 NFS 挂载。

要写入的数据缓存在某种系统缓冲区中。(我认为在我的系统上有 0.5-2GB 范围内的东西?)

如果缓冲区已满,所有文件访问都会阻塞,从而有效地冻结系统,直到写入完成。(我很确定甚至读取访问都被阻止了。)

我需要配置什么才能确保永远不会发生?

我想要的是:

如果一个进程不能足够快地将数据写入磁盘(或网络挂载等),该进程可能会阻塞,直到磁盘赶上,但其他进程仍然可以以合理的速率和延迟读取/写入数据而不会出现任何中断。

理想情况下,我可以设置 dsik 的总读/写速率中有多少可用于某种类型的程序(cp、git、mplayer、firefox 等),例如“所有 mplayer 进程一起获得至少10MB/s,无论系统的其余部分在做什么”。但是“所有 mplayer 实例一起至少获得总速率的 50%,无论如何”也很好。(即,我不太关心是否可以设置绝对费率或总费率的比例)。

更重要的是(因为最重要的读/写很小),我想要一个类似的延迟设置。同样,我保证单个进程的读/写不能阻塞系统的其余部分超过 10 毫秒(或其他),无论如何。理想情况下,我有一个保证,例如“无论系统在做什么,mplayer 都不必等待超过 10 毫秒的时间来处理读/写”。

无论有问题的进程是如何开始的(包括它在哪个用户下运行等),这都必须起作用,所以“在 ionice 中包装一个大 cp ”或任何几乎没有用的东西。如果我记得对它们进行离子化,它只会阻止某些任务可预测地冻结所有内容,但是 cron 作业、来自某个正在运行的守护程序的 exec 调用等呢?

(我想我可以用一个总是对它们进行离子化的 shell 脚本来包装最严重的罪犯,但即便如此,通过查看 ionice 的手册页,它给我的确切保证似乎有些模糊,所以我更喜欢更系统的和可维护的替代方案。)

linux

7
推荐指数
1
解决办法
7134
查看次数

标签 统计

linux ×1