Windows의 RAM, 가상 메모리, 페이지 파일 및 메모리 관리

적용 대상: Windows 7 Service Pack 1, Windows Server 2012 R2
원래 KB 번호: 2160852

요약

이 문서에는 32비트 버전의 Windows에서 가상 메모리 구현에 대한 기본 정보가 포함되어 있습니다.

Windows와 같은 최신 운영 체제에서 애플리케이션 및 많은 시스템 프로세스는 항상 가상 메모리 주소를 사용하여 메모리를 참조합니다. 가상 메모리 주소는 하드웨어에서 실제(RAM) 주소로 자동으로 변환됩니다. 운영 체제 커널의 핵심 부분만 이 주소 변환을 무시하고 실제 메모리 주소를 직접 사용합니다.

실행 중인 모든 프로세스에 필요한 메모리가 시스템에 설치된 RAM 볼륨을 초과하지 않는 경우에도 가상 메모리는 항상 사용됩니다.

프로세스 및 주소 공간

32비트 버전의 Windows에서 실행되는 모든 프로세스(예: 애플리케이션 실행 파일)에는 컴퓨터에 설치된 RAM 양에 관계없이 0에서 4,294,967,295(2*32-1 = 4GB)에 이르는 가상 메모리 주소( 가상 주소 공간)가 할당됩니다.

기본 Windows 구성에서 이 가상 주소 공간의 2GB는 각 프로세스의 프라이빗 사용을 위해 지정되고 다른 2GB는 모든 프로세스와 운영 체제 간에 공유됩니다. 일반적으로 애플리케이션(예: 메모장, Word, Excel 및 Acrobat Reader)은 2GB의 개인 주소 공간 중 일부만 사용합니다. 운영 체제는 사용 중인 가상 메모리 페이지에만 RAM 페이지 프레임을 할당합니다.

PAE(물리적 주소 확장)는 실제 메모리(RAM) 주소를 36비트로 확장하는 Intel 32비트 아키텍처의 기능입니다. PAE는 가상 주소 공간의 크기(4GB로 유지됨)를 변경하지 않고 프로세서에서 처리할 수 있는 실제 RAM의 볼륨만 변경합니다.

프로세스에서 실행되는 코드에서 사용하는 32비트 가상 메모리 주소와 36비트 RAM 주소 간의 변환은 운영 체제에서 유지 관리하는 번역 테이블에 따라 컴퓨터 하드웨어에서 자동으로 투명하게 처리됩니다. 모든 가상 메모리 페이지(32비트 주소)는 실제 RAM 페이지(36비트 주소)와 연결할 수 있습니다.

다음 목록에서는 다양한 Windows 버전 및 버전이 지원하는 RAM의 양(2010년 5월 현재)을 설명합니다.

Windows 버전 RAM
Windows NT 4.0 4 GB
Windows 2000 Professional 4 GB
Windows 2000 Standard Server 4 GB
Windows 2000 Advanced Server 8GB
Windows 2000 Datacenter Server 32GB
Windows XP Professional 4 GB
Windows Server 2003 Web Edition 2GB
Windows Server 2003 Standard Edition 4 GB
Windows Server 2003 Enterprise Edition 32GB
Windows Server 2003 Datacenter Edition 64GB
Windows Vista 4 GB
Windows Server 2008 Standard 4 GB
Windows Server 2008 Enterprise 64GB
Windows Server 2008 Datacenter 64GB
Windows 7 4 GB

페이지 파일

RAM은 제한된 리소스인 반면, 대부분의 실용적인 목적으로 가상 메모리는 무제한입니다. 많은 프로세스가 있을 수 있으며 각 프로세스에는 2GB의 프라이빗 가상 주소 공간이 있습니다. 모든 기존 프로세스에서 사용하는 메모리가 사용 가능한 RAM을 초과하면 운영 체제는 하나 이상의 가상 주소 공간 페이지(4KB 조각)를 컴퓨터의 하드 디스크로 이동합니다. 이렇게 하면 다른 용도로 해당 RAM 프레임이 해제됩니다. Windows 시스템에서 페이 징된 페이지는 파티션의 루트에 있는 하나 이상의 파일(Pagefile.sys 파일)에 저장됩니다. 각 디스크 파티션에 이러한 파일이 하나 있을 수 있습니다. 페이지 파일의 위치와 크기는 시스템 속성 에서 구성됩니다( 고급을 클릭하고 성능을 클릭한 다음 설정 단추를 클릭).

