gpt4 book ai didi

linux - 结合linux中的ionice和nice,以及传递优先级

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:28 25 4
gpt4 key购买 nike

我想加载使用 ionice(I/O 优先级)和 nice(进程优先级)来启动程序。

我在互联网上看到了这条线的变体:

ionice -c2 -n7 nice -n19 [my program to run]

(或)

nice -n19 ionice -c2 -n7 [my program to run]

大家一一列举,不加赘述。

我的问题是... ionice(第一个程序)设置 nice(第二个程序)的优先级如何影响第三个程序(我要运行的程序)?当一个程序启动另一个程序时,优先级是否可传递?

使用 htop 进行的快速测试似乎可以确认这是否正常工作。在这两种情况下,程序运行都将有 19 个 niceness——这很好,这就是我们想要发生的事情。但它是如何工作的?

最佳答案

当您启动您的程序(假设它是一个简单的单进程程序)时,您会得到 1 个进程 来运行您的程序。到目前为止一切顺利。

nice 是一个特殊的程序,它以调整后的 niceness 启动另一个程序。当您启动 nice -n 19 someprogram 时,系统(实际上是 shell)会启动一个新进程来执行 nice,但该新进程不会依次执行 someprogram 在新进程中:它用新进程镜像 (someprogram) 替换当前进程镜像 (nice)。。 p>

ionice 相同。所以 nice -n19 ionice -c2 -n7 首先启动 nice,它完成它的工作然后启动 ionice(替换它自己的进程镜像),它做它自己的事情,然后最终启动 someprogram(替换它自己的进程镜像),导致一个进程调整了 CPU 和 IO niceness。

也就是说,自 a child process inherits whatever nice value is held by the parent at the time that it is forked ,如果 nice/ionice 确实派生了一个子进程,它仍然是真的。

所以:

Are the priorities transitive when a program starts another program?

是的,在这两种情况下(进程镜像替换和子进程创建)。

关于linux - 结合linux中的ionice和nice,以及传递优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45970377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com