我已经使用这段代码来尝试在执行程序时设置-same-高优先级:
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,-19);
该程序的目的是执行一个恒定束(每80个字节)的input计算。
但是在执行程序时,这个计算所花的时间从30%到150%不等。
当绘制计算时间值时,我正在等待一个平滑的图表,偏差是10%-15%,但是却有40%以上。
如何安排工作和在Linux中传递参数并行运行
Windows计划没有正确启动我的ChromeDriver脚本
任务调度程序不执行对VBS脚本的批量调用,但在手动执行时工作正常
TaskScheduler RegisterTaskDeFinition(38:4)UserID失败
计划任务无法在外部服务器上写入文件
所以我想问一下,如果cpu干扰了程序的执行,如果是的话,我可以强制cpu只运行一个特定的程序?
提前致谢 !
PS我还没有find一个线程,可以回答我的问题呢…
最相关的是:) Linux为一组进程保留一个处理器(dynamic地)
自动化脚本,Rscripts
在Windows 8中使用MysqLdump自动化MysqL备份@localhost
计划任务重启服务与依赖服务
Windows 10 – 任务计划程序 – 未运行(0x41303)
尝试减少抖动,你可以做的一些事情是:
将调度策略设置为该程序的SCHED_FIFO 。
如果您有多个处理器,请试着将您的进程固定在一个处理器上。
在测量程序的同时,尝试并同时运行其他几个进程。
不要触发时间相关的非确定性来源(例如磁盘I / O)。
因为准确的测量是相同的域,所以浏览一下如何构建一个Linux RT应用程序可能是有用的 – 但是可能会更加极端:
确保您的程序不使用动态内存分配。
使用实时Linux内核。
即使在给定的cpu上禁用计时器滴答(CONfig_TASK_ISOLATION) 。
现代的桌面/服务器处理器非常复杂,以低方差来精确测量单个程序的执行时间非常困难。 诸如各种缓存和流水线启动状态之类的事情可能会以任何方式干扰执行时间,所以总会有限制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。