사용량이 적은 게스트로부터 qemu-kvm 메모리 회수

사용량이 적은 게스트로부터 qemu-kvm 메모리 회수

qemu-kvm 게스트로부터 메모리 사용을 투명하게 회수하거나 방지하는 방법이 있습니까?

시나리오 A:

게스트는 피크 시간 동안 8GB의 RAM을 사용하고 밤에는 다시 4GB의 사용량으로 돌아가지만 게스트는 여전히 호스트로부터 8GB의 RAM을 요구합니다.

시나리오 B:

게스트는 2GB의 RAM을 사용하지만 페이지 캐시에는 6GB의 RAM이 있습니다. 게스트는 호스트로부터 8GB의 RAM을 요구하지만 그 중 최대 6GB는 다른 게스트 시스템에서 더 중요할 수 있는 RAM일 수 있습니다.


벌룬에 대한 나의 첫 번째 생각은 게스트가 벌룬 효과를 "볼" 수 없다는 것이었지만, "풍선 2048"을 보낼 때 게스트 내부 메모리는 실제로 ~2GB로 줄어듭니다.

답변1

당신은 켤 수 있습니다자동 풍선 도움말XML을 편집하여 libvirt 게스트에서:

<memballoon model='virtio'>

가상 메모리 벌룬 장치는매개변수 autodeflate, 기본값은 입니다 off. on자동 풍선 도움말을 활성화하려면 으로 설정하세요 .

<memballoon model='virtio' autodeflate='on'>

virt-manager에는 이 설정을 활성화하거나 비활성화할 수 있는 GUI 옵션이 없습니다.

qemu를 수동으로 호출하는 경우(제정신을 유지하고 그러지 마십시오) ,automatic=true풍선 장치에 추가하십시오(예: ) -device virtio-balloon,automatic=true.

자동 풍선을 사용하려면 qemu/kvm 1.3.1 이상이 필요합니다.

이것이 아마도 모든 메모리 경합 문제를 해결하지는 못할 것입니다. 모든 가상 머신을 실행하기에 충분한 RAM을 확보하는 것이 가장 좋습니다.

답변2

바쁜 시간 이후 매일 밤 VM 및/또는 VM 호스트에서 이를 cron합니다.

동조; 에코 1 > /proc/sys/vm/drop_caches

fs 캐시를 삭제하고 시스템에 사용 가능한 메모리로 다시 제공하면 KVM/하이퍼바이저는 이를 여유 메모리로 보고 다른 용도를 찾을 수 있습니다.

도커 시스템에서도 매우 잘 작동합니다.

관련 정보