gpt4 book ai didi

c - nanosleep 和/dev/rtc 的性能差异

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:17 27 4
gpt4 key购买 nike

我一直在将嵌入式 linux 程序的主循环转换为在服务器上运行,其中一个好处是可以在非 root 用户下运行。该程序负责定期从网络设备请求 IO 扫描 - 每 2 毫秒一次。今天我用调用 nanosleep 代替了/dev/rtc 的使用。在这种特殊情况下,我们可以避免大量延迟,但我想知道当我们在具有更严格的时序要求的嵌入式设备上运行时,是否可以保留 nanosleep 调用(大型项目就是这种情况) ).性能有很大差异吗?

最佳答案

这取决于 Linux 内核版本。来自 time(7) 联机帮助页:

   High-Resolution Timers       Before Linux 2.6.21, the accuracy of timer and sleep system calls (see below) was also limited by the       size of the jiffy.       Since  Linux  2.6.21,  Linux supports high-resolution timers (HRTs), optionally configurable via CON‐       FIG_HIGH_RES_TIMERS.  On a system that supports HRTs, the accuracy of sleep and timer system calls is       no  longer constrained by the jiffy, but instead can be as accurate as the hardware allows (microsec‐       ond accuracy is typical of modern hardware).

注意:“jiffy”是“Greg”的回答中提到的定时器滴答频率。另请注意,this 引用的系统调用包括 nanosleep()。

也就是说,如果您的嵌入式目标上有足够新的内核版本,nanosleep() 应该足够好。如果您有较旧的内核版本,您确实会受到时钟节拍频率的限制,在这种情况下,您可能会遇到问题,因为 2 毫秒非常接近 CONFIG_HZ=1000 的 1 毫秒节拍频率。

关于c - nanosleep 和/dev/rtc 的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7090575/

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