我尝试使用nice/ionice有一段时间了,结果发现bfq忽略了ionice参数。那么如何防止低优先级进程消耗所有 io 带宽而损害高优先级进程呢?
甚至在运行期间nice -n -20 high_priority_cmd;nice -n 19 low_priority_cmd;taskset -a -p 1 $(pgrep high_priority_cmd);taskset -a -p 2 $(pgrep low_priority_cmd);
也会导致严重的延迟/带宽问题。high_priority_cmd
low_priority_cmd
一些文档提到了每个进程的 ioprio,但没有提及如何更改它。
很可能是同样的问题,没有真正解决根本问题的答案。没有后台服务占用io、cpu、内存或swap。只有 vlc 和 ffmpeg,如果 ffmpeg 正在运行,那么 vlc 几乎没有响应,我必须以 0.5 倍速播放视频,以防止跳过、停顿和乱码异步(?)解码。然而,如果我在后台确实有大量的 cpu 和内存密集型服务,那么像md5sum
1 GB 文件这样简单的事情就会使系统停顿,甚至鼠标也不会在屏幕上移动。 Windows 操作系统从来没有遇到过这些糟糕的不称职的 IO 调度问题(尽管公平地说,我的 Windows 系统有 SSD 而不是 HDD,但这并不是不称职的借口)。