Ionice 是一个标准的 Linux 命令,允许设置进程的 io 优先级:
http://linux.die.net/man/1/ionice
子进程是否从其父进程继承 ionice 优先级?如何检查正在运行的进程的 io 优先级?
答案1
是的。我测试过了。IO 优先级就像 CPU 优先级一样是继承的。这可能就是你想要的。如果不是,你可以用 ionice 命令明确指定子进程的 IO 优先级。
答案2
从手册页(man ionice
)中:
# ionice -p 89 91
Prints the class and priority of the processes with PID 89 and 91.
答案3
任何分叉的进程都会继承其父进程的 io 类和优先级,但要记住的一个重要事实是,如果你改变了正在运行的进程的 io 类和/或优先级它不会改变该进程的任何当前子进程的 io 类/优先级也就是说,一旦您调整了正在运行的进程的类和/或优先级,任何今后分叉的子进程都将继承新的 io 类和优先级。
答案4
是的,这就是我测试的方法
创建两个文件foo.sh
# ==> foo.sh <==
echo $$
ionice
和nicechange.sh
# ==> nicechange.sh <==
echo $$
echo -n Before change:
ionice
echo Change to best-effort
ionice -c best-effort -p $$
echo After changed
ionice
echo Subprocess
x=$(bash foo.sh)
echo $x
然后运行它:
$ bash nicechange.sh
2549
Before change:idle
Change to best-effort
After changed
best-effort: prio 4
Subprocess
2555 best-effort: prio 4