线程量子:如何计算它

Thread Quantum: How to compute it

我一直在阅读一些关于线程量程的帖子和文章 (here, here and here)。显然 Windows 根据 windows "mode" (服务器或其他)为线程量程分配固定数量的 CPU 滴答。然而从最后的 link 我们可以读到:

(A thread quantum) between 10-200 clock ticks (i.e. 10-200 ms) under Linux, though some granularity is introduced in the calculation

有什么方法可以计算 Linux 上的量子长度吗? 无论如何计算它是否有意义? (因为根据我的理解,线程仍然可以被抢占,所以在整个量程期间没有任何东西强制线程达到 运行)

从开发人员的角度来看,我可以看到编写一个程序的兴趣,该程序可以根据线程数预测程序的 运行ning 时间,并且 "what they do"(可能删除所有测试以找到最佳线程数会有点简洁,尽管我不确定这是正确的方法)

  1. 在 Linux 上,默认的实时量子长度常数是 declared as RR_TIMESLICE,至少在 4.x 内核中是这样; HZ 必须在配置内核时定义。
  2. 暂停量程已过期的线程并恢复它之间的间隔可能取决于很多因素,例如,load average
  3. 为了能够至少以某种程度的准确性预测运行时间,给出目标过程realtime priority; realtime processes are scheduled following a round-robin algorithm,这通常比常见的Linux更简单且更可预测调度算法。
  4. 要获取实时量子长度,调用sched_rr_get_interval()