비경쟁 CPU 세트의 스레드에 대한 스케줄러 우선 순위 및 정책의 영향은 무엇입니까? A에서 실행되는 작업에는 다양한 스케줄러 정책이 있습니다.

cgroups를 사용하여 두 개의 cpu_exclusive cpusets A와 B를 생성하고 모든 사용자 스레드와 모든 언 바운드 커널 스레드를 cpuset A에 연결된 cgroup으로 마이그레이션 한 Linux 시스템이 있습니다. cpuset A에서 실행되는 작업에는 다양한 스케줄러 정책이 있습니다. 다양한 우선 순위가 있으며 cpuset A에 코어가있는 것보다 cpuset A에서 더 많은 스레드가 실행되고 있습니다.

cpuset B에 첨부 된 매우 활동적인 일부 프로세스도 있습니다.이 프로세스에서 총 사용자 스레드 수는 cpuset B에서 독점적으로 사용할 수있는 코어 수보다 크지 않습니다. 목표는 cpuset에서 실행되는 중요한 작업을 차단하는 것입니다. B는 기계의 다른 활동에서 발생하고 처리 대기 시간을 최소화합니다.

이러한 설정에서 cpuset B에서 실행중인 사용자 스레드의 스케줄링 정책 / 우선 순위가 관찰 가능한 효과가 있습니까? 달리 말하면 : B cpuset 스레드의 스케줄링 정책을 기본 SCHED_OTHER에서 SCHED_FIFO 또는 SCHED_RR로 변경하면 결과가 좋거나 나쁩니 까?

스케줄러가 cpuset B에서 실행중인 각 스레드에 전용 코어를 할당 할 수 있어야하므로 우선 순위를 정하거나 일정을 정할 필요가 없으므로 B의 정책 및 상대 우선 순위가 없으므로 응답이 ‘아니오’인 것처럼 보입니다. CPU 스레드는 중요하지 않습니다. 다른 한편으로, 바운드 커널 스레드와 ‘스케줄러 도메인’측면과 내가 고려하지 않은 다른 것들이 있습니다.

오버 프로비저닝 된 독점 cpuset에서 실행중인 스레드의 예약 정책 및 우선 순위가 실질적인 의미가 있습니까?



답변

사용 된 시간 조각은 특정 코어를 각 PID에 잠그지 않는 한 캐시 지속성이 필요한 CPU 집약적 작업에 중요합니다. 스케줄러 정책 SCHED_BATCH를 사용하여 시간 조각을 늘리고 대화 형 응답 성을 줄이면서 경우에 따라 성능을 최대 300 % 향상시킬 수 있습니다. 작은 시간 조각의 반대 효과는 SCHED_RR에서 발생합니다 (처리량은 줄어들지 만 실시간 응답 성은 증가 함).

schedtool을 사용하여 세트 B의 모든 PID에 대한 특정 PID의 정책을 단일 명령으로 설정할 수 있습니다. 또한 특정 PID를 특정 코어에 고정하는 데 사용할 수 있습니다. 캐시 지속성은 더 이상 시간 조각에 의존하지 않기 때문에 최적의 솔루션이 될 수 있지만 각 PID에 대해 별도의 schedtool 명령을 실행해야하기 때문에 더 많은 노력이 필요합니다.


답변

각 프로세스에 자체 코어가있는 경우 우선 순위 제약 조건이 없습니다.

그러나 15 분마다 실행하는 데 30 분이 걸리는 프로세스를 예약하면 프로세스가 겹치기 시작하므로 우선 순위를 정해야합니다.

그러나 “최상의”스케줄링 정책은 없습니다.

그들은 실제로 당신이 달성하고자하는 것에 달려 있습니다. 그러나 처음에는 기본값 인 SCHED_OTHER를 그대로두고 더 전문적인 작업을 시도하기 전에 얼마 동안 관찰했습니다.