Windows 7에서 OS가 사용하는 디스크 처리량과 파일 사이즈, 메모리 사용량 등 리소스가 Vista에 비해 70% 정도 작아짐.

 

OS가 사용하는 리소스가 작아지면 성능이 자체에 큰 영향을 미친다. 특히 OS가 사용하는 워킹 메모리 량이 줄어들어 Windows 7의 성능 향상에 크게 기여하였다.

 

Windows 7에서는 개개의 시스템 프로그램이 내부에서 가지고 있는 데이터 캐쉬를 다시 고쳤다. OS 전체의 캐쉬를 고쳐서 400 항목 이상을 제거. OS가 사용하는 데이터 캐쉬량이 작아졌고, OS 사이즈도 작아졌다.

 

 

워킹셋 개선

Vista에서는 메모리를 '워킹셋'으로 관리. 워킹셋은 각 프로세스마다 메모리를 할당하는 것. 당연 시스템도 워킹셋을 할당하고 있다. Vista의 시스템 워킹셋 내부는 시스템 캐쉬, Paged Pool, 시스템 코드가 하나로 되어 있다.

그래서 Vista에서는 큰 파일을 복사하면 시스템 응답성이 나빠지고, 네트웍에도 이상이 발생한다. 이것은 시스템 워킹셋 내부에 있는 시스템 캐쉬를 모두 소비하여 다른 Paged Pool이나 시스템 코드가 사용할 수 있는 영역을 줄여버려서 발생하는 것이다. 이때 OS의 메모리 매니져는 시스템 캐쉬를 확장하기 위해서 시스템 코드를 점점 메모리에서 HDD의 가상 메모리로 스왑해 간다. 이로 인해서 시스템 전체적으로 성능이 나빠진다.

 

Windows 7에서는 시스템 워킹셋을 시스템 캐쉬, Paged Pool, 시스템 코드로 각 영역으로 분리. 이것에 의해서 위의 예처럼 큰 파일을 복사해도 Paged Pool이나 시스템 코드가 사용하고 있는 영역에 영향을 주지 않는다. 이것에 의해 시스템 코드가 HDD로 스왑 되는 것이 줄어들어 시스템 전체의 성능이 향상 된다.

 

 

페이지 스왑 개선

Windows 7에서는 페이지 스왑이 크게 개선되었다. Vista에서 '사용 중 페이지', '이전 사용한 페이지', '스왑하고 있는 페이지', '사용하지 않는 페이지' 4 종류로 분류. 그리고 이력을 관리하여 이전 사용한 페이지를 메모리 상에 유지.

그러나 이런 기능 때문에 '작은 사이즈의 메모리를 사용하여 바로 처리를 끝내고, 또 메모리를 사용' 이라는 반복 기능을 사용하는 애플리케이션이나 처음에 큰 크기의 메모리를 할당하고 순차처리 하는 애플리케이션 등에서는 바로 페이지 스왑아웃하여 HDD로 보내져서 HDD 접근이 빈번하게 일어나게 되었다.

Windows 7에서는 페이지 이력 기능을 강화하여 페이지 레벨을 올리는 것으로 가능한 많은 페이지를 메모리 상에 유지하여 스왑하지 않도록 한다.

메모리에 많은 페이지를 남기는 것이 가능한 것은 커널 사이즈의 소량화와 작은 메모리화 등에 의해 페이지 메모리 사용할 수 있는 영역이 늘어났기 때문이다.

 

 

 

참고 : http://ascii.jp/elem/000/000/514/514598/

 

 

저작자 표시
신고
by 흥배 2012.08.06 09:00
Windows7은 사용자뿐만이 아닌 개발자에게도 편리한 기능을 가지고 있습니다.
그 중에 '대기 체인 분석' 이라는 것이 있습니다.
이것을 사용하면 프로그램을 종료 시켰는데는 프로세스는 죽지 않고 살아 있는 경우 어디서 문제가 되었는지 어느 정도 알아낼 수 있습니다.


이 프로그램은 제가 집에서 만든 서버 애플리케이션으로 X 버튼을 눌러서 종료시킵니다.


그런데 작업 관리자를 보면 프로세스가 아직 죽지 않았습니다(ProjectHF2.exe)

이 문제는 보통 워커 스레드를 사용하는 경우 특정 스레드가 죽지 않아서 발생하는 경우일것입니다.
그럼 어떤 스레드가 대기 상태에 있는지 알기 위해서 대기 체인 분석을 사용해보겠습니다.


리소스 버튼을 누르면 아래의 창이 나옵니다.


위 그림과 같이 프로세스를 선택 후 메뉴에서 '대기 체인 분석'을 선택합니다.


위와 같은 화면이 나오고 어떤 스레드가 어떤 이유로 대기하고 있는지 설명해줍니다.

