上面我们介绍了CFS及组调度相关的主要内容,但可能很多人还跟我一样有点云里雾里的,下面我们直接从应用层面上也查看CFS及组调度的效果。首先对于非组调度,决定它们运行时间的唯一因素就是weight,也就是我们知道的nice,我们可以通过renice来重新调整进程的优先级,然后再使用taskset将它们限定在同一个CPU上(CFS只是保证一个CPU的公平,所以你可以看到一个有趣的现象:如指定两个进程的CPU_ALLOWS都有3,4,然后他们的优先级不一样0,3,结果是它们的CPU使用时间是一样的。如果再运行一个0级的进程会怎样?再把它改为5级?——SMP)。
下面我们看一下组调度,为了便于理解及查看proc信息,我们创建一个包括cpu,cpuset子系统的cgroup(mount –tcgroup –o cpu,cpuset none /cgroup/cpu),然后再在下层创建一个one group,并且它的catcpuset.cpus =3,cat cpuset.cpu_exclusive=1(即该cgroup下的进程只在3号cpu上运行,并且这个cpu是独占的)。我们的例子如下:
linux调度器(六)——应用层理解CFS及组调度
最新推荐文章于 2024-07-04 17:24:31 发布
本文从应用层角度探讨Linux的 Completely Fair Scheduler (CFS) 和组调度。通过示例展示了如何调整进程优先级、限制CPU使用,并通过创建cgroup观察组调度效果。核心思想是权重分配CPU时间,计算各进程应得的执行时间片。通过计算得出各进程在3号CPU上的执行比例分别为43.1%,14.1%,28.6%和14.3%。
摘要由CSDN通过智能技术生成