NUMA 하드웨어 상에서의 IIS 8.0 멀티코어 스케일링

등록일시: 2012-07-06 15:27,  수정일시: 2013-10-06 16:19
조회수: 7,204
이 문서는 IIS 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.
본 문서에서는 NUMA 하드웨어 상에서의 윈도우 서버 8의 IIS 멀티코어 스케일링 기능에 관해서 살펴봅니다. 다만, 본문의 원문은 IIS 8이 정식으로 배포되기 이전인 2012년 2월 29일에 공개된 문서로, 일부 내용에 변경사항이 존재할 수 있습니다. 본 문서는 2012년 7월 현재, IIS 8을 미리 살펴보기 위한 사전정보일 뿐입니다.

호환성

버전 비고
IIS 8.0 NUMA 멀티코어 스케일링은 IIS 8.0에서 도입되었습니다.
IIS 7.5 NUMA 멀티코어 스케일링은 IIS 7.5에서는 지원되지 않습니다.
IIS 7.0 NUMA 멀티코어 스케일링은 IIS 7.0에서는 지원되지 않습니다.

내용

문제점

일반적으로 코어의 갯수가 늘어나면 성능도 향상된다고 말할 수 있습니다. 그러나, 코어의 갯수가 점차 늘어남에 따라 성능 저하가 발생하는 시점이 발생하게 되는데, 그 이유는 메모리 동기화에 대한 비용이 추가된 코어에 따른 이점을 상쇄하기 때문입니다. IIS 8.0은 프로세스를 지능적으로 배분하고 친화성을 지정하여 NUMA(Non-Uniform-Memory-Access) 하드웨어에서 발생하는 이 문제점을 해결했습니다. *

* NUMA라는 용어는 하드웨어에 대한 지식이 부족한 저에게는 무척 낯선 개념입니다. 더 자세한 정보는 다음의 문서들을 참고하시기 바랍니다.

해결방법

윈도우 서버 8의 인터넷 정보 서비스(IIS, Internet Information Services)는 NUMA를 인식해서 IT 관리자를 위한 최적의 구성을 제공해줍니다. 다음 절에서는 NUMA 하드웨어 상에서 최상의 IIS 8.0 성능을 얻기 위한 다양한 구성 옵션을 살펴봅니다.

IIS는 다음과 같이 워크로드를 분배하기 위한 두 가지 방법을 지원합니다:

  1. 하나의 응용 프로그램 풀에서 여러 개의 작업자 프로세스를 실행합니다 (예. 웹 가든).
    기본적으로 응용 프로그램 풀은 하나의 작업자 프로세스를 실행하도록 구성됩니다. 이 모드를 사용해서 최고의 성능을 얻으려면 존재하는 NUMA 노드의 갯수와 동일한 갯수의 작업자 프로세스를 실행해서 작업자 프로세스와 NUMA 노드 사이에 1:1의 친화성을 갖도록 만들어야 합니다. 그러려면, 응용 프로그램 풀의 "Maximum Worker Processes" 설정을 0으로 설정하면 됩니다. 이렇게 설정하면, IIS가 하드웨어에서 사용 가능한 NUMA 노드의 갯수를 파악하여 동일한 갯수의 작업자 프로세스를 시작시킵니다.
  2. 단일 워크로드/사이트를 여러 개의 응용 프로그램 풀에서 실행합니다.
    이 구성을 사용하면 워크로드/사이트는 여러 개의 응용 프로그램 풀로 분할되어 실행됩니다. 가령, 사이트가 별도의 응용 프로그램 풀에서 실행되도록 구성된 여러 응용 프로그램으로 이루어질 수 있습니다. 사실상, 이 구성을 사용하면 워크로드/사이트에 대해서 여러 개의 IIS 작업자 프로세스가 실행되고, 최상의 성능을 위해 IIS가 지능적으로 프로세스를 배분하고 친화성을 부여합니다.

더불어, IIS 작업자 프로세스를 시작할 때, IIS 8.0이 최적의 NUMA 노드를 알아내기 위한 두 가지 다른 방법이 존재합니다.

  1. 사용 가능한 메모리가 가장 많은 노드 (기본)
    이 접근방식의 기본 아이디어는 사용 가능한 메모리가 가장 많은 NUMA 노드가 추가적인 IIS 작업자 프로세스를 시작하기에 가장 적절한 노드일 것이라는 생각입니다. IIS는 각각의 NUMA 노드들이 사용하는 메모리의 양을 파악하고 있으며 이 정보를 IIS 작업자 프로세스의 부하를 분산하기 위해서 활용합니다.
  2. Windows
    IIS가 결정을 윈도우 운영체제에 위임하도록 구성할 수도 있습니다. 윈도우 운영체제는 라운드-로빈 방식을 사용합니다.

마지막으로 IIS 작업자 프로세스에서 NUMA 노드에 쓰레드의 친화성을 지정할 수 있는 두 가지 방법이 존재합니다.

  1. 약한 친화성 (기본)
    약한 친화성 방식에서는 다른 NUMA 노드에 여유가 있는 경우, IIS 작업자 프로세스에서 친화성이 맺어지지 않은 NUMA 노드에 쓰레드를 배정할 수 있습니다. 이 접근방식은 전체 시스템의 사용 가능한 모든 리소스들을 극대화하는데 도움이 됩니다.
  2. 강한 친화성
    강한 친화성 방식에서는 시스템 상의 다른 NUMA 노드들의 부하가 어떤 상태인지는 전혀 상관하지 않고, IIS 작업자 프로스세의 모든 쓰레드들이 처음 시작될 때 선택된 NUMA 노드에 배정됩니다.

단계별 지침

전제조건:

  • IIS가 설치된 윈도우 서버 8이 필요합니다.
  • IIS 프로세스 모델은 IIS 응용 프로그램 풀의 구성 중 일부 입니다. 특별하게 서버 관리자에서 별도로 설치해야 할 IIS의 기능은 없습니다.

알려진 버그에 대한 해결방법:

  • 현재 이 기능에 대한 알려진 버그는 존재하지 않습니다.

구성 방법:

  1. IIS(인터넷 정보 서비스) 관리자를 실행합니다.
  2. 좌측 연결 패인에서 응용 프로그램 풀 노드를 선택합니다:
  3. 응용 프로그램 풀을 선택합니다:
  4. 작업(Actions) 패인에서 고급 설정(Advanced Settings)을 선택합니다:
  5. Process Model 그룹에서 Maximum Worker Processes 항목을 찾습니다.
  6. 값을 0으로 설정합니다.

최적의 NUMA 노드를 선택하기 위한 로직 설정 항목과 친화성 형식 설정 항목도 고급 설정(Advanced Settings)에서 설정할 수 있습니다. 다만, 이 항목들은 IIS가 NUMA 하드웨어에서 실행되는 경우에만 나타납니다.

시나리오

NUMA 하드웨어에서 윈도우 서버 8로 업그레이드를 하기 전과 후에 각각 성능 테스트를 수행해보시기 바랍니다. 성능 결과를 비교해보면 향상된 결과를 확인하실 수 있을 것입니다.

요약

본문에서는 NUMA 하드웨어 상에서의 윈도우 서버 8의 IIS 멀티코어 스케일링을 살펴봤습니다.