호스트 I/O 로드가 높을 때 가상 머신이 I/O에서 멈추는 이유는 무엇입니까?

호스트 I/O 로드가 높을 때 가상 머신이 I/O에서 멈추는 이유는 무엇입니까?

호스트 OS에 I/O 로드가 너무 많으면 모든 VM이 I/O로 인해 엄청나게 정체되기 시작하고 systemd를 사용하여 부팅할 수도 없다는 사실을 여러 번 확인했습니다.CPU가 멈췄습니다.메시지 및 기타 시간 초과. Linux 호스트의 VMWare Workstation과 VirtualBox 모두에서 이러한 방식으로 작동합니다. 어떤 손님과도. 기본적으로 호스트가 파일 시스템 검사나 일부 체크섬 계산 등을 수행하는 경우 I/O 작업이 거의 없기 때문에 게스트 운영 체제는 절반만 작동합니다.

이러한 유형의 로드 중에 호스트 프로세스가 I/O를 공유하는 데 문제가 없으며 두 번째 체크섬이 실행되면 I/O가 두 프로세스 간에 어느 정도 균등하게 분산된다는 점을 언급할 가치가 있습니다. 왜 그런 겁니까? VM을 그토록 "특별"하게 만드는 이유는 무엇입니까? 도울 수 있니?

답변1

소비자급 컨트롤러/디스크는 여러 개의 무거운 I/O 작업을 효율적으로 수행할 수 있는 능력이 없습니다. 그러나 일반적으로 기술이 빠를수록 프로세스는 더 좋아집니다(이론적으로).

분명히 소프트웨어 RAID(OP에서 말했듯이)와 같이 CPU/I/O 집약적인 작업을 실행하면 컨트롤러가 공유될 때와 CPU 리소스가 소진될 때 전체 설정의 성능이 저하됩니다. 최소한 하드웨어 RAID 컨트롤러에 투자하는 것이 좋습니다.

서버급 하드웨어는 일반적으로 대량의 액세스로 여러 VM/여러 사용자를 동시에 처리할 수 있습니다.

그러나 서버급 하드웨어를 선택하는 것이 전부는 아니며, 소비자급 또는 서버급 하드웨어를 다룰 때 매우 유용한 몇 가지 최적화 전략이 있습니다.

paravirtualizing가상 머신에서 수행할 수 있는 작업은 하이퍼바이저의 I/O 부담을 줄이는 데 큰 도움이 될 수 있는 서비스입니다.

반가상화는 대량 데이터 전송(VMWare에서는 PVSCSI라고 함)을 가상화 서비스/커널에 직접 수행하는 특수 드라이버를 추가하는 것을 의미하므로 실제 미디어 저장 장치/NIC를 에뮬레이트할 필요가 없습니다.

Enterprise이든 Workstation이든 모든 vmware 솔루션에 대해 Linux 및 FreeBSD용 패키지가 제공됩니다 open-vm-tools.

Debian에서는 다음 명령을 사용하여 설치할 수 있습니다.

apt-get install open-vm-tools

Debian Stretch를 사용하면 더 이상 아무것도 컴파일하지 않습니다. Jessie의 경우 백포트에서 open-vm-toolsv10을 설치하므로 백포트에서 open-vm-tools를 설치하는 것이 좋습니다.

open-vm-tools를 설치한 후 VM을 종료하고 디스크 컨트롤러를 유형으로 변경 ParaVirtual하고 네트워크 컨트롤러를 유형으로 변경해야 합니다 vmxnet3.

구경하다VMware 반가상화 SCSI(PVSCSI) 어댑터를 사용하도록 디스크 구성(1010398)

또한 vmtools를 사용하면 가상 머신이 메모리를 팽창시켜 사용하지 않는 RAM을 소모할 필요가 없습니다.

가상 메모리 벌루닝은 물리적 호스트 시스템이 특정 게스트 가상 머신(VM)에서 사용되지 않은 메모리를 검색하고 이를 다른 VM과 공유할 수 있도록 하는 하이퍼바이저에서 사용하는 컴퓨터 메모리 회수 기술입니다. 메모리 벌루닝을 사용하면 게스트 VM에 필요한 총 RAM 양이 호스트에서 사용 가능한 물리적 RAM 양을 초과할 수 있습니다.

