검색

8장. RHEL for Real Time에서 CPU 선호도 설정

download PDF

시스템의 모든 스레드 및 인터럽트 소스에는 프로세서 선호도 속성이 있습니다. 운영 체제 스케줄러는 이 정보를 사용하여 CPU에서 실행할 스레드와 인터럽트를 결정합니다. 효율적인 정책 및 우선 순위 설정과 함께 프로세서 선호도를 설정하면 최대한의 성능을 얻을 수 있습니다. 애플리케이션은 항상 리소스, 특히 CPU 시간을 다른 프로세스와 경쟁합니다. 애플리케이션에 따라 관련 스레드는 종종 동일한 코어에서 실행됩니다. 또는 하나의 코어에 하나의 애플리케이션 스레드를 할당할 수 있습니다.

멀티 태스킹을 수행하는 시스템은 본질적으로 결정성이 더 쉽습니다. 우선순위가 높은 애플리케이션도 더 낮은 우선 순위 애플리케이션이 코드의 중요한 섹션에 있는 동안 실행을 지연할 수 있습니다. 낮은 우선 순위 애플리케이션이 중요 섹션을 종료한 후 커널은 낮은 우선 순위 애플리케이션을 안전하게 선점하고 프로세서에서 높은 우선 순위 애플리케이션을 예약합니다. 또한 캐시 무효화로 인해 한 CPU에서 다른 CPU로 프로세스를 마이그레이션하는 것은 비용이 많이 발생할 수 있습니다. RHEL for Real Time에는 이러한 문제 중 일부를 해결하고 대기 시간을 보다 효과적으로 제어할 수 있는 도구가 포함되어 있습니다.

선호도는 비트 마스크로 표시되며, 마스크의 각 비트는 CPU 코어를 나타냅니다. 비트가 1로 설정된 경우 스레드 또는 인터럽트는 해당 코어에서 실행됩니다. 0이면 스레드 또는 인터럽트가 코어에서 실행되지 않습니다. 선호도 비트 마스크의 기본값은 모두이므로 시스템의 모든 코어에서 스레드 또는 인터럽트가 실행될 수 있습니다.

기본적으로 프로세스는 모든 CPU에서 실행할 수 있습니다. 그러나 프로세스의 선호도를 변경하면 사전 결정된 CPU 세트에서 실행할 프로세스를 정의할 수 있습니다. 하위 프로세스는 상위 프로세스의 CPU 문제를 상속합니다.

다음과 같은 일반적인 선호도 설정을 설정하면 가능한 최대 성능을 얻을 수 있습니다.

  • 모든 시스템 프로세스에 단일 CPU 코어를 사용하고 나머지 코어에서 실행되도록 애플리케이션을 설정합니다.
  • 동일한 CPU에서 스레드 애플리케이션 및 네트워크 softirq 또는 드라이버 스레드와 같은 특정 커널 스레드 구성.
  • 각 CPU에서 producer-consumer 스레드를 페어링합니다. 생산자와 소비자는 생산자가 데이터를 버퍼에 삽입하고 소비자는 버퍼에서 데이터를 제거하는 두 가지 스레드 클래스입니다.

실시간 시스템에서 효과 튜닝을 위한 일반적인 좋은 방법은 애플리케이션을 실행하는 데 필요한 코어 수를 확인한 다음 해당 코어를 분리하는 것입니다. Tuna 툴 또는 쉘 스크립트를 사용하여 taskset 명령과 같은 비트 마스크 값을 수정할 수 있습니다. taskset 명령은 프로세스의 선호도를 변경하고 /proc/ 파일 시스템 항목을 수정하면 인터럽트의 선호도가 변경됩니다.

8.1. taskset 명령을 사용하여 프로세서 선호도 튜닝

실시간으로 taskset 명령은 실행 중인 프로세스의 CPU 선호도를 설정하거나 검색하는 데 도움이 됩니다. taskset 명령은 -p-c 옵션을 사용합니다. -p 또는 --pid 옵션은 기존 프로세스를 작동하며 새 작업을 시작하지 않습니다. -c 또는 --cpu-list 는 비트마스크 대신 숫자 프로세서 목록을 지정합니다. 이 목록에는 둘 이상의 항목을 쉼표로 구분하여 포함할 수 있으며 다양한 프로세서가 포함될 수 있습니다. 예: 0,5,7,9-11

사전 요구 사항

  • 시스템에 대한 root 권한이 있습니다.

절차

  • 특정 프로세스의 프로세스 선호도를 확인하려면 다음을 수행합니다.

    # taskset -p -c 1000
       pid 1000’s current affinity list: 0,1

    명령은 PID 1000을 사용하여 프로세스의 선호도를 출력합니다. 프로세스는 CPU 0 또는 CPU 1을 사용하도록 설정되어 있습니다.

    • (선택 사항) 프로세스를 바인딩하도록 특정 CPU를 구성하려면 다음을 수행합니다.

      # taskset -p -c 1 1000
      pid 1000’s current affinity list: 0,1
      pid 1000’s new affinity list: 1
    • (선택 사항) 둘 이상의 CPU 선호도를 정의하려면 다음을 수행합니다.

      # taskset -p -c 0,1 1000
      pid 1000’s current affinity list: 1
      pid 1000’s new affinity list: 0,1
    • (선택 사항) 특정 CPU에 우선 순위 수준 및 정책을 구성하려면 다음을 수행합니다.

      # taskset -c 5 chrt -f 78 /bin/my-app

      추가 세분성을 위해 우선순위 및 정책을 지정할 수도 있습니다. 이 예에서 명령은 CPU 5에서 10.0.0.1 _FIFO 정책 및 우선 순위 값 78에서 /bin/my-app 애플리케이션을 실행합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.