본문 바로가기

Windows Platform

Windows server 2003 / paged pool / Max /164M

특정 서버의 paged pool Max 160M 정도 인데 이 값이 기본 적으로 터미널 서버 가 설치 되어 있어도 256M정도로 할당 되어야 하는데 약 164M만 할당 되는 경우가 있습니다. (참고: Windows server 커널 메모리 )

바로 hot-plug(=hot-add) memory 가 설치되어 있기 때문입니다.

Windows Server 2003 Kernel Version 3790 (Service Pack 2) MP (4 procs) Free x86 compatible

Product: Server, suite: Enterprise TerminalServer

Built by: 3790.srv03_sp2_gdr.090319-1204

Kernel base = 0x80800000 PsLoadedModuleList = 0x808a6ea8

Physical Memory:     4192565 (  16770260 Kb)

PagedPool Usage:       33080 (    132320 Kb)

PagedPool Maximum:     41984 (    167936 Kb)

[CASE STUDY]

Why do we have around 164 MB paged pool MAX instead of 249 MB?

Windows Server 2003 Kernel Version 3790 (Service Pack 2) MP (4 procs) Free x86 compatible

Product: Server, suite: Enterprise TerminalServer

Built by: 3790.srv03_sp2_gdr.090319-1204

Kernel base = 0x80800000 PsLoadedModuleList = 0x808a6ea8

Physical Memory:     4192565 (  16770260 Kb) <--- around 16 GB(15.99 GB)

Free System PTEs:     103914 (    415656 Kb)

NonPagedPool Usage:    32809 (    131236 Kb)

NonPagedPool Max:      65532 (    262128 Kb) <--- around 256 MB

PagedPool Usage:       33080 (    132320 Kb)

PagedPool Maximum:     41984 (    167936 Kb) <--- around 164 MB

Kernel Full Dump, Intel x86, 32-bit Addresses, PAE=ON, 3GB=off.

 

 

When I have debugged this type of thing in the past, one cause has been that one of the machines has hot-add memory enabled in the SRAT (this is different from the DynamicMemory regkey but results in the same issue) - you can check this by dumping nt!MxPfnAllocation on machine.

 

3: kd> x hal!*hotplug*

80a72e50          hal!HalpMaxHotPlugMemoryAddress = union _LARGE_INTEGER 0x10`00000000

80a617d6          hal!HalpGetHotPlugMemoryInfo (struct _LOADER_PARAMETER_BLOCK *)

 

3: kd> ? 0x10`00000000

Evaluate expression: 68719476736 = 00000010`00000000

 

3: kd> x nt!MxPfnAllocation

808a66e8          nt!MxPfnAllocation = 0x1c004

 

It seems that hot plug memory (=hot add memory) is enabled based on the HAL global variable.

 

It's almost equal to nt!MxPfnAllocation.

 

0: kd> x nt!MxPfnAllocation

808a66e8 nt!MxPfnAllocation = 0x1c004


감사합니다.^^