gpt4 book ai didi

c++ - 如何通过固定线程循环周期最小化 CPU 消耗

转载 作者:行者123 更新时间:2023-11-30 17:51:46 26 4
gpt4 key购买 nike

我使用pthread lib 2.8,操作系统内核是arm上的Linux 2.6.37。在我的程序中,线程 A 使用 pthread 接口(interface)将调度优先级设置为 sched_get_priority_min(policy)sched_get_priority_max(policy) 之间的中间点。

在线程函数循环中:

{
//do my work
pthread_cond_timedwait(..., ... , 15 ms)
}

我发现这个线程消耗了大约3%的CPU。如果我将超时更改为 30 毫秒,则会减少到 1.3%。但是,我无法增加超时时间。有没有办法在不减少超时的情况下减少CPU消耗?看来成本是由于线程切换造成的。

最佳答案

使用这种构造将导致每秒大约 67 次任务切换,并且很可能切换到不同的进程,这意味着包括页表在内的完整上下文切换。我已经有一段时间没有研究 ARM 中涉及的内容了,但我确信这不是一个“轻量级”操作。如果我们倒数,其中 1.75% 大约是每个任务切换 210k 时钟周期。这看起来相当多。但我不确定清理 TLB、缓存等涉及多少工作。

关于c++ - 如何通过固定线程循环周期最小化 CPU 消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16537714/

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