一尘不染

如何知道Linux Scheduler时间片?

linux

我正在寻找我的Linux内核的时间片(或量子)的值。

具体问题:

  • 是否存在/proc公开此类信息的文件?
  • (或者)在我的发行版的Linux标头中是否定义明确?
  • (或者)是否存在公开此值的Linux API的C函数(也许是sysinfo)?

阅读 503

收藏
2020-06-02

共1个答案

一尘不染

分配给特定过程的数量可能有所不同

您可以通过调整 sched_latency_nssched_min_granularity_ns 来调整“切片”
,但请注意,“切片”不是固定的量。还要注意,CFS抢占决策是基于瞬时状态的。一个任务可能已经收到了完整的(可变)CPU时间“分片”,但是仅当有更多应得的任务可用时,抢占才会被触发,因此“分片”不是您期望的“最大不间断CPU时间”会..但是有点相似。

这是因为完全公平的调度程序(默认的Linux调度程序)将处理器的一部分分配给进程,而不是固定的时间片。这意味着每个进程的时间片与当前负载成比例,并由进程的优先级值加权

对于特殊用途的实时进程在使用SCHED_RR,默认的时间片是在Linux内核定义为RR_TIMESLICE在include / linux /排程/
rt.h

/*
 * default timeslice is 100 msecs (used only for SCHED_RR tasks).
 * Timeslices get refilled after they expire.
 */
#define RR_TIMESLICE            (100 * HZ / 1000)

您可以sched_rr_get_interval()用来获取特定SCHED_RR进程的SCHED_RR间隔。

2020-06-02