류짱:Beyond MySelf

Windows Server 2003 운영체제에서는 시스템 시작 시 커널 리소스(paged pool, Nonpaged pool)서버의 환경(PAE, 3GB 옵션등)에 따라 135M~ 470M까지 할당 되었습니다.
http://ryuchan.kr/16


Nonpaged pool Paged pool 할당 값이 고정 됨으로써 유연하지 못하게 커널 리소스가 할당 되고 비 효율적으로 리소스가 운영 되어
Windows Server 2008 에서는 Limit을 제거하고 동적으로 메모리 공간을 조절할 수 있도록 하였습니다그래서 Windows server 2008 x86에서 최대 각 각 1.5G(Nonpaged pool) 2G(paged pool) 커널 리소스를 사용 할 수 있습니다.

해당 기능은 Default입니다. 즉 기본적으로 Windows server 2008 x86환경의 시스템은 dynamic kernel addressing을 사용 한 다는 것입니다.

그러나  큰 메모리를 사용하는 어플리케이션들이 실행되는 환경이라면 동적 메모리 할당 기능으로 인해 커널 메모리 단편화가 발생 되어 시스템에 hang 증상이나 메모리 부족 오류가 발생 할 수 있으므로 그럴 경우에는 아래와 같이 커널 메모리의 값을 변경 하시면 됩니다.
http://ryuchan.kr/226

Windows Server 2008 에서  기본적으로  로컬 커널 디버깅을 이용하여 커널 리소스를 확인 할 수 없습니다만 Livekd.exe를 이용하면 가능합니다.

서버에 Windows debugging 툴을 설치 한 후 Livekd.exe를 다운 받아 livekd.exe 파일을  c:\program files\Debugging Tools for Windows  폴더에 copy합니다.
그 후 명령프롬프트를 관리자 권한으로 실행 후 아래의 명령어를 실행 합니다.
livekd.exe -kl -y srv*symbols*http://msdl.microsoft.com/download/symbols
심볼이 로드 되고 kd> 화면이 보이면 !vm 1 입력하면 커널 리소스를 확인 할 수 있습니다.

Windows Vista 커널 속으로: 2

http://preview.library.microsoft.com/ko-KR/magazine/cc162480.aspx

동적 커널 주소 공간

Windows Windows용 응용 프로그램은 32비트 프로세서의 주소 공간 한계에 직면했습니다. , Windows 커널은 기본적으로 2GB 또는 전체 32비트 가상 주소 공간의 절반으로 제한되며 나머지 절반은 CPU에서 현재 실행되고 있는 스레드가 속한 프로세스에 사용하도록 예약됩니다.
커널은 이 절반의 주소 공간에서 자신을 매핑하고, 장치 드라이버, 파일 시스템 캐시, 커널 스택, 세션별 코드 데이터 구조 및 장치 드라이버가 할당하는 비페이징(잠긴 실제 메모리) 버퍼와 페이징 버퍼 모두를 매핑해야 합니다. Windows Vista 이전의 메모리 관리자는 부팅될 때 이러한 여러 용도로 할당할 주소 공간의 크기를 결정했습니다. , 이와 같이 유연하지 못하기 때문에 일부 영역에는 가용 공간이 많이 남고 일부 영역에는 가용 공간이 없는 상황이 발생하기도 합니다. 영역을 모두 사용하게 되면 응용 프로그램 오류가 발생하고 장치 드라이버는 I/O 작업을 마칠 수 없게 됩니다.

32비트 Windows Vista에서는 메모리 관리자가 커널의 주소 공간을 동적으로 관리하여 작업 부하 요구 사항에 따라 공간을 여러 용도에 할당 및 할당 취소합니다. , 장치 드라이버가 더 많은 주소 공간을 요구하면 페이징 버퍼 저장에 사용되는 가상 메모리의 양을 늘릴 수 있으며 드라이버의 요구가 사라지면 가상 메모리의 양을 줄일 수 있습니다. 따라서 Windows Vista는 더 다양한 작업 부하를 처리할 수 있으며, 마찬가지로 향후 발표될 Windows Server® 32비트 버전인 코드명 "Longhorn"에서는 더 많은 동시 터미널 서버 사용자를 처리할 수 있습니다.

물론 64비트 Windows Vista 시스템의 주소 공간에는 현재 실질적으로 아무런 제약이 없으므로 최대값으로 구성하기 위한 별다른 조치는 필요하지 않습니다

 

 

Memory Management, Dynamic Kernel Addressing, Memory Priorities and I/O Handling

http://blogs.technet.com/b/askperf/archive/2008/02/07/ws2008-memory-management-dynamic-kernel-addressing-memory-priorities-and-i-o-handling.aspx

The Memory Manager in Windows Server 2008 has been enhanced to provide better performance, scalability, security, and reliability in the following areas:

             Support for dynamic system address space, including on-demand allocation of system virtual address space and kernel page table pages, and support for very large registries.

             To address this, the Dynamic Kernel Address Space feature, in 32-bit versions of Windows Server 2008, the Memory Manager dynamically manages the kernel's address space, allocating and deallocating space to various uses to meet the needs of the system.  As a result, the amount of virtual memory being used for paged and nonpaged pool, system PTE's and session space will grow and shrink based on system activity.  Thus, the need for manual tuning is reduced given the scaling improvements built into the operating system.

 

 

감사합니다.

Comment 0