linux - Linux:sched_yield 和 nice 之间的交互
问题描述
nice
在 Linux 中,和之间的交互是什么sched_yield
?的手册页sched_yield
建议调用者将只屈服于具有相同或更高优先级的进程:
如果调用线程是当时最高优先级列表中的唯一线程,则在调用
sched_yield()
.
然而,手册页sched
表明它不是黑白分明的:
nice 值影响 SCHED_OTHER 进程的相对调度的程度同样因 UNIX 系统和 Linux 内核版本而异。随着内核 2.6.23 中 CFS 调度程序的出现,Linux 采用了一种算法,该算法会导致 nice 值的相对差异产生更强的效果。在当前的实现中,两个进程的 nice 值的每一个差异单位都会导致调度程序偏爱更高优先级进程的程度为 1.25。当系统上有任何其他更高优先级的负载时,这会导致非常低的 nice 值 (+19) 真正为进程提供很少的 CPU,并使得高的 nice 值 (-20) 将大部分 CPU 提供给需要它的应用程序 (例如,一些音频应用程序)。
有时会sched_yield
允许另一个较低优先级的进程运行吗?
PS 我知道 Linus Torvalds 不鼓励使用sched_yield
; 这与我理解其行为的目标无关。
解决方案
实验表明,与sched_yield
手册页相反,它sched_yield
确实也会屈服于较低优先级的进程。
手册页需要更新。
推荐阅读
- excel - VBA什么是范围变量数组的形状
- google-data-studio - 逗号分隔值作为 Google Data Studio 中的过滤器控件
- java - SpringBoot+Thymeleaf: Property or field 'name' cannot be found on object of type
- mysql - MYSQL以混合匹配的顺序删除重复项
- angular - 验证 access_token 失败,错误的状态/随机数
- python - 在python中使用urllib3传递用户名和密码
- postgresql - PostgreSQL:在没有 UNIONing SUBSTRINGs 的情况下加入字符串中的字符
- xero-api - API 中的 Xero Contact 信用额度
- bash - 输出临时文件的第一行
- node.js - 有没有办法在运行时从伊斯坦布尔获取 html 报告?