참조 :
https://access.redhat.com/site/ja/node/206443
dmesg 에서 아래와 같은 경고문이 출력되는 경우
Warning: pci_mmcfg_init marking 256MB space uncacheable.
MCFG table requires 64MB uncacheable only. Try booting with acpi_mcfg_max_pci_bus_num=on
원인 및 예상 증상 :
일부 하드웨어(특히 HP G7시스템이나 일부 G6시스템)의 경우 조기의 PCI 초기화에 따라 256MB메모리가 할당되어 각각의 PCI버스에 약 1MB가 사용됩니다. 나머지의 메모리는 "uncached"로 할당됩니다. 이는 CPU가 메모리를 I/O에 매핑 된 메모리로 다루며 CPU 캐시메모리에 캐시하지 않는 것을 의미합니다. 이 메모리는 기존의 캐시 기억 장치보다 읽는 속도가 약 30배 느립니다. 그런데 'normal' 영역의 메모리가 모두 할당되면 캐시되지 않은 메모리(30배 느린)를 Linux의 메모리 할당자가 사용을 하게 됩니다. 따라서 OS를 한동안 실행하여 페이지 캐시가 가득 차는 경우, 최근에 할당된 페이지의 읽기가 기존의 캐시보다 30배 느려지는 현상이 발생될 수 있습니다. 또한 이 영역 내에 네트워크 버퍼가 할당된 경우에는(슬로 루프 백 등)네트워크 성능 문제에도 영향을 미칠 가능성이 있습니다.
해결방안 :
OS 부팅시 커널이 경고한 경우에는 /boot/grub/grub.conf에 아래와 같이 설정을 하는 것을 권고 합니다.
acpi_mcfg_max_pci_bus_num=on
이렇게 설정 후 OS를 reboot 하면 커널은 BIOS가 보고한 테이블 크기가 아니라 MCFG테이블 크기에 따라 메모리 영역을 "uncacheable"로 제한합니다.
참고로 해당 경고메시지를 출력한 시스템은 아래와 같은 스펙이다.
Model : HP DL380 G6
RAM : 4G
OS : RHEL : 5.6 x86_64