QEMU 가상 머신을 실행하는 데에도 사용하는 범용 머신이 있습니다. VM은 가능한 한 성능이 좋아야 하므로 hugepages(바람직하게는 1GB hugepages)를 사용하여 VM 메모리를 백업하고 싶습니다. 머신에는 32GB의 RAM이 있고 가상 머신에 16GB를 제공하고 싶습니다. 문제는 컴퓨터를 정상적으로 사용하는 동안 32GB를 모두 사용해야 할 것이므로 시작 시 16G 거대 페이지를 할당하는 것은 옵션이 아니라는 것입니다.
이 문제를 해결하기 위해 가상 머신이 시작될 때 16G 대용량 페이지를 할당하는 후크 스크립트가 있습니다. 예상한 대로 1GB hugepages에서는 호스트가 일정 시간 동안 사용된 경우 실패합니다(이상적이지는 않지만 2M hugepages를 안정적으로 처리하는 것 같습니다).
내가 이해하지 못하는 것은 왜 이런 일이 발생하는지입니다. 예를 들어, 일부 조각화 테스트를 강제하기 위해 여러 응용 프로그램(브라우저 창, 코드 편집기 등)을 연 다음 내 데스크톱만 열리도록 닫을 수 있습니다. 이 경우 내 메모리 사용량은 약 2.5G/32G입니다.
커널이 나머지 30G RAM에서 연속적으로 정렬된 메모리의 16개의 1G 페이지를 찾을 수 있는 방법이 실제로 없을까요? 이것은 매우 높은 단편화인 것 같습니다. 게다가, 나는 달릴 수 있다
$ sudo tee /proc/sys/vm/compact_memory <<<1
RAM 조각 모음을 시도했지만 그럼에도 불구하고 16개의 1G hugepages를 VM에 할당하는 데 성공하지 못했습니다. 2.5G RAM 조각 모음을 수행한 후 나머지 30G가 조각 모음을 수행한 후아직불연속 또는 정렬 불량.
이 과정에 대해 내가 어떤 오해를 갖고 있나요? 이것이 예상된 동작처럼 보입니까? 그리고 compact_memory
실제로 어떤 일이 이루어졌는지 확인할 수 있는 방법이 있나요 ? dmesg
명령을 실행한 후에는 출력이나 이와 유사한 내용이 표시되지 않습니다.
답변1
다음 위치에서 huge 페이지를 사전 할당할 수 있습니다.주인언급한 문제로 인해 온라인 할당으로 인한 시작 시간이 작동하지 않을 수 있습니다.
다음과 같이 작동할 수도 있지만 호스트를 재부팅해야 합니다.
GRUB_CMDLINE_LINUX_DEFAULT="hugepagesz=1GB default_hugepagesz=1G hugepages=16"
FOSDEM 2019의 20분쯤에 Fernando Laudares의 훌륭한 강연을 확인하여 대용량 페이지를 할당하는 온라인 및 부팅 시간 방법에 대해 알아보세요. https://www.youtube.com/watch?v=jTJ_X3fJ1Ik