16.3. 실시간 커널에서 스레드 중단


스레드 중단은 스레드가 별표 임계값보다 오래 CPU 실행 대기열에 있고 진행되지 않을 때 발생합니다. 스레드 중단의 일반적인 원인은 CPU에 바인딩된 Cryostat _FIFO 또는 Cryostat _ RR 과 같은 고정 우선 순위의 폴링 애플리케이션을 실행하는 것입니다. 폴링 애플리케이션은 I/O를 차단하지 않으므로 kworkers 와 같은 다른 스레드가 해당 CPU에서 실행되지 않도록 할 수 있습니다.

스레드 부족을 줄이기 위한 초기 시도는 실시간 제한이라고 합니다. 실시간 제한에서 각 CPU에는 실시간이 아닌 작업 전용 실행 시간의 일부가 있습니다. 제한의 기본 설정은 실시간 작업에 대해 CPU의 95%를 사용하고 5%는 비실시간 작업을 위해 예약되어 있습니다. 이 작업은 단일 실시간 작업으로 인해 중단을 유발하지만 CPU에 할당된 실시간 작업이 여러 개 있는 경우 작동하지 않습니다. 다음을 사용하여 문제를 해결할 수 있습니다.

stalld 메커니즘

stalld 메커니즘은 실시간 제한에 대한 대안이며 제한적인 단점을 방지합니다. stalld 는 시스템에서 각 스레드의 상태를 정기적으로 모니터링하고 실행 대기열에 있는 스레드를 실행하지 않고 지정된 시간 동안 찾는 데몬입니다. stalld 는 thread가 Cryostat _DEADLINE 정책을 사용하도록 일시적으로 변경되고 지정된 CPU에서 스레드에 작은 시간을 할당합니다. 그런 다음 스레드가 실행되고 시간 슬라이스를 사용하면 스레드가 원래 스케줄링 정책으로 반환되고 stalld 는 스레드 상태를 계속 모니터링합니다.

하우스키핑 CPU는 모든 데몬, 쉘 프로세스, 커널 스레드, 인터럽트 처리기 및 분리된 CPU에서 디스패치할 수 있는 모든 작업을 실행하는 CPU입니다. 실시간 제한이 비활성화된 하우스키핑 CPU의 경우 stalld 는 기본 워크로드를 실행하는 CPU를 모니터링하고 Cryostat _FIFO 사용량 루프로 CPU를 할당하므로 이전에 정의된 허용 가능한 추가 노이즈에서 필요에 따라 stalled 스레드를 감지하고 스레드 우선 순위를 개선하는 데 도움이 됩니다. 실시간 제한 메커니즘으로 인해 주요 워크로드에서 불합리한 노이즈가 발생하는 경우 stalld 가 선호될 수 있습니다.

stalld 를 사용하면 겨운 스레드를 강화하여 도입 된 노이즈를 더 정확하게 제어할 수 있습니다. stalld 가 실행될 때 쉘 스크립트 /usr/bin/throttlectl 은 실시간 제한을 자동으로 비활성화합니다. /usr/bin/throttlectl show 스크립트를 사용하여 현재 제한 값을 나열할 수 있습니다.

실시간 제한 비활성화

/proc 파일 시스템의 다음 매개변수는 실시간 제한을 제어합니다.

  • /proc/sys/kernel/sched_rt_period_us 매개 변수는 마침표의 마이크로초 수를 지정하고 기본값은 1초입니다.
  • /proc/sys/kernel/sched_rt_runtime_us 매개 변수는 제한되기 전에 실시간 작업에서 사용할 수 있는 마이크로초 단위 수를 지정하고 기본값은 사용 가능한 CPU 주기의 950,000 또는 95%입니다. echo -1 > /proc/sys/kernel/sched_rt_runtime_us 명령을 사용하여 -1 값을 sched_rt_runtime_us 파일에 전달하여 제한을 비활성화할 수 있습니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동