当前位置: 首页 > news >正文

linux提高其他线程优先级,如何在pthreads中增加线程优先级?

levif的当前答案(建议SCHED_BATCH)对于Linux上的当前NPTL线程实现不正确(您可以通过运行'getconf GNU_LIBPTHREAD_VERSION'来检查内核具有哪种实现)。

在当今的内核中,仅实时调度策略允许设置sched_priority-对于非RT策略(SCHED_OTHER,SCHED_BATCH和SCHED_IDLE),该值始终为0。非RT策略的唯一选择是设置“ nice”值,例如通过setpriority()。设置'nice'并不能很好地说明确切的行为,至少在理论上,它可能因内核版本而异。对于当前的Linux内核,“ nice”具有非常强的效果,类似于优先级,因此您可以互换使用。为了增加线程的调度频率,您想降低 “ nice”值。这需要CAP_SYS_NICE功能(通常不是root,但通常是root,请参见http:// man7。和http://man7.org/linux/man-pages/man3/cap_set_proc.3.html)。

实际上,SCHED_BATCH是为发问者所要求的相反情况而设计的:它是为CPU密集型,长时间运行的工作而设计的,它们可以以较低的优先级生存。它告诉调度程序稍微惩罚线程的唤醒优先级。

还要回答一个较早的评论(我还没有足够的声誉来回应这个评论-为此投票一些投票将有所帮助:))。是的,坏消息是POSIX.1规范说“好的”影响进程,而不是单个线程。好消息是,Linux线程实现(NPTL和原始Linux线程)都违反了规范,并使其影响单个线程。我经常在手册页的“ BUGS”部分中指出这一点,这很有趣。我要说的是,该错误是在POSIX.1规范中进行的,该错误应该允许这种行为发生,而不是在尽管有此规范的情况下被强迫提供该错误的实现,而不是故意地这样做。换句话说-不是错误。

大部分内容在sched(7)手册页上(由于某些原因未在我的Fedora 20系统上提供):http : //man7.org/linux/man-pages/man7/sched.7.html

如果您确实想影响sched_priority,则可以查看实时策略,例如SCHED_RR。

相关文章:

  • linux 硬盘报错日志,Linux内核I_O系统报错日志与硬盘故障对应关系.doc
  • linux 递归上传ftp,使用ftp递归地将文件放入远程服务器
  • linux下载ccle数据,对CCLE数据库可以做的分析--转载
  • linux 什么是io,Linux异步IO是什么?
  • linux基础实验报告6,Linux实验报告6参考解析.doc
  • c语言树的类型作用是什么,C语言数据的基本类型有哪些?
  • c语言作业二闰年,浙大版《C语言程序设计(第3版)》题目集 练习3-5 输出闰年 (15 分)...
  • 汇编语言与c 混合编程,汇编语言与C C 混合编程精选.ppt
  • c语言链式表,c语言实现数据结构中的链式表
  • socket双向通信c语言,WebSocket实现实时双向通信
  • 递归函数c语言求分段函数,Python 实现递归函数求解分段函数表达式;并解释递归函数其原理...
  • c语言验证完成排序算法的时间,排序算法的时间复杂度和空间复杂度
  • c语言租游艇算法思路,租用游艇问题(C或C)长江游艇俱乐部在长江上设置了n个游艇出租站 爱问知识人...
  • 陕科大c语言题库,C语言考试题库
  • linux设置url转发,Apache+Weblogic实现URL转发