이 기능은 Windows API 중 Wait Chain Traversal를 사용한 것입니다.
http://msdn.microsoft.com/ko-KR/library/ms681622(VS.85).aspx

어느 정도 제한은 있지만 이 API를 사용하면 데드락 상황도 판단할 수 있습니다.














저작자 표시
신고
by 흥배 2011.01.14 09:00

Window7 의 새로운 API Direct2D라는 것이 있습니다. 이것은 DirectX2D 기능을 Win32 API로 사용할 수 있는 것입니다.

 

저는 가장 최신의 Windows SDK설치 후 Visual Studio 2010 Beta1에서 Direct2D 예제를 빌드 해보니 빌드는 아주 잘 되었으나 실행이 제대로 되지 않았습니다.

이유는 D2D1CreateFactory 함수에서 에러가 발생했기 때문입니다. 에러는 I_GNOINTERFACE 였습니다. 처음에는 이유를 모라서 헤맸는데 검색을 해보니 인터페이스의 버전이 틀렸기 때문이었습니다.

 

제 PC에는 Windows SDK가 6.0A, 7.0, 7.0A 이렇게 총 3개가 설치 되어있어서 lib 파일과 헤더 파일의 버전이 서로 다르게 링킹 되었던 것 같더군요.

그래서 수동으로 lib 파일과 헤더 파일을 7.0으로 맞추니 문제 없이 실행 되었습니다.

 

Direct2D의 D2D1CreateFactory에서 실패가 발생하는 분들은 헤더 파일과 lib 파일의 디렉터리를 같은 SDK 디렉터리로 맞추면 아마 문제가 없을 것입니다.

저작자 표시
신고
by 흥배 2009.09.21 01:59

* 3D 그래픽스 처리와 관련된 글이라서 게임 개발자로서 흥미가 생겨서 정리해 보았습니다.

 

Windows 7 Windows Server 2008 R2의 새로운 디스플레이 드라이버 사양. 종래의 Windows Vista/Windows Server 2008 디스플레이 드라이버WDDM 1(WDDM v1)을 개량한 것(Windows XP/Windows Server 2003XPDM으로 불린다. 관련 기사 참조).


WDDM 1.1을 지원하는 드라이버의 예

이것은 NVIDIAGeForce 8600M GS용의 WDDM 1.1드라이버의  . dxdiag커멘드를 실행하면 이와 같이 표시된다.

(1)

WDDM 1.1드라이버가 인스톨 되고 있으면 이와 같이 표시된다.



WDDM 1.1의 특징으로서는 다음과 같은 것이 있다.

  • Direct3D 10/11지원
  • Direct2D 지원
  • 비디오 재생 지원(비디오 오버레이, DXVA-HD, 컨텐츠 암호화용의 AES128 지원)
  • 고정밀 DPI 지원
  • 멀티 GPU(복수의 그래픽스 카드) 지원
  • Linked Display Adapter(여러 개를 링크 시켜 성능을 향상시킨 그래픽스 카드) 지원

 

Windows 7/ Windows Server 2008 R2에서는 Windows Vista/Windows Server 2008 용의 WDDM 드라이버(WDDM v1)도 이용할 수 있지만 WDDM 1.1 대응 드라이버를 이용하는 것으로 Direct2D에 의한 고속 렌더링이나 DWM의 사용 메모리량 감소의 메리트가 있다.

 

 

Direct2D에 의한 렌더링 지원

Direct2D Direct3D 위에 GDI/GDI+ API(2D 렌더링 API. 이하 GDI) 구현한 것이다. Windows 7WDDM 1.1 환경에서는 Direct2D를 사용하는 것으로 고속의 GDI(Graphics Device Interface) 처리를 실현하고 있다.


Direct2D API

Direct2DDirect3D 위에서 GDI/GDI+ 처리를 행하기 위한 새로운 API이다. Windows 7이 호출할 뿐만 아니라 유저가 직접 호출해도 괜찮다. 하위 하드웨어의 사양에 의해 Direct2D의 구현 방법은 몇 종류인가 있다. GPU로 처리하는 것으로써 고속 GDI처리가 가능하게 된다.

(1) DirectX 11 하드웨어의 경우는 하드웨어(GPU) 혹은 디바이스 드라이버 내의 에뮬레이션으로 Direct2D를 지원한다. 하드웨어로 처리하는 것이 가장 고속으로 된다. DXGI(DirectX Graphics Infrastructure) DirectX(WDDM드라이버)를 호출하기 위한 인터페이스.

(2) DirectX 10 하드웨어의 경우는 Windows 7측에서 Direct3D 10의 기능만을 사용히여 Direct2D를 구현한다.

(3) DirectX 9 하드웨어의 경우는 Windows 7측에서 Direct3D 10  Level 9의 기능만을 사용하여 Direct2D 구현한다. Direct3D 10 Level 9Direct9 하드웨어 상에 DirectX 10 API를 구현한 것.



