21
Windows Server 2008 R2 의 의의의 의의 ~ 의의의 의의 의의의의의 의의의의 의 Microsoft Visual C++ MVP 마마마마 마마마마마마 Server Programmer 마마마

Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

  • Upload
    -

  • View
    1.228

  • Download
    2

Embed Size (px)

DESCRIPTION

사내 스터디

Citation preview

Page 1: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

Windows Server 2008 R2 의 새로운 기능~ 온라인 서버 개발자로서 흥미로운 것

Microsoft Visual C++ MVP마이에트 엔터테이먼트 Server Programmer

최흥배

Page 2: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

• Windows 7 과 같은 커널 사용

• 64 bit 만 지원 ( Windows 7 은 32 비트도 지원 )

• 최대 256 개의 논리 프로세서 지원

• 새로운 스레드 스케쥴링 ( Windows 7 포함 . 단 32비트는 안됨 )

• 멀티 코어 , 매니 코어에서 보다 더 효율적으로 활용

• UMS ( User Mode Scheduler ) 지원

• NUMA 지원

• MS 는 Windows 7 부터 병렬 처리 능력을 향상 시키고 있다 .http://jacking.tistory.com/355

Page 3: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

R2 에서 Server Programmer 가 가장 흥미를 가질 만한 기술은…

UMS

NUMA

Page 4: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

OS 의 스레드 모델을 기억하고 있나요 ?

Operationg System 에서 본 적이 있을 겁니다 .

기억나지 않는 분들을 위해 잠시 설명하겠습니다 . ^^

Page 5: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

Thread

Thread

Thread

Thread

Kernel Thread

다 - 대 - 일 ( Many-to-One) 모델

Page 6: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

Thread

Thread

Thread

Thread

Kernel Thread

Kernel Thread

Kernel Thread

Kernel Thread

일 - 대 - 일 ( One-to-One) 모델

Windows, OS/2

Page 7: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

Thread

Thread

Thread

Thread

Kernel Thread

다 - 대 - 다 ( Many-to-Many) 모델

Kernel Thread

솔라리스 , IRIX, Digital Unix

Page 8: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

UMS( User Mode Scheduler )

Page 9: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

유저 모드 스레드

커널 모드 스레드

CPU 이용 시에 I/O 조작 , heap 할당 등

Block

Page 10: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

• 이런 문제를 해결하기 위해 UMS 지원 .

• UMS 는 복수의 유저 모드 스레드와 대응하는 복수의 커널 모드 스레드 관리 .

Page 11: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

실행 중인 코어에서 Block 가 발생하면 커널 모드에서 그 내용을 검지하여 대기 중의 다른 스레드를 실행 .

유저 모드 스레드

커널 모드 스레드유저 모드 스레드

Block

Page 12: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

UMS 에서는 시스템 콜이 호출되는 경우에만 대응하는 커널 스레드의 컨텍스트를 변경한다 .

즉 유저 모드 스레드가 변경될 때마다 커널 모드 스레드가 변경 되지 않는다 .

유저 모드 스레드

Call

커널 모드 1

커널 모드 2

Page 13: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

대기 중인 스레드의 커널 모드에서의 Block이 풀리면

대응하는 유저 모드 스레드는 Completion List 에 등록되어

코어에서 실행 중인 스레드가 종료하는 것을 기다린 후 다시 실행한다 .

Page 14: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

NUMA( Non-Uniform Memory Ac-

cess )

Page 15: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

• 복수의 프로세서가 메모리 , 디스크에 접근하면 Bus 등에 경합이 발생 .

• 모든 CPU 가 동일의 물리 메모리에 접근하면 병렬로 프로세서가 동작하여도 메모리 접근에서 블러킹 이 빈번하게 발생 .

• 어느 정도 레벨까지는 코어 수에 따라서 선형적인 성능향상이 기대되지만 최종적으로는 병목이 발생하여 성능향상이 멈춤 .

Page 16: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것
Page 17: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

• R2 의 커널은 NUMA 를 강하게 의식하여 설계 .

• CPU 의 “그룹화“ 개념을 사용하여 이런 상황을 OS 도 일체화 하여 경감시킨다 .

Page 18: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

• R2 에서는 그룹화는 커널에 의해 결정 .

• 하나의 논리 프로세서는 꼭 하나의 그룹에 속한다 .

• 동일 코어 중의 프로세서 , 동일 물리 프로세서 내의 코어 , 물리적으로 가까운 논리 프로세서

Page 19: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것

• R2 의 기본 동작으로는 단일 스레드 (Windows 의 스레드 ) 는 꼭 단일 그룹을 대상으로 동작하고 , 단일 프로세스 (Windows 의 프로세스 ) 는 64 비트 어피니티를 사용한 복수 그룹에 할당 되어 동작한다 .

• NUMA 시스템 API 를 사용하여 개발자가 어피니티를 취득하여 설정할 수 있다 .

http://www.microsoft.com/whdc/system/Sysinternals/MoreThan64proc.mspx

Page 21: Windows Server 2008 R2의 새로운 기능 ~ 온라인 서버 개발자로서 흥미로운 것