Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  File Server 에서 Pool Memory가 부족할 경우 
작성일시 : 2007. 10. 8. 13:48 | 분류 : Windows Server/Kernel

요즘에 시간이 나는 대로 나름 "Windows Internals" 를 열심히 읽고 있습니다.
음음...

그건 그렇고...

자 이벤트 메세지에 풀이 비었다 뭐 이런 메세지가 뜨면서, 보안 탭이 사라지는가 하면 시스템이 굼뜨게 움직입니다... 거의 행 상태...ㅡㅡ;;

이벤트 로그는 아래와 같죠...
사용자 삽입 이미지

보통 File 숫자가 많고 ( 보통 소스를 저장하는 파일 서버 ) 사용량이 많은 경우 발생합니다.
물론 leak 일 가능성도 농후 합니다. (보통 바이러스 백신이나 DRM 툴들이 일으키는 경우가 많습니다.)

어차피 원론적인 해결을 위해서 성능 로그를 수집해서 handle table 과 pool memory를 보면 됩니다만... 전 leak일 가능성을 배제 하고 말씀 드리겠습니다.

------------------------------------------------------------------------------------
File의 object handle은 Kernel 영역 메모리 중 Nonpaged Pool에 저장됩니다.
(내일 중에 올리는 Process 까보기를 참조하시면 됩니다.)

본디 운영체제 (ntoskernel.exe) 도 역시 하나의 Process 입니다.
즉 이말은 자신의 object handle table을 지닌다는 말과 같습니다.

즉 이 file 이라는 object의 handle을 저장할려는데 공간을 모두 사용하게 된거죠.
------------------------------------------------------------------------------------

그런데 보통 PoolMemory는 32Bit 머신의 경우 부팅시 스스로 결정합니다.
일반 적인 경우 다음과 같이 PoolMemory 사이즈가 결정 됩니다.

Windows 2003 SP1의 RAM 크기에 따른 Pool Size
 

RAM        NonPaged   Max Paged Max

0512 MB   125 MB       184 MB

1024 MB   202 MB       168 MB

1536 MB   254 MB       352 MB

2048 MB   252 MB       352 MB


즉 실제 메모리 크기에 맞춰 자동으로 결정하게 됩니다.
즉 어쩔 수 없이 32Bit 운영체제에서는 Pool의 한계를 가질 수 밖에 없습니다.

결론적으로 위와 같이 Pool이 부족하지 않게 하려면 서버의 File 갯수를 정기적으로 점검하여, 미연에 예방 하거나 x64 (64Bit) 운영체제로 업그래이드 하여 Pool Size를 늘리는 수밖에 없습니다.

버전에 따른 Pool Memory 한계

Region                     IA-64      x64         x86

Process Address Space 7152 GB   8192 GB   2 to 3 GB*

Paged Pool               128 GB      128 GB   470 to 650 MB

NonPaged Pool          128 GB      128 GB   256 MB

|