Windows 7의 성능(Performance)은 어떻게 향상되었을까요? 더 빠른 시스템 부팅을 위해!

Windows7_h_rgb 

TechED 2009 행사의 2일째가 시작되었습니다. 역시나 사람이 참가하는 행사다보니, 아침 8시 30분부터 하는 첫번째 세션에는 사람들이 많이 없더군요. Windows 7 RC가 출시된 이후에, Windows 7에 대한 성능 향상적인 측면을 살펴보는 포스팅을 해보려고 생각했습니다. 오늘 한번 그 내용을 살펴보죠.

메타 블로그 사이트에서 Windows 7 태그로 검색을 해보면, 상당 수의 포스팅이 빠른 속도에 대해서 언급하시는 부분이 많습니다. 저도 작년 10월정도부터 Windows 7을 사용해오면서, Beta, RC를 거쳐, 현재의 모습에서 빨라진 속도(성능)에 대해 매우 만족하면서 사용하고 있습니다. 어떻게 생각하시나요?

Windows 7 베타 버전이 1월초에 출시된 이후, 꽤 많은 양의 Windows 7 관련 세미나를 진행하였던 것 같습니다. 항상 제가 Windows 7을 소개하는 슬라이드의 첫번째 페이지는 Windows 7의 Fundamental이 나오곤 했습니다.

image

빠르다.. 빠르다.. 빠르다는 측면은 많은 의미를 담고 있습니다. 이미 올린 빠르다는 의미에 대한 포스팅도 한번 살펴보시는 것은 어떨까요? 그렇지만 오늘은 정말 Windows 7 성능, 그 자체에 대해서 이야기를 나눠볼까 합니다.

전반적인 Windows 7의 성능 향상 이야기를 풀어보기 전에, Windows 7을 개발하는 팀에서는 성능에 대해서 어떤 생각을 가지고 Windows 7을 만들고 있을까요?

  1. 주요 사용자 시나리오에 집중
  2. 단순한 벤치마킹 결과가 아닌, 시스템 빠른 응답을 선호
    언제나 성능 비교는 벤치마크 툴에서 나온 결과값을 가지고, 빠르다.. 느리다.. 를 판단하였지만, Windows 7 개발팀은 실제 사람이 느끼고 있는 응답성을 개선하는데 노력하였다고 합니다.
  3. 가벼운 OS와 좀더 효율적인 리소스를 사용하는 운영 체제 제작
  4. 성능 향상적인 측면에 대해서, 사용자 환경 개선 프로그램의 결과값을 최대한 활용
    전세계 사용자들께서 공유해주시고, 피드백해주신 사용자 환경 개선 프로그램의 결과를 이용하여, Windows 사용자가 어떤 형태로 Windows를 사용하고자 하는지를 분석하고, 이를 실제 운영 체제에 반영하려고 노력하였습니다. 이는 Windows 뿐만 아니라, Windows Internet Explorer.. 많은 Microsoft 제품에 꼭 반영됩니다.

앞으로 몇번의 포스팅에 걸쳐, Windows 7의 성능이 어떻게 향상되었는지에 대해서 살펴보려고 합니다. 오늘은 성능과 관련된 측면중 1편 시스템 부팅을 먼저 살펴보겠습니다. :)

오늘 오전에는 그냥 아무 생각없이 제 랩탑을 다시 시작시키면서, POST 작업 이후, 실제 Windows 7의 부팅 시간에 대해서 확인을 해보았습니다. 과연 얼마나 걸릴까? 보통 엔지니어 분들은 술자리나, 조금 캐쥬얼한 자리에서 내 컴퓨터는 지렁이(?) 몇번 지나가고 부팅된다? 라는 논쟁을 하곤 합니다.

현재 제 랩탑은 Windows 7과 더불어, 일에 필요한 각종 응용 프로그램, 그리고 다양한 랩탑 지원 프로그램이 있습니다. 참고로 Lenovo의 X200 Tablet 모델을 사용중입니다.(개인적으로 Tablet을 좋아하거든요 :) )

첨부된 동영상을 살펴보시면 아시겠지만, 제 랩탑의 부팅 시간은 16초(Windows 부팅 로고부터 로그인 화면까지 나오는데) 정도가 걸리는 것을 보실 수 있습니다. 아무 것도 추가 설치하지 않은 Windows 7의 경우 평균 12초 정도의 부팅 시간을 보여줍니다.(자동 로그인하여, 시작 버튼을 누를 수 있는 시점까지)

