
VMWare ESXi 4.1
게스트: Linux 커널 2.6.32 64비트(이전 버전도 시도)
다중 CPU 가상 머신에서는 모든 인터럽트(eth0,ata_piix)가 단일 CPU에 고정됩니다. 순수 하드웨어에서 실행하면 모든 것이 균형을 이룹니다.
E1000 네트워크 드라이버와 반가상화된 VMXNET3을 사용해 보았습니다.
어떤 제안이 있으십니까? 가상화된 환경에서는 정상적인 irq 친화력을 얻는 것이 불가능합니까?
답변1
죄송하지만 이것은 무의미한 질문입니다. 가상화된 하드웨어 모델은 바로 가상화입니다. 인터럽트는 실제가 아니며, 어댑터도 실제가 아니며, 수행하는 모든 '밸런싱'도 실제가 아니며 이에 대한 vCPU 0의 과부하도 실제가 아닙니다. VT-d를 사용하여 두 개의 전용 NIC를 통과시키고 적절하게 구성하지 않으면 안정적인 방법으로 이를 수행할 수 있는 방법이 없습니다.
답변2
가능하다면 몇 가지 증상을 표시해 주실 수 있나요? 과도한 인터럽트를 수행할 때 눈에 띄는 성능 저하(vCPU 1개 고정)가 있습니까? 공식적인 VMware 답변은 확실하지 않지만 모든 종류의 '마법'이 게스트 OS에 알려지지 않은 채 발생한다는 사실에 크게 의존하므로 이는 일종의 추상화일 수 있습니다.
답변3
e1000을 사용하면 "echo 3 > /proc/irq/$irq/smp_affinity"(3 == 00000010 == core1)를 사용하여 해당 인터럽트를 단일 코어에 고정할 수 있습니다. vmxnet3을 사용하면 무엇을 하든 core0에 유지됩니다. 가상화 여부에 관계없이 소프트 인터럽트와 100%에 가까운 식사를 하는 친구가 있는 Linux의 CPU 로드는 실제로 매우 현실적입니다.