windows server 2008 r2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것
DESCRIPTION
사내 스터디TRANSCRIPT
Windows Server 2008 R2 의 새로운 기능~ 온라인 서버 개발자로서 흥미로운 것
Microsoft Visual C++ MVP마이에트 엔터테이먼트 Server Programmer
최흥배
• Windows 7 과 같은 커널 사용
• 64 bit 만 지원 ( Windows 7 은 32 비트도 지원 )
• 최대 256 개의 논리 프로세서 지원
• 새로운 스레드 스케쥴링 ( Windows 7 포함 . 단 32비트는 안됨 )
• 멀티 코어 , 매니 코어에서 보다 더 효율적으로 활용
• UMS ( User Mode Scheduler ) 지원
• NUMA 지원
• MS 는 Windows 7 부터 병렬 처리 능력을 향상 시키고 있다 .http://jacking.tistory.com/355
R2 에서 Server Programmer 가 가장 흥미를 가질 만한 기술은…
UMS
NUMA
OS 의 스레드 모델을 기억하고 있나요 ?
Operationg System 에서 본 적이 있을 겁니다 .
기억나지 않는 분들을 위해 잠시 설명하겠습니다 . ^^
Thread
Thread
Thread
Thread
Kernel Thread
다 - 대 - 일 ( Many-to-One) 모델
Thread
Thread
Thread
Thread
Kernel Thread
Kernel Thread
Kernel Thread
Kernel Thread
일 - 대 - 일 ( One-to-One) 모델
Windows, OS/2
Thread
Thread
Thread
Thread
Kernel Thread
다 - 대 - 다 ( Many-to-Many) 모델
Kernel Thread
솔라리스 , IRIX, Digital Unix
UMS( User Mode Scheduler )
유저 모드 스레드
커널 모드 스레드
CPU 이용 시에 I/O 조작 , heap 할당 등
Block
• 이런 문제를 해결하기 위해 UMS 지원 .
• UMS 는 복수의 유저 모드 스레드와 대응하는 복수의 커널 모드 스레드 관리 .
실행 중인 코어에서 Block 가 발생하면 커널 모드에서 그 내용을 검지하여 대기 중의 다른 스레드를 실행 .
유저 모드 스레드
커널 모드 스레드유저 모드 스레드
Block
UMS 에서는 시스템 콜이 호출되는 경우에만 대응하는 커널 스레드의 컨텍스트를 변경한다 .
즉 유저 모드 스레드가 변경될 때마다 커널 모드 스레드가 변경 되지 않는다 .
유저 모드 스레드
Call
커널 모드 1
커널 모드 2
대기 중인 스레드의 커널 모드에서의 Block이 풀리면
대응하는 유저 모드 스레드는 Completion List 에 등록되어
코어에서 실행 중인 스레드가 종료하는 것을 기다린 후 다시 실행한다 .
NUMA( Non-Uniform Memory Ac-
cess )
• 복수의 프로세서가 메모리 , 디스크에 접근하면 Bus 등에 경합이 발생 .
• 모든 CPU 가 동일의 물리 메모리에 접근하면 병렬로 프로세서가 동작하여도 메모리 접근에서 블러킹 이 빈번하게 발생 .
• 어느 정도 레벨까지는 코어 수에 따라서 선형적인 성능향상이 기대되지만 최종적으로는 병목이 발생하여 성능향상이 멈춤 .
• R2 의 커널은 NUMA 를 강하게 의식하여 설계 .
• CPU 의 “그룹화“ 개념을 사용하여 이런 상황을 OS 도 일체화 하여 경감시킨다 .
• R2 에서는 그룹화는 커널에 의해 결정 .
• 하나의 논리 프로세서는 꼭 하나의 그룹에 속한다 .
• 동일 코어 중의 프로세서 , 동일 물리 프로세서 내의 코어 , 물리적으로 가까운 논리 프로세서
• R2 의 기본 동작으로는 단일 스레드 (Windows 의 스레드 ) 는 꼭 단일 그룹을 대상으로 동작하고 , 단일 프로세스 (Windows 의 프로세스 ) 는 64 비트 어피니티를 사용한 복수 그룹에 할당 되어 동작한다 .
• NUMA 시스템 API 를 사용하여 개발자가 어피니티를 취득하여 설정할 수 있다 .
http://www.microsoft.com/whdc/system/Sysinternals/MoreThan64proc.mspx
참고 url
http://blogs.msdn.com/tsmatsuz/archive/2009/03/27/windows-server-2008-r2-and-windows-7-cpu-architecture.aspx