GDI는 일반적인 Windows 어플리케이션으로 자주 사용되는 직선이나 곡선, 도형, 문자 렌더링, 스크롤(BitBlt처리) 등을 실시하는 API이다. 3D보급하기 이전의 그래픽스 카드에서는 GDI 처리를 하드웨어 지원을 하여 고속의 윈도우 시스템을 실현하고 있었다.

 

하지만 Windows Vista Aero Glass 환경에서는 그래픽스 카드가 가진 GPU의 기능을 구사해 데스크탑을 3D로 렌더링 하게 되었기 때문에 하드웨어가 가진 GDI 처리 기능은 사용되지 않게 되어 있었다(앞의 칼럼 참조). 3D 2D의 가속기는 메카니즘이 완전히 다르기 때문에 공존할 수 없기 때문이다. 대신 Windows Vista Aero Glass 환경에서는 완전하게 소프트웨어(CPU)에 의해서 GDI 렌더링 처리를 하고 있다.


GDI Direct3D 위에 구현하여 다시 하드웨어(GPU) 위에서 처리하는 것을 가능하게 한 것이 WDDM 1.1이다. Windows 7에서는 Direct2D를 사용하는 것으로 2D 렌더링 처리도 그래픽스 드라이버+GPU 처리하여 고속 렌더링을 실현하고 있다.

 

DWM의 사용 메모리량 감소

DWM Aero Glass의 데스크탑 화면을 실현하기 위한 윈도우 매니저이다. 각 어플리케이션의 표시 윈도우나 데스크탑의 파트 등을 3D 공간상에서 합성하여 2D의 데스크탑을 실현하고 있다. 테두리나 배경의 틈으로 아래 윈도우가 보이는 것은 3D적으로 보면 뒤에 배치되어 있기 때문이다. 또 플립 3D기능(Windows]-[Tab]키에 의한 다이나믹한 바꾸) 3D 공간 안에 윈도우를 비스듬하게 거듭해 배치하는 것으로써  페이지를 넘기는 어플리케이션의 변환을 실현하고 있다.

Windows Vista에 있어서의 이 구조의 실현 방법은 다음과 같다.
1) 우선 어플리케이션의 윈도우 사이즈에 상당하는 버퍼를 하나 준비하여 모든 렌더링을 이 버퍼에서 실시한다(GDI 렌더링 명령을 호출하면 CPU 처리하 이 버퍼에 쓴다). 
이 버퍼는 실제로는 각 어플리케이션의 공유 메모리 address 공간 내에 배치되어 있다. 다2) 다음에 이 버퍼를(공유 메모리로서 액세스 하여) DWM 모아 그래픽스 카드 상에 비트 맵 데이터로서 전송 한다.
3)
마지막에 그래픽스 카드가 그러한 비트 맵을 3D 모델에 텍스쳐 매핑 한다. 이것이 최종적인 데스크탑 화면이 된다.


한 번 중간 버퍼를 사용
하여 렌더링 하는 것은 CPU 직접 그래픽스 카드 상의 버퍼에 쓰는 것은 코스트가 비싸기 때문이다(메인 메모리쓰기와 달라서 시간이 걸려 패널티가 크다).


Windows 7
WDDM 1.1 환경에서는 공유 메모리상의 버퍼를 사용하지 않고 어플리케이션의 GDI 렌더링 명령을 Direct2D API로 실행하고 있다. 이것에 의해 중간 버퍼를 사용하지 않고 그래픽스 카드 상의 버퍼에 직접 쓰는 것이 가능하게 되었다. 또 메모리를 절약하면서도 GPU에 의한 고속 GDI 처리를 실현하고 있다.


Windows Vista(
혹은Windows 7WDDM 1) 환경에서는 반드시 중간 윈도우 사이즈에 상당하는 버퍼가 필요하고 있었지만 이것에 필요한 메모리 사이즈는 결코 적은 것이 아니었. 예를 들면1024×1024 정도의 윈도우 사이즈를 가지는 어플리케이션의 경우 필요한 버퍼 사이즈는 약 4Mbytes가 된다(1픽셀 당 RGB+알파 채널의 4bytes). 이러한 어플리케이션이 50개 있었다고 하면 이만큼으로 4×50=200Mbytes된다. Windows 7WDDM 1.1에서는 200Mbytes 불필요하게 되어 그 만큼 다른 어플리케이션에서 이용 가능한 메모리가 증가하게 된다. 실제로는 Direct2D의 하드웨어 가속화에 의한 혜택도 있어 Windows 7Windows Vista 보다 경쾌하게 이용할 수 있게 되어 있다.

 

출처 : http://www.atmarkit.co.jp/fwin2k/words/009wddm11/wddm11.html

 




저작자 표시
신고
by 흥배 2009.09.02 00:05
| 1 |

티스토리 툴바