12.3. 사용량이 높은 작업을 실행하도록 단일 CPU 격리
cpusets 메커니즘을 사용하면 Cryostat _DEADLINE 작업에 대한 CPU 및 메모리 노드 집합을 할당할 수 있습니다. CPU 사용량이 높고 낮은 작업 집합에서 CPU를 격리하여 높은 사용률 작업을 실행하고 다른 CPU 세트에서 작은 사용률 작업을 예약하면 모든 작업이 할당된 런타임 을 충족할 수 있습니다. 'cpusets'에 대한 구성을 수동으로 추가해야 합니다.
사전 요구 사항
- 시스템에 대한 root 권한이 있습니다.
프로세스
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클러스터 제어 그룹에서 CPU 1에서 7까지 실행하도록 낮은 사용률 작업을 예약합니다. 메모리 크기 및 이름 제어 그룹을 독점적으로 확인합니다.
# cd cluster # echo 1-7 | tee cpuset.cpus cpuset.cpus.exclusive # echo root > cpuset.cpus.partition모든 낮은 사용률 작업을 클러스터 제어 그룹으로 이동합니다.
# ps -eLo lwp | while read thread; do echo $thread > cgroup.procs ; done파티션제어 그룹에서 높은 사용률 작업을 할당합니다.# echo 0 | tee cpuset.cpus cpuset.cpus.exclusive # echo isolated > cpuset.cpus.partition파티션 제어 그룹에 쉘을 추가하고 시작합니다.
# echo $$ > cgroup.procs이 설정을 사용하면
파티션제어 그룹의 작업이클러스터제어 그룹의 작업을 방해하지 않습니다. 이를 통해 모든 실시간 작업이 스케줄러 데드라인을 충족할 수 있습니다. 데드라인 스케줄러를 사용하는 경우 일반적으로 이 변경 없이 데드라인이 충족됩니다. 다른 작업에는 고유한 기한이 있습니다.애플리케이션이 적절한 고정을 사용할 준비가 되면 cgroup을 조정하여
파티션cgroup에 더 많은 CPU를 할당하고 모든 실시간 작업을 할당할 수 있습니다.# cd .. # echo 4-7 | tee cluster/{cpuset.cpus,cpuset.cpus.exclusive} # echo 0-3 | tee partition/{cpuset.cpus,cpuset.cpus.exclusive}