류짱:Beyond MySelf

Windows server 2003 x86과 x64 의 session view space와 session paged pool 사이즈 비교 본문

Microsoft/Windows Platform

Windows server 2003 x86과 x64 의 session view space와 session paged pool 사이즈 비교

リュちゃん 2011. 11. 3. 23:14

Windows server 2003 x86 시스템과 x64 시스템의 session view space와 session paged pool 사이즈는 얼마나 차이가 날까요? 터미널 세션에서 응응 프르그램을 원할하게 실행 하기위해서 이 값들을 임의로 변경 해도 괜찮을 까요?

먼저 x86시스템의 session space 먼저 살펴 보도록 하겠습니다.
Desktop Heap, part 2
http://blogs.msdn.com/b/ntdebugging/archive/2007/07/05/desktop-heap-part-2.aspx


Windows Server 2003 (32-bit)


48 MB = SessionViewSize (default registry value)
20 MB = SessionViewSize (if no registry value is defined; this is the default for Terminal Servers)
3072 KB = Interactive desktop heap size (defined in the registry, SharedSection 2nd value)
512 KB = Non-interactive desktop heap size (defined in the registry, SharedSection 3nd value)
128 KB = Winlogon desktop heap size
64 KB = Disconnect desktop heap size
 
Windows Server 2003 booted with 3GB (32-bit)
 
20 MB = SessionViewSize (registry value has no effect)
3072 KB = Interactive desktop heap size (defined in the registry, SharedSection 2nd value)
512 KB = Non-interactive desktop heap size (defined in the registry, SharedSection 3nd value)
128 KB = Winlogon desktop heap size
64 KB = Disconnect desktop heap size

 

32bit 운영체제에서는 커널 리소스의 한계 때문에 Session view space와 Session paged pool의 크기 또한 최대 값이 지정 되어 있으며 그 값을 임의로 변경(늘릴 할 경우 커널 리소스의 다른 주소 공간이 감소 되어 시스템에 좋지 않은 영향을 미칠 수 있습니다.

Desktop Heap Overview
http://blogs.msdn.com/b/kocoreinternals/archive/2008/09/04/desktop-heap-overview.aspx

32bit 운영체제에서는 Session view space Session paged pool의 크기의 합은 최대 500MB입니다(이론상), 최대값은 램과 몇 개의 레지스트리 값에 의해 변화합니다. 실제로는 최대값은 대부분 450MB정도 됩니다. 위의 값이 증가할 경우, 그것은 다음, 그것이 어떤 조합이든지 nonpaged pool, system PTEs, System cache, paged pool은 가상 주소 공간 감소되는 결과를 가져올게 될것입니다.

x86 Windows 커널 메모리 영역 (2GB ~ 4GB) 중에는 Session Space라고 하는 영역이 있습니다. 그대로 Windows에서 session 관리하기 위한 프로그램 이미지와 데이터가 모두 부분에 올라가게 됩니다. Session space 크게 아래와 같이 4부분으로 구성되어 있습니다.

- Session Image Space (실행 코드 드라이버 코드가 올라간 부분)

- Session Data Structure

- Session View Space (It includes Desktop Heap)

- Session Paged Pool (터미널 서비스가 설치되면 사용됨)


 

참고로 session view 안에는 font files 와 window/menu/hook 같은 GUI objects 가 생성됩니다. 우리가 눈에 보이는 화면의 윈도우/메뉴 등이 모두 이 영역에 존재하고 기술됩니다.
session pool 안에는 win32k 관련 data structure 가 저장됩니다. 예를들면 WM_COPYDATA send message관련 data structures등이 저장 되고
Window/menu/hook 같은 object 를 만드는 공간은 desktop heap 입니다. 이 desktop heap 은 session view 안에 존재합니다. Session view 안에는 font files 도 존재 할 수 있습니다

그렇다면 Windows Server 2003 x64환경에서는 어떨까요?

x64환경은 x86과 달리 커널 리소스의 사용에 거의 제한이 없기 때문(에 Session pool과 View Size에 대해서 어느 정도 까지는 값을 변경 해도 문제가 없을 듯 합니다만 시스템의 H/W 사양 그리고 실행 되는 어플리케이션들에 따라 틀리 겠지만 적정 사이즈는 많이 고민을 해봐야 할 듯 합니다.

Applications may not run correctly in a Terminal Services environment

http://support.microsoft.com/kb/840342/en-us

In a 64-bit operating system, the default value for the SessionViewSize entry is 104 MB and the default value for the SessionPoolSize entry is 64 MB. The best way to increase the memory allocated to both the SessionViewSize and SessionPoolSize entries is to increase the value of memory allocated by 16 MB, and then see whether the services are available to run applications after you increase the value of memory allocated to the SessionViewSize and SessionPoolSize entries. If not, increase the value of memory allocated by 16 MB and try again

Windows Server 2003 x64 의 Default Session view와 paged pool은 아래와 같습니다.

Desktop Heap, part 2
http://blogs.msdn.com/b/ntdebugging/archive/2007/07/05/desktop-heap-part-2.aspx

Windows Server 2003 (64-bit)

· 104 MB = SessionViewSize (if no registry value is defined; which is the default)

· 20 MB = Interactive desktop heap size (defined in the registry, SharedSection 2nd value)

· 768 KB = Non-interactive desktop heap size (defined in the registry, SharedSection 3nd value)

· 192 KB = Winlogon desktop heap size

· 96 KB = Disconnect desktop heap size

x64시스템의 경우 위에서 참고 한 것 처럼 좋은 그림 파일이 있으면 좋을 텐데.. 구하지 못했습니다. -______-;

그래서 Remote administrator mode(원격 관리 모드)와 application server mode(응용프로그램 모드)의 session paged pool과 session view space를 비교 해 보았습니다.


[Windows Server 2030 x64 / 원격 관리 모드]
Session Paged pool & Session View Space Maximum (Default)

[Windows Server 2030 x64 / 원격 관리 모드]
Session Paged pool & Session View Space Maximum (Registry 변경 후) 

[Windows Server 2003 x64 / 터미널 서버 설치 후 응용 프로그램 모드]
Session Paged pool & Session View Space Maximum (Default)


[Windows Server 2003 x64 / 터미널 서버 설치 후 응용 프로그램 모드]
Session Paged pool & Session View Space Maximum (레지스트리 값 변경 후)

 

[참고 자료]
Applications may not run correctly in a Terminal Services environment
http://support.microsoft.com/kb/840342/en-us

In a 64-bit operating system, the default value for the SessionViewSize entry is 104 MB and the default value for the SessionPoolSize entry is 64 MB. The best way to increase the memory allocated to both the SessionViewSize and SessionPoolSize entries is to increase the value of memory allocated by 16 MB, and then see whether the services are available to run applications after you increase the value of memory allocated to the SessionViewSize and SessionPoolSize entries. If not, increase the value of memory allocated by 16 MB and try again

감사합니다.^^