image image

상단 표의 왼쪽은 클린 인스톨된 Windows 7의 부팅 시간을 잰 표이며, 오른쪽의 표는 PC 제조사에서 사용하는 Windows 7(추가적인 응용 프로그램이 설치되어져 있는)의 부팅 이미지를 Windows 7으로 업그레이드하여 부팅 시간을 잰 표입니다. 전반적으로 클린 인스톨된 Windows 7보다 약간씩 부팅 시간이 더 길어진 것을 볼 수 있습니다.

그럼 Windows 7의 시스템 부팅은 어떻게 성능 향상을 이끌어냈을까요?

첫번째! 시스템 서비스에 대해 요청시 시작하는 모델을 채택하였습니다.(Demand Start)

대표적인 것이 블루투스 서비스와 같은 하드웨어와 연관된 부분입니다. 또한 Bitlocker와 관련된 서비스도, 사용자가 실제 디스크 암호화를 시도할 때에 시작됩니다. Windows Vista까지는 시스템에서 사용하는 서비스는 시스템 부팅시 서비스를 시작시켰기 때문에, 이를 동작하는 시간이 조금 더 필요하였지만, Windows 7부터는 시스템 서비스에 대해 기본적인 서비스만 시작하고, 추가적인 서비스는 요청시 시작하는 모델을 사용하고 있습니다.

이러한 서비스 모델의 변화로 총 38개의 서비스가 요청시 시작되는 Trigger/Demand Service가 되었으며, 자연스럽게 빠른 부팅과 빠른 종료, 빠른 절전 모드 전환, 메모리 사용량 감소를 얻어냈습니다. 이런 38개의 서비스가 어떤 영향을 주었는지 좀더 구체적으로 살펴보면..

  1. 10000여개의 파일 작업 감소
  2. 50MB 이상의 메모리 사용 감소
  3. 30000여개의 레지스트리 액세스 감소
  4. 수백개의 스레드 사용량 감소

훌륭한 결과이지 않나요?

해당 서비스 모델은 시스템의 빠른 부팅 뿐만 아니라, 전반적인 리소스 사용량 관리에도 긍정적인 효과를 주게 되었습니다.

두번째! 부팅시 드라이버들을 동시에 시작하도록 하였습니다. (Parallelization)

드라이버를 일일히 하나씩 시작하는 Serialization적인 측면이 아니라, 동시에 여러개를 병렬적으로 시작하게 함으로서, 하드웨어의 시작이 더욱 빨라졌다고 생각하시면 됩니다.

세번째! 그래픽 시스템에 대한 시작 및 실행에 대한 메모리와 CPU 사용량을 대폭 줄였습니다. 또한 하드웨어 벤더의 드라이버에 대한 성능 및 완성도가 더욱 높아졌기에, 여기서 얻은 혜택도 있죠.

image

WDDM(Windows Display Driver Model)이 1.0에서 1.1로 업그레이드되면서, 시스템에서 그래픽을 처리하기 위해 사용하는 CPU와 메모리 사용량이 비약적으로 낮아지면서, 이에 대한 반대 급부로 Windows 7의 시스템 부팅 시간이 빨라졌다고 생각할 수 있습니다. Windows 7의 성능 향상을 위해서는 현재 사용중인 그래픽 카드의 드라이버가 WDDM 1.1을 지원하는지를 확인해보셔야 합니다. 물론! WDDM 1.0과도 호환은 가능합니다.

네번째! 폴더 리디렉션이 비동기(Async) 모드로 되었습니다.

기업 사용자의 경우, 본인의 프로필에 대한 폴더 리디렉션을 사용할 수 있습니다. 폴더 리디렉션은 사용자의 프로필(C:\Users, 또는 C:\사용자 폴더)를 다른 장소에 저장해놓고, 이를 로그온시에 동기화하여, 항상 같은 형태의 데스크톱 환경을 제공받는 것입니다. 기존 Windows는 해당 동기화 작업이 동기(Sync)로 처리하였지만(동기가 완료되기 전까진 로그온할 수 없었습니다.), Windows 7은 비동기(Async)로 처리하므로, 사용자는 바로 로그온을 할 수 있습니다.