사용자는 페이지 파일을 얼마나 크게 만들어야 하는지 자주 묻습니다. 설치된 RAM의 양과 워크로드에 필요한 가상 메모리 양에 따라 달라지므로 이 질문에 대한 단일 답변은 없습니다. 사용 가능한 다른 정보가 없는 경우 설치된 RAM의 1.5배에 대한 일반적인 권장 사항이 좋은 시작점입니다. 서버 시스템에서는 일반적으로 부족하지 않고 페이지 파일이 사용되지 않도록 충분한 RAM을 사용하려고 합니다. 이러한 시스템에서는 큰 페이지 파일을 유지 관리하는 데 유용한 목적이 없을 수 있습니다. 반면에 디스크 공간이 충분한 경우 큰 페이지 파일(예: 설치된 RAM의 1.5배)을 유지 관리해도 문제가 발생하지 않으며, 이로 인해 페이지 파일의 크기를 걱정할 필요가 없습니다.

성능, 아키텍처 제한 및 RAM

모든 컴퓨터 시스템에서 부하가 증가함에 따라(사용자 수, 작업량) 성능은 감소하지만 비선형 방식으로 감소합니다. 특정 시점을 넘어 부하 또는 수요가 증가하면 성능이 크게 저하됩니다. 즉, 일부 리소스가 매우 부족하여 병목 상태가 되었습니다.

어떤 시점에서는 공급이 부족한 리소스를 늘릴 수 없습니다. 즉 , 아키텍처 제한 에 도달했습니다. Windows에서 자주 보고되는 아키텍처 제한은 다음과 같습니다.

  • 시스템에 대한 2GB의 공유 가상 주소 공간(커널)
  • 프로세스당 2GB의 프라이빗 가상 주소 공간(사용자 모드)
  • 660MB의 시스템 PTE 스토리지(Windows Server 2003 이하)
  • 470MB의 페이징 풀 스토리지(Windows Server 2003 이하)
  • 256MB의 비페이지 풀 스토리지(Windows Server 2003 이하)

이는 특히 Windows Server 2003에 적용되지만 Windows XP 및 Windows 2000에도 적용될 수 있습니다. 그러나 Windows Vista, Windows Server 2008 및 Windows 7은 이러한 아키텍처 제한을 모두 공유하지는 않습니다. 사용자 및 커널 메모리(여기서 숫자 1과 2)에 대한 제한은 동일하지만 PTE 및 다양한 메모리 풀과 같은 커널 리소스는 동적입니다. 이 새로운 기능을 사용하면 페이징된 메모리와 페이지가 아닌 메모리를 모두 사용할 수 있습니다. 또한 이를 통해 PTE 및 세션 풀이 앞에서 설명한 한도를 초과하여 전체 커널이 소진되는 지점까지 확장할 수 있습니다.

다음과 같이 자주 찾은 문과 따옴표가 붙은 문:

터미널 서버를 사용하면 4GB RAM이 사용되기 전에 2GB의 공유 주소 공간이 완전히 사용됩니다.

경우에 따라 마찬가지일 수 있습니다. 그러나 특정 시스템에 적용되는지 여부를 확인하기 위해 시스템을 모니터링해야 합니다. 경우에 따라 이러한 설명은 특정 Windows NT 4.0 또는 Windows 2000 환경의 결론이며 Windows Server 2003에 반드시 적용되지는 않습니다. 실제로 이러한 아키텍처 제한에 도달할 확률을 줄이기 위해 Windows Server 2003을 크게 변경했습니다. 예를 들어 커널에 있던 일부 프로세스는 공유 가상 주소 공간에서 사용되는 메모리를 줄이기 위해 커널이 아닌 프로세스로 이동되었습니다.

RAM 및 가상 메모리 사용 모니터링

