gpt4 book ai didi

linux - sched_yield 减慢其他线程

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

我们有在循环中使用 sched_yield 的代码。当我们这样做时,我们似乎会降低其他线程的性能,特别是那些涉及内核调用(如 IO 和互斥/事件处理)的线程。我正在尝试确定此行为的确切原因。

过度调用 sched_yield 会导致内核出现瓶颈吗?

我怀疑如果我们一直要求内核检查它的进程列表,那么其他线程将受到影响,因为关键数据结构可能会不断被锁定——而如果我们不调用 sched_yield 那些内核锁往往是无可争议的。这是否有意义,或者重复调用 sched_yield 是否完全没问题。

最佳答案

看看 sched_yield Linux 手册页:

Avoid calling sched_yield() unnecessarily or inappropriately (e.g., when resources needed by other schedulable threads are still held by the caller), since doing so will result in unnecessary context switches, which will degrade system performance.

在紧密循环中调用它会导致问题。降低您调用它的速率。

(并检查您是否需要首先调用它。调度程序通常会自行完成正确的事情。)

如果您有一个低优先级线程,您可能会发现有兴趣研究的其他选项:

还是旧的nice当然是命令。

关于linux - sched_yield 减慢其他线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6807929/

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