
우리 IT 부서에서는 내가 요청한 4개가 아닌 2개의 CPU가 할당된 VM을 만들었습니다. 그 이유는 VM이 4개보다는 2개의 CPU로 더 나은 성능을 발휘하기 때문입니다(그들에 따르면). 그 근거는 VM 하이퍼바이저(이 경우 VMWare)가 CPU를 사용하기 전에 모든 CPU가 사용 가능해질 때까지 기다린다는 것입니다. 따라서 CPU 2개가 아닌 4개를 기다리는 데 더 오랜 시간이 걸립니다.
이 말이 말이 되나요?
답변1
이것은 예전에는 사실이었지만 더 이상 전적으로 사실이 아닙니다.
그들이 말하는 것은엄격한 공동 일정.
무엇보다도 가장 중요한 점은 엄격한 공동 스케줄링 알고리즘에서는 지연되는 vCPU가 존재하면 전체 가상 머신이 공동 중지된다는 점입니다. 완화된 공동 스케줄링 알고리즘에서는 선두 vCPU가 가장 느린 형제 vCPU에 대한 편향을 기반으로 공동 중지해야 하는지 여부를 결정합니다.
지금,만약에호스트에는 스레드가 4개만 있으므로 스레드를 모두 할당하는 것은 어리석은 일입니다.만약에2개의 프로세서와 프로세서당 4개의 스레드가 있습니다.~할 것 같다단일 프로세서의 모든 콘텐츠를 할당하고 싶지 않은 경우 하이퍼바이저는 메모리 액세스 속도를 높이기 위해 vCPU를 동일한 NUMA 노드에 유지해야 하며 전체 소켓을 단일 VM에 할당하면 이 작업이 더 어려워지기 때문입니다. (위 PDF의 12페이지 참조)
따라서 vCPU 수가 더 적은 시나리오가 있습니다.~할 수 있다더 많은 것보다 더 나은 성능을 발휘하지만 항상 100% 사실은 아닙니다.
말씀드린 대로, 게스트당 3개 이상의 vCPU를 할당하는 경우는 거의 없습니다. 모든 사람은 기본적으로 2개를 받고, 작업량이 많은 경우 3개를 받고, SQL Server나 대량 처리 VM 또는 사용자가 많은 터미널 서버 같은 경우에는 4개를 받습니다.
답변2
이는 기본 하이퍼바이저와 이를 실행하는 관리자에 따라 크게 달라집니다. 설명하겠습니다.
- 요청했다는 이유로 CPU 4개를 임의로 제공하는 것은 나쁜 습관입니다. 일반적으로 말하자면, 당신은생각하다4개가 필요합니다. 하지만 리소스 모니터링에 따르면 1개만 필요하다고 합니다.
- 예를 들어 VMware ESXivCPU가 CPU 리소스를 요청할 때 모든 pCPU를 잠가야 함; 그래서 이 하이퍼바이저에서는 성능이 좋지 않습니다. KVM은 ESXi처럼 잠금을 수행하지 않습니다. 기본 커널 스케줄러를 사용하지만 장기적으로는 CPU 경합이 발생할 수 있습니다.
- 4개의 CPU로 처음부터 시스템을 구축하는 경우 실제로는 확장하는 것이 아니라 확장하는 것입니다(특히 VM에서는 나쁜 습관입니다). 오늘날의 최신 클라우드 인프라에 맞게 확장할 수 있도록 현재 작업 중인 모든 것을 어떻게 설계하고 있는지 확인하고 싶을 수도 있습니다.
이것으로부터 무엇을 배울 수 있나요? 항상 최소한의 리소스로 VM을 만들고 필요에 따라 리소스를 늘리세요. 항상 확장하는 대신 규모를 확장하면 어디서나 앱을 실행할 수 있습니다.
하이퍼바이저에서 경험할 수 있는 잠금으로 인해 2개의 CPU가 4개의 CPU보다 빠를 수 있다는 것은 실제로 사실입니다.
답변3
예, 이 진술은 일반적으로 의미가 있습니다. 하지만 정확한 구성과 작업 부하를 테스트해야 합니다. 실제로 CPU를 활용할 수 있다면 더 많은 CPU가 더 나은 경우도 있습니다. 그러나 실제로 병렬 처리량이 많지 않은 경우 더 적은 수의 CPU로 구성된 VM은 CPU 준비 상태 일시 중지로 인한 속도 저하를 방지하므로 약간 더 나은 성능을 발휘하는 경우가 많습니다.
여러 VM에서 vCPU를 줄였고 대부분의 경우 처리량이 향상되는 것을 확인했습니다. 소수의 문제가 악화되어 vCPU 수를 늘려야 했습니다.