11.3. 隔离单个 CPU 以运行高利用率任务


使用 cpusets 机制,您可以为 SCHED_DEADLINE 任务分配一组 CPU 和内存节点。在使用任务具有高和低 CPU 的任务集合中,隔离 CPU 以在不同的 CPU 上运行高利用率任务和将小利用率任务调度到不同的 CPU 集合中,使所有任务能够满足所分配的 运行时。您必须手动为 'cpusets' 添加配置

先决条件

  • 您在系统上具有 root 权限。

流程

  1. 创建两个名为 cluster 和 partition 的控制组:

    # cd /sys/fs/cgroup
    # echo +cpuset > cgroup.subtree_control
    # mkdir cluster
    # mkdir partition
    # echo +cpuset | tee cluster/cgroup.subtree_control partition/cgroup.subtree_control
    Copy to Clipboard Toggle word wrap
  2. 在集群控制组群中,将低利用率任务调度到 CPU 1 到 7。验证内存大小,并将控制组命名为 exclusive :

    # cd cluster
    # echo 1-7 | tee cpuset.cpus cpuset.cpus.exclusive
    # echo root > cpuset.cpus.partition
    Copy to Clipboard Toggle word wrap
  3. 将所有低利用率任务移到集群控制组群中:

    # ps -eLo lwp | while read thread; do echo $thread > cgroup.procs ; done
    Copy to Clipboard Toggle word wrap
  4. 分区 控制组群中,分配高利用率任务:

    # echo 0 | tee cpuset.cpus cpuset.cpus.exclusive
    # echo isolated > cpuset.cpus.partition
    Copy to Clipboard Toggle word wrap
  5. 将 shell 添加到分区控制组中并启动:

    # echo $$ > cgroup.procs
    Copy to Clipboard Toggle word wrap

    在这个版本中,在分区 控制组群中隔离的任务不会影响 集群 控制组群中的任务。这可让所有实时任务满足调度程序期限。如果您使用截止时间调度程序,则在没有此更改的情况下通常会满足截止时间。请注意,其他任务都有自己的期限。

如果应用程序已准备好使用正确的固定,可以通过调整 cgroups 来进一步减少对 分区 cgroup 的 cpus,并为它分配所有实时任务:

# cd ..
# echo 4-7 | tee cluster/{cpuset.cpus,cpuset.cpus.exclusive}
# echo 0-3 | tee partition/{cpuset.cpus,cpuset.cpus.exclusive}
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat