KVM을 사용하여 스왑 공간 할당

KVM을 사용하여 스왑 공간 할당

다음 시나리오를 고려하십시오. 2GiB의 호스트가 KVM을 사용하여 일부 게스트를 실행하고 있습니다. 각 게스트는 일반적으로 많은 메모리를 필요로 하지 않으며 각각 256MiB를 확보하고 대부분 유휴 상태인 서비스를 실행합니다. 그러나 게스트에게 더 많은 메모리가 필요한 경우도 있습니다. 이제 각 게스트에는 RAM이 거의 없지만 자체 스왑 공간이 있습니다. 소량의 스왑 공간이 사용되는 것으로 나타났습니다. 저는 해당 구성에 문제가 있었던 적이 없지만 단지 호기심 때문입니다.

최적의 스왑 할당 전략은 무엇입니까?

  1. 각 게스트에는 자체 디스크에서 자체 스왑 공간이 할당되고 호스트에서는 소량의 메모리만 할당됩니다. (제가 지금 하고 있는 일이 바로 그 일입니다.)
  2. 호스트에 더 큰 스왑 공간을 할당하고, 게스트에 더 이상 스왑 공간을 할당하지 않으며, 게스트에 더 많은 메모리를 할당합니다.

메모리 팽창이 메모리 성능 향상에 도움이 됩니까?

답변1

"때때로 손님에게 더 많은 메모리가 필요할 때가 있습니다"라는 말은 좋은 앱인 것 같습니다과도한 메모리 사용량. 아이디어는 각 게스트가 일반적으로 사용하지 않기 때문에 각 게스트에게 많은 양의 메모리(실제로 할당할 수 있는 것보다 더 많은 양)를 할당한다는 것입니다. 그런 다음 게스트가 실제로 디스크로 스왑할 수 있을 만큼 충분한 스왑 공간이 있는지 확인하기 위해 계산을 수행하며, 최악의 경우에는 실제로 둘 다 발생합니다.하다모든 메모리를 사용합니다.

스왑 공간은 계속됩니다주인기계는 복종해야 합니다

호스트 스왑 공간 = 모든 게스트 메모리 합계 + 권장 호스트 스왑 공간

안전하게 유지하기 위해.

따라서 게스트가 10명이고 RAM이 2GiB인 경우 다음과 같이 시도해 볼 수 있습니다.

  • 게스트당 512MiB RAM(512 * 10 = 총 5120MiB)
  • 호스트에서 2GiB 스왑

즉, 2GiB의 스왑 공간을 호스트에 전용으로 할당할 수 있다고 가정할 때 이를 안전하게 처리하려면 호스트 스왑 공간이 최소 512 * 10 + 2048 = 7168MiB여야 합니다(소규모 메모리 호스트에 권장됨).

항상 이러한 유형의 설정을 먼저 테스트하여 컴퓨터가 이러한 설정을 처리할 수 있는지 확인하십시오. 이를 벤치마킹하는 것이 훨씬 더 좋으며 다양한 로드를 시도하고 가장 잘 작동하는 로드를 선택할 수 있습니다.

답변2

@ndt에는 훌륭한 프로그램이 있습니다. 내 시나리오가 다르기 때문에 다른 접근 방식을 취합니다.

많은 손님이 있는 서버가 있고 그들은 모두 일반적으로 웹/메일/파일 서버와 같은 응용 프로그램을 실행합니다. 내부의 데이터는 매우 중요하므로 백업 및 스냅샷이 자주 촬영됩니다. 따라서 디스크 이미지가 더 작고 단순할수록 좋습니다. 그래서 실제로 스왑 파티션을 만드는 것이 아니라 스왑 파일을 만듭니다. 처리량이 많거나 메모리가 필요한 게스트가 없기 때문에 디스크 저장 공간과 메모리가 더 작습니다. 스왑 파일은 rootfs 안에 있습니다.

이 설정은 많은 공간을 절약하고 유지 관리를 단순화합니다. 내가 말했듯이 이것은 다른 상황과 다릅니다.

답변3

허용되는 답변이 잘못되었습니다.

또한 RAM이 스왑되고 있음을 인식하고 디스크 캐시 및 IO 버퍼에 RAM을 사용하지 않도록 가상 머신에서 스왑 공간을 활성화해야 합니다.

호스트에서만 스왑을 활성화하면 가상 머신은 실제 RAM을 사용할 수 있다고 생각하여 이를 사용하는 반면, 호스트에서는 스왑을 수행하여 불필요한 병목 현상이 발생하고 정지됩니다. 이것은 당신이 할 수 있는 가장 큰 실수입니다.

또한 다른 데이터 드라이브와 함께 스냅샷/백업을 원하지 않으므로 다른 가상 드라이브를 스왑 디스크로 사용해야 합니다.

스왑 공간은 불안정할 수 있으므로 더 나은 성능을 위해 캐시=안전하지 않거나 zram/zswap을 사용할 수도 있습니다.

또한 스와핑은 나중에 디스크 캐시 및 IO 버퍼에 재사용할 수 있는 비활성 RAM을 확보하므로 좋습니다.

관련 정보