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 &
通过这个设置,分区的
cpuset