VT 및 VT-d와 같은 프로세서 수준 에뮬레이션 기술에 대한 지원도 프로세스를 보다 원활하게 만드는 데 도움이 됩니다.인텔 직접 I/O 가상화 기술(VT-d)

말할 필요도 없이 I/O를 줄이는 운영 체제 수준 최적화도 도움이 됩니다. 예를 들어 로컬 가상 머신이 아닌 원격 로깅 시스템에 로깅합니다.

또는 파티션을 정렬하십시오.

VMware vSphere 5, DeepDrive, Part 1의 파티션 정렬

VMware vSphere 5, DeepDrive, Part 2의 파티션 정렬

또한 갑작스러운 재시작 중에 로그 무결성을 유지하기 위해 로그 데몬이 로그 파일을 플러시할 때 /var 파티션에서 데이터베이스 저장 공간을 가져오는 것과 같은 기타 I/O 최적화에 유의하세요.

또한 필요한 최소한의 서비스를 사용한다는 Unix 철학을 따르는 데도 도움이 됩니다. 내 경험상 소규모 VM은 내부 관리/페이징 측면에서 더 적은 I/O를 사용합니다. 분명히, 실제 가지고 있는 것보다 더 많은 메모리를 사용하면 I/O 문제(가비지 수집이라고도 함)가 발생할 수 있습니다.

또한 하이퍼바이저에서 특정 가상 머신의 I/O 우선순위를 미세 조정하여 우선순위를 더 높거나 낮게 지정할 수도 있습니다. VCenter/VMWare ESX에서 수행할 수 있다는 것을 알고 있습니다. VMWare Workstation은 레벨 2 하이퍼바이저이므로 I/O 작업 및 슬라이스 할당량 관리를 담당하는 호스트 OS입니다(자세한 내용은 나중에 자세히 소개).

레벨 2 하이퍼바이저를 사용할 때 여기서 논의하는 많은 최적화는 가능할 때마다 호스트 운영 체제에도 적용되어야 한다는 것은 말할 필요도 없습니다.

VMware 하이퍼바이저 기술 또한~인 것 같다다른 옵션보다 여러 가상 머신에서 높은 로드 I/O를 더 잘 처리합니다.

하지만 성능에 관심이 있다면 적어도 VMWare 세계에서는적어도 생산 시스템의 경우, VMware Workstation을 사용하는 대신 Type-1/베어메탈 하이퍼바이저(ESX 또는 ESXi)를 사용하는 것이 좋습니다.

~에서관리 프로그램:

유형 1. 기본 또는 베어메탈 하이퍼바이저 이러한 하이퍼바이저는 호스트 하드웨어에서 직접 실행되어 하드웨어를 제어하고 게스트 운영 체제를 관리합니다. 따라서 베어메탈 하이퍼바이저라고도 합니다. 1960년대 IBM이 개발한 최초의 하이퍼바이저는 네이티브 하이퍼바이저였습니다. [4] 여기에는 테스트 소프트웨어 SIMMON 및 CP/CMS 운영 체제(IBM z/VM의 전신)가 포함됩니다. 최신 버전에는 Xen, SPARC용 Oracle VM Server, x86용 Oracle VM Server, Citrix XenServer, Microsoft Hyper-V 및 VMware ESX/ESXi가 포함됩니다. 유형 2 또는 관리형 하이퍼바이저 이러한 하이퍼바이저는 다른 컴퓨터 프로그램과 마찬가지로 기존 운영 체제(OS)에서 실행됩니다. 게스트 운영 체제는 호스트 시스템에서 프로세스로 실행됩니다.

유형 2 하이퍼바이저는 호스트 운영 체제에서 게스트 운영 체제를 추상화합니다. VMware Workstation, VMware Player, VirtualBox, Parallels Desktop for Mac 및 QEMU는 유형 2 하이퍼바이저의 예입니다.

Xen마지막으로 PV 모드의 Linux 호스트 docker와 같이 대용량 스토리지 액세스에 에뮬레이션 계층을 추가하지 않는 기본 하이퍼바이저 또는 컨테이너 기술을 사용하는 옵션도 있습니다 FreeBSD jails. 이 기사의 범위.

관련 정보