19장. 실시간 및 짧은 대기 시간 워크로드 프로비저닝


많은 조직에서는 특히 금융 및 통신 산업 분야에서 고성능 컴퓨팅과 낮고 예측 가능한 지연 시간이 필요합니다.

OpenShift Container Platform은 OpenShift Container Platform 애플리케이션에 대한 낮은 지연 성능과 일관된 응답 시간을 달성하기 위한 자동 튜닝을 구현하는 노드 튜닝 연산자를 제공합니다. 이러한 변경을 하려면 성능 프로필 구성을 사용합니다. 커널을 kernel-rt로 업데이트하고, 포드 인프라 컨테이너를 포함한 클러스터 및 운영 체제 정리 작업을 위해 CPU를 예약하고, 워크로드를 실행하기 위해 애플리케이션 컨테이너의 CPU를 격리하고, 사용되지 않는 CPU를 비활성화하여 전력 소비를 줄일 수 있습니다.

참고

애플리케이션을 작성할 때는 RHEL의 실시간 프로세스 및 스레드 에 설명된 일반적인 권장 사항을 따르세요.

19.1. 실시간 기능을 갖춘 작업자에게 저지연 작업 스케줄링

실시간 기능을 구성하는 성능 프로필이 적용되는 작업자 노드에 대기 시간이 짧은 워크로드를 예약할 수 있습니다.

참고

특정 노드에서 작업 부하를 예약하려면 Pod 사용자 정의 리소스(CR)에서 레이블 선택기를 사용합니다. 레이블 선택기는 노드 튜닝 운영자가 낮은 지연 시간을 위해 구성한 머신 구성 풀에 연결된 노드와 일치해야 합니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • 클러스터 관리자 권한이 있는 사용자로 로그인했습니다.
  • 저지연 작업 부하에 맞춰 작업자 노드를 조정하는 성능 프로필을 클러스터에 적용했습니다.

프로세스

  1. 저지연 작업 부하에 대한 Pod CR을 생성하고 클러스터에 적용합니다. 예:

    실시간 처리를 사용하도록 구성된 Pod 사양 예

    apiVersion: v1
    kind: Pod
    metadata:
      name: dynamic-low-latency-pod
      annotations:
        cpu-quota.crio.io: "disable" 
    1
    
        cpu-load-balancing.crio.io: "disable" 
    2
    
        irq-load-balancing.crio.io: "disable" 
    3
    
    spec:
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
      containers:
      - name: dynamic-low-latency-pod
        image: "registry.redhat.io/openshift4/cnf-tests-rhel8:v4.19"
        command: ["sleep", "10h"]
        resources:
          requests:
            cpu: 2
            memory: "200M"
          limits:
            cpu: 2
            memory: "200M"
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop: [ALL]
      nodeSelector:
        node-role.kubernetes.io/worker-cnf: "" 
    4
    
      runtimeClassName: performance-dynamic-low-latency-profile 
    5
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    포드 런타임 시 CPU CFS(완전히 공정한 스케줄러) 할당량을 비활성화합니다.
    2
    CPU 부하 분산을 비활성화합니다.
    3
    노드에서 인터럽트 처리를 취소합니다.
    4
    nodeSelector 레이블은 Node CR에 지정한 레이블과 일치해야 합니다.
    5
    runtimeClassName 은 클러스터에 구성된 성능 프로필의 이름과 일치해야 합니다.
  2. <profile_name>은 PerformanceProfile YAML의 이름 이며, performance-<profile_name> 형식으로 pod runtimeClassName을 입력합니다. 이전 예에서 이름performance-dynamic-low-latency-profile 입니다.
  3. Pod가 올바르게 실행되고 있는지 확인합니다. 상태가 running이어야 하며 올바른 cnf-worker 노드를 설정해야 합니다.

    $ oc get pod -o wide
    Copy to Clipboard Toggle word wrap

    예상 출력

    NAME                     READY   STATUS    RESTARTS   AGE     IP           NODE
    dynamic-low-latency-pod  1/1     Running   0          5h33m   10.131.0.10  cnf-worker.example.com
    Copy to Clipboard Toggle word wrap

  4. IRQ 동적 로드 밸런싱을 위해 구성된 Pod가 실행되는 CPU를 가져옵니다.

    $ oc exec -it dynamic-low-latency-pod -- /bin/bash -c "grep Cpus_allowed_list /proc/self/status | awk '{print $2}'"
    Copy to Clipboard Toggle word wrap

    예상 출력

    Cpus_allowed_list:  2-3
    Copy to Clipboard Toggle word wrap

검증

노드 구성이 올바르게 적용되었는지 확인합니다.

  1. 구성을 확인하려면 노드에 로그인하세요.

    $ oc debug node/<node-name>
    Copy to Clipboard Toggle word wrap
  2. 노드 파일 시스템을 사용할 수 있는지 확인합니다.

    sh-4.4# chroot /host
    Copy to Clipboard Toggle word wrap

    예상 출력

    sh-4.4#
    Copy to Clipboard Toggle word wrap

  3. 기본 시스템 CPU 친화성 마스크에 동적 저지연 포드 CPU(예: CPU 2 및 3)가 포함되지 않도록 합니다.

    sh-4.4# cat /proc/irq/default_smp_affinity
    Copy to Clipboard Toggle word wrap

    출력 예

    33
    Copy to Clipboard Toggle word wrap

  4. 시스템 IRQ가 dynamic-low-latency-pod CPU에서 실행되도록 구성되지 않았는지 확인하세요.

    sh-4.4# find /proc/irq/ -name smp_affinity_list -exec sh -c 'i="$1"; mask=$(cat $i); file=$(echo $i); echo $file: $mask' _ {} \;
    Copy to Clipboard Toggle word wrap

    출력 예

    /proc/irq/0/smp_affinity_list: 0-5
    /proc/irq/1/smp_affinity_list: 5
    /proc/irq/2/smp_affinity_list: 0-5
    /proc/irq/3/smp_affinity_list: 0-5
    /proc/irq/4/smp_affinity_list: 0
    /proc/irq/5/smp_affinity_list: 0-5
    /proc/irq/6/smp_affinity_list: 0-5
    /proc/irq/7/smp_affinity_list: 0-5
    /proc/irq/8/smp_affinity_list: 4
    /proc/irq/9/smp_affinity_list: 4
    /proc/irq/10/smp_affinity_list: 0-5
    /proc/irq/11/smp_affinity_list: 0
    /proc/irq/12/smp_affinity_list: 1
    /proc/irq/13/smp_affinity_list: 0-5
    /proc/irq/14/smp_affinity_list: 1
    /proc/irq/15/smp_affinity_list: 0
    /proc/irq/24/smp_affinity_list: 1
    /proc/irq/25/smp_affinity_list: 1
    /proc/irq/26/smp_affinity_list: 1
    /proc/irq/27/smp_affinity_list: 5
    /proc/irq/28/smp_affinity_list: 1
    /proc/irq/29/smp_affinity_list: 0
    /proc/irq/30/smp_affinity_list: 0-5
    Copy to Clipboard Toggle word wrap

주의

낮은 지연 시간을 위해 노드를 조정할 때 보장된 CPU가 필요한 애플리케이션과 함께 실행 프로브를 사용하면 지연 시간이 급증할 수 있습니다. 적절하게 구성된 네트워크 프로브 세트와 같은 다른 프로브를 대안으로 사용하세요.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat