子进程是否从其父进程继承 ionice 优先级?如何检查正在运行的进程的 IO 优先级?

子进程是否从其父进程继承 ionice 优先级?如何检查正在运行的进程的 IO 优先级?

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

相关内容