현대 하드웨어에서 여전히 irqbalance를 사용하고 있습니까?


39

이 질문은 이전에 요청되었지만 세계가 다시 요청할 수 있도록 충분히 바뀌 었다고 생각합니다.

irqbalance는 코어간에 메모리를 공유하는 NUMA 가능 CPU가있는 오늘날의 시스템에서 사용됩니까?

Running irqbalance --oneshot --debug은 최신 VMware ESXi 환경의 가상 게스트가 코어간에 NUMA 노드를 공유하고 있음을 보여줍니다.

# irqbalance --oneshot --debug 3
Package 0:  numa_node is 0 cpu mask is 0000000f (load 0)
    Cache domain 0:  numa_node is 0 cpu mask is 0000000f  (load 0)
            CPU number 0  numa_node is 0 (load 0)           
            CPU number 1  numa_node is 0 (load 0)
            CPU number 2  numa_node is 0 (load 0)
            CPU number 3  numa_node is 0 (load 0)

이 경우 irqbalance는 NUMA 시스템에서 실행 중임을 감지하고 종료합니다. 이것은 프로세스 모니터링을 망칩니다.

그러한 시스템에서 irqbalance 대신 numad 를 실행해야합니까 ?

이것은 VMware 가상화 서버에서 주로 흥미 롭습니다.

답변:


27

다음은 RedHat 기술자의 답변입니다. 대부분의 엔터프라이즈 하드웨어는 NUMA를 지원한다고 생각합니다. 그리고 내가 아는 한 VMware는 CPU 구성이 맞는 한 VM을 동일한 NUMA 노드에 맞추려고 시도합니다.

경험 (특히 VMware에 관한)은 대단히 감사하겠습니다.

이것은 현대 서버의 "사실"때문입니다. Multi-CPU / Muli-Core는 NUMA와 동일하지 않습니다. NUMA가없는 많은 다중 CPU / 코어 시스템이 있습니다.

아래 설명을 읽기 전에 위의 IRQ 선호도 문서와 다음 안내서를 읽으십시오.

RHEL 6 성능 조정 안내서

RHEL 6에 대한 지연 시간이 짧은 성능 조정

다 읽었습니까? 좋아요, 더 이상 아무것도들을 필요가 없습니다! ;-) 그러나 당신이 참을성이없는 경우를 대비하여 여기에 그들이 원하는 이유가 있습니다 ...

IRQbalance는 모든 IRQ 요청이 단일 CPU에서 백업되지 않도록합니다. 다양한 CPU의 모든 프로세스가 네트워크 또는 스토리지 IRQ 요청을 처리하기 위해 CPU 0을 기다리고 있기 때문에 4 개 이상의 CPU 코어가있는 많은 시스템이 느리게 수행되는 것을 보았습니다. CPU 0은 매우 바쁘게 보이고 다른 모든 CPU는 바쁘지 않지만 앱은 매우 느립니다. CPU 0에서 IO 요청을 기다리고 있기 때문에 앱이 느립니다.

IRQbalance는 모든 CPU에 대해 지능적인 방식으로이 균형을 유지하려고하며 가능한 경우 IRQ 처리를 프로세스에 최대한 가깝게 만듭니다. 이는 동일한 코어, 동일한 캐시를 공유하는 동일한 다이의 코어 또는 동일한 NUMA 영역의 코어 일 수 있습니다.

다음과 같은 경우가 아니면 irqbalance를 사용해야합니다.

매우 좋은 이유 (낮은 지연 시간, 실시간 요구 사항 등)로 앱 / IRQ를 특정 코어에 수동으로 고정하고 있습니다.

가상 손님. 게스트를 특정 CPU 및 IRQ 및 전용 네트 / 스토리지 하드웨어에 고정하지 않으면 베어 메탈에 대한 이점을 볼 수 없기 때문에 실제로 의미가 없습니다. 그러나 KVM / RHEV 호스트는 irqbalance와 numadtuned를 사용해야 합니다.

다른 중요한 튜닝 도구는 튜닝 된 프로파일과 numad입니다. 그들에 대해 읽어보세요! 그것을 써!

Numad는 프로세스와 메모리가 동일한 numa 영역에 있는지 확인한다는 점에서 irqbalance와 유사합니다. 코어가 많을수록 대기 시간이 크게 단축되어 부하에서 훨씬 부드럽고 안정적인 성능을 얻을 수 있습니다.

숙련되고 부지런하며 정기적으로 모니터링하거나 예측 가능한 워크로드가있는 경우 수동으로 프로세스 / IRQ를 CPU에 고정하여 성능을 향상시킬 수 있습니다. 이러한 상황에서도 irqbalance와 numad는 일치하는 데 매우 가깝습니다. 그러나 확실치 않거나 워크로드를 예측할 수없는 경우 irqbalance 및 numad를 사용해야합니다.


5
FWIW은, 일부의 10GbE 설명서 더 나은 처리량을 얻을 수 irqbalance을 비활성화하는 것이 좋습니다 ...
rogerdpack

8
벤치 마크 수치와 일치하도록 절대 최대치를 얻으려면 특정 방식으로 묶어야하지만 일반적으로 이러한 벤치 마크는 실제 작업 부하와 일치하지 않습니다. 매우 예측 가능한 사용 패턴으로 대기 시간에 민감한 요구 사항이있는 서버에서 하나의 응용 프로그램을 실행하는 경우 계속 진행하여 수동으로 프로세서 선호도를 구성하십시오. 그러나 애플리케이션이 광범위한 프로세스와로드에 따라 달라질 수있는 실제 사용 사례에 더 가까운 경우 Red Hat 기술에 동의합니다. Linux NUMA 밸런싱이 잘 진행되고 있습니다.
GeorgeB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.