KVM 가상 머신 네트워크 성능이 좋지 않습니다.

KVM 가상 머신 네트워크 성능이 좋지 않습니다.

KVM에서 32비트 Linux 가상 머신을 실행하고 있습니다. 호스트는 LAN에 연결된 64비트 Linux 컴퓨터입니다. scp를 사용하여 KVM 시스템에서 LAN의 서버로 파일을 전송하려고 하면 기가비트 이더넷을 통해 약 500kB/s의 성능이 저하됩니다. 대략 1%정도 예상됩니다. 어떤 제안이 있으십니까?

답변1

사용을 고려해보세요가상 기기. (느린) 하드웨어를 에뮬레이션하지 않고도 가상 머신과 호스트를 직접 연결할 수 있습니다. 이를 사용하여 네트워크 성능이 크게 향상되는 것을 측정했습니다.

예를 들어, virtio 네트워크 장치는 kvm 명령줄 매개변수 "-net nic,model=virtio"를 통해 활성화할 수 있습니다.

Virtio 블록 장치를 사용하는 경우 새 장치 이름은 "vda1" 등이지만 현재 Linux 배포판은 UUID를 기반으로 파티션을 감지하므로 이는 문제가 되지 않습니다.

답변2

이는 클라이언트의 내부 디스크 I/O 성능 문제일 수 있습니다. 디스크 이미지를 사용하는 경우 성능 향상을 위해 다음 단계를 수행하십시오.

cache먼저 게스트의 디스크 구성 옵션을 사용해 봐야 합니다 .

기본적으로 Write-Through 캐싱은 모든 블록 장치에 사용됩니다. 즉, 호스트 페이지 캐시는 데이터를 읽고 쓰는 데 사용되지만 쓰기 알림은 스토리지 하위 시스템에서 데이터가 기록되었음을 보고할 때만 클라이언트에 전송됩니다.

데이터가 호스트 페이지 캐시에 나타나면 후기입 캐시는 데이터 쓰기가 완료되었음을 보고합니다. 호스트를 신뢰하는 한 안전합니다. 호스트가 충돌하거나 전원이 꺼지면 게스트의 데이터가 손상될 수 있습니다. -snapshot 옵션을 사용하면 기본적으로 후기입 캐싱이 사용됩니다.

페이지 호스팅을 완전히 방지하려면 캐시=없음을 사용하세요. 이렇게 하면 게스트 메모리에 직접 디스크 IO가 시도됩니다. QEMU는 여전히 데이터의 내부 복사본을 수행할 수 있습니다.

일부 블록 드라이버는 캐시=연속 쓰기를 사용할 때 제대로 작동하지 않습니다. 특히 qcow2가 그렇습니다. 정확성보다 성능이 더 중요한 경우 qcow2와 함께 캐시=쓰기 저장을 사용해야 합니다. 기본적으로 qcow2 디스크 이미지에 대해 명시적 캐시가 지정되지 않은 경우 캐시=쓰기 저장이 사용됩니다. 다른 모든 디스크 유형의 경우 캐시=writethrough가 기본값입니다.

그런 다음 커널의 엘리베이터 옵션도 사용해야 합니다. elevator=noopgrub linux 명령줄에 다음과 같은 내용을 추가해야 합니다.

# Edit your /etc/default/grub.conf (on Debian-based distribution)
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

이에 대한 더 나은 설명은 다음에서 찾을 수 있습니다.http://lonesysadmin.net/2008/02/21/elevatornoop/;그러나 간단히 말해서 호스트 Linux 커널과 게스트 Linux 커널 모두 I/O를 최적화하려고 시도하지만 게스트의 경우 이는 무엇보다 더 나쁜 경우가 많습니다(게스트는 이 작업을 호스트에 맡겨야 합니다).

관련 정보