Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  MAXWorkItems 란? 
작성일시 : 2008. 2. 11. 11:36 | 분류 : Windows Server/Kernel

얼마전 이전 포스트에서 (http://maystyle.tistory.com/256)에서 MAXWorkItem 을 다룬적이 있습니다.
본 포스트를 통해서 확실하게 Server 서비스의 역활과 MAXWorkItem을 짚어 보고자 합니다.
이번 포스트는 특별히 왜? 라는 질문으로 시작하고 끝내보고자 합니다...^^ ~~~
그럼 "따라 와~~~"

Server Service : 파일, 인쇄, 명명된 파이프 를 통해 네트워크 통신을 할때 사용되는 서비스입니다.
Server Service는 실제로 통신을 위한 드라이버로 볼 수 있으며 실제로도 Svr.sys 즉 디바이스 드라이버입니다.

그렇다면 MaxWorkItems 란 무엇일까요?
정확하게 말하자면 Maximum number of receive buffer 입니다. 즉 서버 서비스가 처리 할 수 있는 최대 작업량이라고 봐도 무방합니다.

그렇다면 해당 수치는 어떻게 결정이 될까요?
기본적으로는 Windows에서 자동으로 계산하여 설정하게 됩니다.

- 계산식 (정확한지 검증해야 해야 할 것 같습니다. 제가 수식대로 계산해봤는데 좀 다르네요.)

(4*(MB*SMBServerPerfSetting)*OSVersion/1)*(#Processors)

where:
MB = Megabytes RAM on the server
SMBServerPerfSetting = .5 if "Minimize Memory Used"
SMBServerPerfSetting = 1 if "Balance"
SMBServerPerfSetting = 2 if "Maximize Throughput for File Sharing"
OSVersion = 2 if running NTServer with > 16MB RAM
#Processors = is the number of processors in the system

For example a server with one processor that is configured for Maximum Throughput for File Sharing, the calculations for and 24 MB and 56 MB of RAM are respectively:
(4 * ( 24 * 2 ) * 2 / 1) * 1 = 384
(4 * ( 56 * 2 ) * 2 / 1) * 1 = 896

그런데 왜! 이 값이 증가하게 되는 걸까요?

본디 Windows에서는 최적의 값을 갖도록 설정되어 있으나, 해당 큐가 다 차게 되면 큐를 초기화 하는 작업을 해야하고, 실제 네트워크를 빈번하게 사용하는 머신일 경우 분명 해당 큐가 모두 차는 현상이 발생할 수 있을 것입니다. 그런데 이 초기화 작업이 눈에 띄는 극심한 성능 저하를 일으킨다고 하네요. 그래서 특정 프로그램의 경우 임의로 해당 값을 증가 시키는 것이죠.

그런데 왜! 증가된 값이 문제가 되죠?
이 큐는 커널의 Nonpaged Pool에 위치하게 됩니다. 이 Nonpaged Pool은 다양한 녀석들이 공유하는 공간으로 Work Item이 많다는 애기는 네트워크 관련 리소스들을 많이 사용한다는 것이고, 이때는 분명 각종 커널 관련 서비스들이 Nonpaged Pool을 많이 사용하고 있을 것입니다. 그런대!!! 이때 svr.sys의  MAXWorkITEM이 크게 설정되어 있어 해당 큐들로 인해서 이 많은 리소스를 사용하는 한가지 원인을 제공하게 되는 것이죠! 이로인한 Nonpaged Pool 부족 현상...ㅜㅜ
이로 인해서 우리의 귀엽고 이쁜 Windows 서버는 기여다니게 되는 겁니다...ㅋ

|