가상 머신은 물리적 호스트 머신에서 어떻게 그렇게 적은 RAM을 소비 할 수 있습니까?


24

RAM이 2GB 인 Windows XP 컴퓨터에서 VirtualBox를 실행하고 있습니다. 가상 우분투 컴퓨터를 만들고 750MB의 기본 메모리를 할당했습니다.

테스트하기 위해 가상 머신에서 한 번에 20 가지를 실행했습니다. 우분투의 "top"에 따르면, 750 메가의 메모리와 상당한 스왑 공간이 사용되고 있습니다.

그러나 Windows 작업 관리자로 돌아가서 VitrualBox는 45,000K의 메모리 만 사용했습니다. 가상 컴퓨터에 점점 더 많은 작업을 요청함에 따라 VirtualBox 프로세스의 CPU 사용량이 증가했지만 (Windows) 메모리 사용량은 동일하게 유지되었습니다.

750MB의 메모리를 사용하는 가상 시스템은 실제 시스템에서 45MB의 메모리 만 어떻게 소비 할 수 있습니까?

대답은 가상 머신이 실제 메모리를 사용하지 않고 시뮬레이션 된 메모리 (예 : 스왑 공간)를 사용하지만 RAM에서 실행되는 것처럼 빠르다는 느낌입니다.

업데이트 : 제안대로 perfmon을 가지고 놀았습니다. 내가 생각할 수있는 모든 것을 요약해도 여전히 300 메가 미만을 차지하는 것 같습니다 ... 그래서 여전히 미스터리입니다.

Process               VirtualBox     VirtualBox#1     Total
PoolNonpagedBytes     5,840          42,552           48,392
PoolPagedBytes        119,796        166,892          286,688
PrivateBytes          8,884,224      52,719,616       61,603,840
VirtualBytes          75,939,840     161,202,176      237,142,016
Sum                   84,949,700     214,131,236      299,080,936

답변:


7

작업 관리자의 열은 잘못된 수치를 제공 할 수 있습니다. 프로세스 당 정확한 메모리 사용을 위해 perfmon (제어판의 성능 모니터)을 사용하고 "개인 바이트"수치를 볼 수 있습니다.

이것을 표시하려면 perfmon으로 가서 카운터를 추가하려면 클릭하십시오 (나는 Ctrl+ I종류의 사람입니다). "퍼포먼스 개체"는 "프로세스"이며 "개인 바이트"는 카운터 목록에 있습니다. 분명히 오른쪽 목록에서 관련 프로세스를 선택해야합니다.


안녕. 나는 이것을 시도했지만 Private Bytes라는 것을 찾지 못했습니다. 당신은 단계별로 줄 수 있습니까?
dggoldst

추가
Rowland Shaw

고마워, 이것은 매우 도움이됩니다. 질문에 분석을 추가했습니다. 그래도 왜 750에 해당하지 않는지 알 수 없습니다.
dggoldst

매우 이상합니다. PrivateBytes는 VirtualBytes의 하위 집합임을 지적 할 수 있습니다 (가상 바이트는 할당 된 주소 공간의 비율이지만 개인 바이트는 아직 해제되지 않은 메모리입니다-작은 메모리 누수로 메모리 조각화를 얻을 수 있음) 사용 가능한 메모리가 충분하더라도 메모리가 부족하여 응용 프로그램이 종료됩니다). 가상화 드라이버가 메모리를 표시하지 않는 방식으로 메모리를 할당하는 것일 수 있습니다. 메모리가 페이징 아웃에서 디스크로 이동하지 않아야하므로 의미가 있습니다.
Rowland Shaw

테이블에 넣은 4 개의 카운터 중 "PoolNonPagedBytes"만 페이징 할 수없는 가상 메모리의 수이므로 실제 메모리의 양이 사용됩니다. 나머지는 모두 가상입니다. 다른 가상 메모리 크기와 마찬가지로 실제 사용하는 RAM은 거의 항상 훨씬 적습니다. 이는 가상 메모리의 전체 요점 중 하나입니다.
Jamie Hanrahan

5

Linux에서 일부 가상화 솔루션을 사용하는 경우 메모리를 할당하는 방식으로 호스트 커널에 특수 메모리 매핑 파일 ( /proc/kcore특수 파일 과 유사 )로 표시되므로의 출력이 free아닌 캐시 된 수로 계산됩니다 . "중고"카운트.

Windows 환경에서도 비슷한 일이 발생한다고 가정합니다. 45Mb는 VirtualBox의 관리 프로세스에서 사용되며 VM 자체에 할당 된 750은 다른 곳에서 계산됩니다.


0

가상 메모리, 메모리 매핑 파일 또는 이와 유사한 것일 수 있습니다.

작업 관리자에서 다른 열을 표시해 보셨습니까?


0

작업 관리자를 믿지 마십시오. 모든 것을 볼 수는 없습니다.

이 문제는 SQL Server에서 더 잘 볼 수 있습니다. 예를 들어 Sql에서는 작업 관리자에서 정확한 정보를 얻는 방법을 말한 사람을 찾지 못했습니다. 다른 열.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.