搜索

13.3. 隔离单个 CPU 来运行高利用率任务

download PDF

通过使用实时 cpusets 机制,您可以为 SCHED_DEADLINE 任务分配一组 CPU 和内存节点。在任务集中,包括使用任务的高和低 CPU,通过隔离 CPU 来运行高利用率任务,并在不同 CPU 集中调度较小的利用率任务,让所有任务能够满足分配的 运行时

先决条件

  • root 权限

流程

  1. 创建两个目录,命名为 cpuset

    # cd /sys/fs/cgroup/cpuset/
    # mkdir cluster
    # mkdir partition
  2. 禁用 root Sharing 的负载平衡,以在 cpuset 目录中创建两个新的根域:

    # echo 0 > cpuset.sched_load_balance
  3. 在 cluster message 中,调度 CPU 1 上运行的低利用率任务到 7,验证内存大小,并将 CPU 命名为 exclusive:

    # cd cluster/
    # echo 1-7 > cpuset.cpus
    # echo 0 > cpuset.mems
    # echo 1 > cpuset.cpu_exclusive
  4. 将所有低利用率任务移到 CREDENTIALS 目录中:

    # ps -eLo lwp | while read thread; do echo $thread > tasks ; done
  5. 创建命名为 cpuset 的分区,并分配高利用率任务:

    # cd ../partition/
    # echo 1 > cpuset.cpu_exclusive
    # echo 0 > cpuset.mems
    # echo 0 > cpuset.cpus
  6. 将 shell 设置为 cpuset 并启动 deadline 工作负载:

    # echo $$ > tasks
    # /root/d &

    通过这个设置,分区的 cpuset 目录中的任务隔离不会影响 clustertraffic 目录中的任务。这可让所有实时任务满足调度程序截止时间。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.