gpt4 book ai didi

linux - 只为一个进程保留一个处理器(已经有最高优先级)

转载 作者:太空狗 更新时间:2023-10-29 12:18:54 27 4
gpt4 key购买 nike

我已经使用这段代码来尝试在执行程序时设置 -same-high 优先级:

CPU_SET(CPU_NUM, &cmask);

if (pthread_setaffinity_np(pid, sizeof(cmask), &cmask) < 0) {
LOG_ERROR("Could not set cpu affinity to core %d", CPU_NUM); goto exit_err;
}
errno = 0;
setpriority(PRIO_PROCESS, 0, -19);

该程序的目的是对一组常量输入(每 80 个字节)执行计算。

但在执行程序时,此计算所用的时间从 30% 到 150% 不等。

在绘制计算时间值时,我一直在等待一个非常平滑的图形,偏差大概在 10%-15% 左右,但实际偏差超过 40% !!!

所以我想问一下,如果 CPU 正在干扰另一个程序的执行,如果是这样,我可以强制 CPU 只运行一个特定的程序吗?

提前致谢!

附言我还没有找到可以回答我的问题的线程...

最相关的是 :) : Linux reserve a processor for a group of processes (dynamically)

最佳答案

要尝试减少抖动,您可以做的一些事情是:

  • 确保您已关闭 CPU 缩放。
  • 将该程序的调度策略设置为 SCHED_FIFO
  • 如果您有多个处理器,请尝试将您的流程固定到一个处理器上。
  • 在测量程序时尝试同时运行尽可能少的其他进程。
  • 不要触发与时间相关的非确定性来源(例如磁盘 I/O)。

浏览 How to build a Linux RT application 可能很有用因为准确的测量是同一个领域——尽管可能更极端:

现代台式机/服务器处理器非常复杂,以致于尝试以低方差精确测量单个程序的执行时间非常困难。诸如各种缓存和管道启动状态之类的事情会以多种方式扰乱执行时间,因此总会有限制。

关于linux - 只为一个进程保留一个处理器(已经有最高优先级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16711501/

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