PC 제조사의 이미지를 업그레이드하여 측정한 Windows 7의 부팅 시간은 클린 인스톨된 Windows 7보다는 시스템 부팅 시간이 조금 더 걸리는 것을 볼 수 있습니다만, Windows Vista에 비해서는 빠른 시간을 보여주는 것을 볼 수 있습니다. 단순한 벤치마킹이 아니라, PC 제조사와의 긴밀한 공조로 성능 저하를 최소화하는데 노력하고 있습니다.

시스템 부팅을 살펴보았으니, 이제 절전(Sleep)/최대 절전(Hibernate) 모드에 대해서 알아볼까요?

Windows 7은 Windows Vista, Windows XP에 비해서, 시스템에 대한 절전 모드로 들어가는 시간, 그리고 절전 모드에서 다시 깨어나는 시간(Resume)이 향상되었습니다. 대략 제 랩탑의 경우, 절전 모드로 진입하는데 6초, 깨어나는데 2초정도가 걸렸네요.

image

  • 디스크에 어떠한 정보를 저장하고, 복원할 것인가를 재설계하였으며, 이에 대한 작업 순서도 향상시켰습니다. (비동기, 동기 쓰기, 그리고 기록하는 크기)
  • 최대 절전 모드시 사용하는 데이터양이 적어졌습니다.
  • 최대 절전 모드로 들어갈 때, 그리고 다시 깨어날 때, 프로세서의 성능을 최대로 가동시키게 설계되었습니다.
  • 깨어날 때, 시스템 타이머를 감소시켰습니다.
    시스템 타이머의 감소는 깨어난 이후의 시스템 응답성에 크게 영향을 줍니다. 시스템 타이머의 감소로 인해, Windows 7은 절전/최대 절전 모드에서 다시 깨어났을 경우에 시스템 응답성이 좋아졌습니다.
  • 하드웨어 벤더와의 공조로 드라이버 품질을 향상시켰습니다.
    최대 절전/절전 모드로 진입하다가 실패하여, 랩탑이 뜨겁게 달궈진적이 한번쯤은 다 있으시죠? 대부분의 경우는 하드웨어 드라이버에서 절전모드로 진입을 실패하여, 시스템이 중단된 경우입니다. 이 경우, 드라이버의 업데이트 또는 바이오스의 업그레이드를 통해 해결할 수 있습니다. 꼬알라의 경우, 언 3년째 제 랩탑은 항상 절전(Sleep) 모드를 사용하여 이동합니다. 주위 사람들이 그러죠. “꼬알라! 그래도 괜찮어? 전 대답합니다. 괜찮다고 :)”

시스템 종료시는 어떨까요?

시스템 종료시 서비스의 시간 초과(Timeout)가 클라이언트 버전의 경우(Windows 7), 20초에서 12초로 줄어들었습니다. 더 짧게 기다린다는 것이죠. 또한 응용 프로그램의 종료를 동시에 진행하여(Parallelize), 응용 프로그램의 종료가 빨라졌습니다.

image

Windows 7을 사용하시면서 위와 같은 화면을 보신적이 있으시죠? 특정 응용 프로그램이 종료되지 않아, 시스템 종료가 되지 않고 대기 상태를 의미합니다. 강제 종료를 클릭하시거나, 취소를 클릭하셔서, 해당 프로그램에 대해 처리한 후, 시스템 종료를 계속할 수 있습니다.

관리 도구내 이벤트 뷰어, 응용 프로그램 및 서비스 로그, Microsoft, Windows, Diagnostics-Performance에 가보시면 시스템 부팅, 종료, 대기, 절전에 관련된 로그를 볼 수 있습니다. 어떤 하드웨어, 어떤 프로그램이 문제를 일으켰는지를 살펴볼 수 있기에, 해당 부분을 손보시면 더 나은 성능을 기대할 수 있다는 의미입니다.

image

오늘 포스팅은 Windows 7의 성능 향상 측면 중, 가장 많이 느낄 수 있는 시스템 부팅, 종료, 절전/최대 절전 모드에 대해서 살펴보았습니다. Windows 7은 새로운 기술적인 측면, 향상된 가치 뿐만 아니라, 플랫폼의 기본이라고 볼 수 있는 빠른 성능(속도)를 제공하기에 많은 부분을 최적화하고, 새롭게 설계하였습니다. 다음 포스팅에서는 시스템의 응답성 및 메모리의 성능 향상에 대해서 살펴보겠습니다.