13.3. 隔离单个 CPU 来运行高利用率任务
通过使用实时 cpusets 机制,您可以为 SCHED_DEADLINE 任务分配一组 CPU 和内存节点。在任务集中,包括使用任务的高和低 CPU,通过隔离 CPU 来运行高利用率任务,并在不同 CPU 集中调度较小的利用率任务,让所有任务能够满足分配的 运行时。
先决条件
- root 权限
流程
创建两个目录,命名为
cpuset:# cd /sys/fs/cgroup/cpuset/ # mkdir cluster # mkdir partition禁用 root Sharing 的负载平衡,以在
目录中创建两个新的根域:cpuset# echo 0 > cpuset.sched_load_balance在 cluster
message中,调度 CPU 1 上运行的低利用率任务到 7,验证内存大小,并将 CPU 命名为 exclusive:# cd cluster/ # echo 1-7 > cpuset.cpus # echo 0 > cpuset.mems # echo 1 > cpuset.cpu_exclusive将所有低利用率任务移到 CREDENTIALS 目录中:
# ps -eLo lwp | while read thread; do echo $thread > tasks ; done创建命名为
cpuset的分区,并分配高利用率任务:# cd ../partition/ # echo 1 > cpuset.cpu_exclusive # echo 0 > cpuset.mems # echo 0 > cpuset.cpus将 shell 设置为 cpuset 并启动 deadline 工作负载:
# echo $$ > tasks # /root/d &通过这个设置,分区的
目录中的任务隔离不会影响 clustertraffic 目录中的任务。这可让所有实时任务满足调度程序截止时间。cpuset