가상 머신은 물리적 호스트 머신에서 어떻게 그렇게 적은 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.