성능 모니터 시스템 성능을 모니터링하고 병목 상태의 위치를 식별하기 위한 원칙 도구입니다. 성능 모니터 시작하려면 시작을 클릭하고 제어판 클릭한 다음 관리 도구를 클릭한 다음 성능 모니터 두 번 클릭합니다. 다음은 몇 가지 중요한 카운터와 이러한 카운터가 알려주는 내용에 대한 요약입니다.

  • 메모리, 커밋된 바이트: 이 카운터는 가상 메모리에 대한 수요의 측정값입니다.

    프로세스에 의해 할당된 바이트 수와 운영 체제가 페이지 파일(또는 둘 다)에서 RAM 페이지 프레임 또는 페이지 슬롯을 커밋한 바이트 수를 보여 줍니다. 커밋된 바이트가 사용 가능한 RAM보다 커지면 페이징이 증가하고 사용 중인 페이지 파일 크기도 증가합니다. 어떤 시점에서 페이징 작업은 성능에 크게 영향을 미치기 시작합니다.

  • 프로세스, 작업 집합, _Total: 이 카운터는 현재 사용 중인 가상 메모리의 측정값입니다.

    이 카운터는 모든 프로세스에 사용되는 가상 메모리가 RAM에 있도록 필요한 RAM의 양을 보여줍니다. 이 값은 항상 Windows에서 사용되는 페이지 크기인 4,096의 배수입니다. 사용 가능한 RAM을 초과하여 가상 메모리에 대한 수요가 증가함에 따라 운영 체제는 사용 가능한 RAM 사용을 최적화하고 페이징을 최소화하기 위해 프로세스의 가상 메모리가 작업 집합에 있는 양을 조정합니다.

  • 페이징 파일, 사용 중인 %pagefile: 이 카운터는 실제로 사용되는 페이지 파일의 양을 측정한 것입니다.

    이 카운터를 사용하여 페이지 파일이 적절한 크기인지 여부를 확인합니다. 이 카운터가 100에 도달하면 페이지 파일이 가득 차서 작업이 중지됩니다. 워크로드의 변동성에 따라 페이지 파일이 50~075% 이상 사용되지 않도록 충분히 커지길 원할 것입니다. 페이지 파일의 대부분을 사용하는 경우 서로 다른 실제 디스크에 둘 이상의 페이지 파일이 있으면 성능이 향상될 수 있습니다.

  • Memory, Pages/Sec: 이 카운터는 가장 오해의 소지가 있는 측정값 중 하나입니다.

    이 카운터에 대한 높은 값이 반드시 성능 병목 현상이 RAM 부족에서 비롯된다는 것을 의미하지는 않습니다. 운영 체제는 메모리 과다 약정으로 인해 페이지를 교환하는 것 이외의 용도로 페이징 시스템을 사용합니다.

  • 메모리, Pages Output/Sec: 이 카운터는 페이지 파일에 기록된 가상 메모리 페이지 수를 보여 줍니다.

    페이징이 성능 병목 상태인 것으로 의심되는 경우 모니터링하기에 가장 좋은 카운터입니다. 커밋된 바이트가 설치된 RAM보다 크더라도 Pages Output/sec가 대부분의 시간 동안 낮거나 0이면 RAM 부족으로 인한 심각한 성능 문제가 없습니다.

  • 메모리, 캐시 바이트, 메모리, 풀 비페이지 바이트, 메모리, 풀 페이징 바이트, 메모리, 시스템 코드 총 바이트, 메모리, 시스템 드라이버 총 바이트:

    이러한 카운터의 합은 4GB 가상 주소 공간의 공유 부분 중 2GB가 실제로 사용되는 정도를 측정한 것입니다. 이를 사용하여 시스템이 앞에서 설명한 아키텍처 제한 중 하나에 도달하고 있는지 여부를 확인합니다.

  • 메모리, 사용 가능한 MBytes: 이 카운터는 가상 메모리(새 할당 또는 페이지 파일에서 페이지 복원)에 대한 요구를 충족하는 데 사용할 수 있는 RAM의 양을 측정합니다.

    RAM이 부족한 경우(예: 커밋된 바이트가 설치된 RAM보다 큼) 운영 체제는 현재 사용되지 않는 가상 메모리 페이지를 페이지 파일에 복사하여 설치된 RAM의 특정 부분을 즉시 사용할 수 있도록 유지하려고 합니다. 따라서 이 카운터는 0에 도달하지 않으며 시스템에 RAM이 부족한지 여부를 나타내는 것은 아닙니다.

참조

주소 창 확장