Windows 7 – 시스템 성능 고찰 (Approach to System Performance)

 

많은 분들이 Windows의 성능에 대해 언급하시고 이에 대한 주제의 전자 메일을 보내주셨습니다. 대화의 범위는 광범위했는데 당연한 사실이지만 대부분이 성능의 향상을 바라고 계셨습니다. 성능은 절대적이고 측정 가능한 것으로 느껴지기는 하지만, 사실 저희가 논의할 대부분의 주제처럼 아주 미묘한 것입니다. 모든 사람의 기대에 걸맞게 성능을 향상시키기 위해서는 여러 가지 요소를 고려해야 하며 많은 타협이 필요합니다. 그리고 사용자의 기대를 만족시킬수록 당연히 Windows PC의 성능 향상에 대한 기준은 더 높아집니다. 그래서 저희는 Windows 7 및 IE 8에서 성능에 많은 관심을 기울여 작업했습니다. 성능 향상은 기능 개발 팀들 중 하나인 펀더멘털 팀의 주요 과제이자 모든 기능 개발 팀에게 공통적으로 주요 과제입니다. 이번 글에서는 이에 대한 논의를 시작하고, 이후에 올릴 글에서 성능에 관한 주제를 더 자세하게 다루도록 하겠습니다. 이 글은 IE8 성능 및 IE 8 베타 2 릴리스의 내용과 관련되어 있습니다.

성능은 여러 가지 다른 요소들로 이루어져 있습니다. 성능은 특정한 요청에 대한 응답 시간을 의미하는 것일 수도 있고, 얼마만큼의 RAM이 적당한지 또는 어떤 CPU를 써야 하는 지에 대한 것일 수 있습니다. 성능은 프로그램을 실행시키기 위한 클락 시간에 대한 것일 수도 있고, 부팅 또는 대기/다시 시작에 대한 것일 수 있습니다. CPU동작, 디스크 I/O 동작 또는 디스크 동작의 결여를 관찰하는 것을 의미할 수도 있고, 배터리 수명을 의미할 수도 있습니다. 성능은 설치 후에 디스크가 자리를 얼마나 차지하는가와 같은 평범한 것을 뜻할 수도 있습니다. 이 모든 것이 성능의 척도이며, 개발 과정 중에 시스템적으로 추적할 수 있습니다. 성능은 수천 개의 알려진 시나리오 세트를 실행하여 추적하는데, 개발자들은 특정한 시나리오를 심도가 깊게 실행할 수도 있고 폭넓게 실행할 수도 있습니다. 다음은 우리가 Windows 7을 개발하면서 추적하는 척도의 일부 (전체가 아닌 부분적인 목록) 입니다.

  • 메모리사용– 주어진 시나리오가 실행 동안 얼마만큼의 메모리를 할당하는가. 여러분도 아시다시피 컴퓨터 공학에는 전형적인 시간 대 공간 사이의 트레이드 오프가 있으며, 우리도 여기에서 예외는 아닙니다. 우리는 성능을 향상시키거나 어떤 것의 재계산을 방지하기 위해 메모리 또는 디스크 공간을 더 쓸 수 있을 때, 캐시에서 이러한 트레이드 오프를 많이 봅니다.
  • CPU 활용– 분명히 현재의 마이크로 프로세서들은 엄청난 처리 능력을 제공하며, 멀티 코어의 등장으로 우리는 그 어느 때보다도 더 많은 병행 처리의 기회를 갖고 있습니다. 물론 이러한 자원들은 무료가 아니므로 우리는 벤치마크 실행 동안 CPU 활용도 함께 측정합니다. 일반적으로, 목표는 전원 소모를 줄이는 동시에 CPU 활용을 낮게 유지하여 멀티 사용자 시나리오를 개선하는 것입니다.
  • 디스크 I/O – 하드 드라이브의 성능이 상당히 개선되었어도, 우리는 여전히 Windows가 디스크를 읽고 쓰는 데 (물론 페이징 포함) 쓰는 양을 최소화할 수 있는 모든 것을 해야 합니다. 이것은 극적으로 다른 “성격”을 가진 솔리드 스테이트 저장 장치의 도래와 함께 Windows 7에서 특별한 관심을 받는 분야입니다.
  • 부팅 , 시스템종료 , 대기 / 다시시작– 이 모든 것들이 Windows 7에서 상당한 집중을 받고 있습니다. 우리는 이들이 절대로 충분히 빠를 수 없음을 알고 있습니다. 이 분야에서는 우리가 실험실에서 보는 시간 (또는 “처음 설치” 에서 사용자가 보는 성능)이 사용자가 새 PC를 구입할 때 꼭 반영되도록 보장하기 위하여 PC 제조 업체 및 하드웨어 제작자와의 협력이 매우 중요합니다.
  • 베이스시스템– 우리는 베이스 시스템을 측정하고 조율하기 위해 많은 노력을 합니다. 이것은 추가적인 소프트웨어가 로드되기 전의 베이스 시스템의 자원 활용을 의미합니다. 이 시스템은 모든 개발자가 믿을 수 있는 것을 정의하고, 사용자가 합리적인 경험을 위해 필요한 시스템 요구 사항을 정의하는 “플랫폼”을 형성합니다. 여기서 공통적으로 요구되는 것은 베이스 시스템에서 무엇을 빼내어 “필요할 때만” 사용하는 것입니다. 이러한 트레이드오프는 상당히 자주 사용됩니다. 그러나 우리는 흔한 시나리오에서의 인지된 성능을 저하시키지 않기 위해 광범위한 대다수의 사용자가 “필요할 때만” 무언가를 로드해야 하는 상황을 피하도록 조심합니다.
  • 디스크발자국 ( footprint ) – 실행 성능과 직접적으로 연관되어 있지는 않지만, 많은 분들이 OS의 발자국을 인식되는 성능의 잣대로 보십니다. 우리는 이 척도에 대한 특정한 목표를 가지고 있으며 이에 대해 더 자세히 논의할 것입니다. 또한 Technet과 MSDN에서 많은 논의가 이루어지는 주제인 \Windows\WinSxS 에 대해 설명할 것입니다. 여기서는 실행 트레이드 오프보다는 디스크 장치 드라이버, 도움말 콘텐트, 선택적인 Windows 컴포넌트, 그리고 진단 및 정보 기록과 같은 것들을 위한 편의성 트레이드 오프를 봅니다.

각 중요 시점의 끝과 베타에 들어가기 전에 적용하는 기준들이 있어서, 이 기준들을 대부분 충족시켜야 제품을 내보내게 됩니다. 기준에는 자세한 수준의 벤치마크 (페이지 오류, 프로세서 활용, 작업 세트, 게임 프레임 비율)들도 있고, 시나리오를 기반으로 한 작업을 완성하는 시간 (클락 시간, 마우스 클릭)을 측정하기도 합니다. 이런 측정은 다양한 하드웨어 플랫폼 (32비트 또는 64비트; 1, 2, 4GB의 RAM; 5400에서 7200 RPM 또는 솔리드 스테이트 디스크; 다양한 프로세서들 등)에서 이루어집니다. 어떤 아키텍쳐를 사용하느냐에 따라 고유한 특성의 트레이드 오프가 있기 때문에, Windows를 실행하는 하드웨어의 종류에 따른 조건문의 코드를 종종 사용합니다.

반면 성능은 간단해야 합니다. 적게 사용하고, 덜 동작하고, 적게 소유해야 합니다. 모든 것을 적게 소요할 수록 성능은 개선되야 합니다. 극단적으로 말해서 그것이 사실입니다. 그러나 댓글에서 보았듯이 한 사용자의 필수 조건은 다른 사용자의 필요악 조건입니다. 이와 같은 것은 어떤 분이 “눈에 보기 좋은 사탕”이라고 부른 경우에서 많이 볼 수 있습니다. 저희는 “경쟁 제품에서 볼 수 있는 것 같이” 애니메이션과 그래픽을 많이 사용하여 “더 재미있는” 기본적인 사용자 인터페이스를 만들어 달라는 요구를 받습니다만, 동시에 다른 사용자들은 “그래픽을 없애버리고 Windows 2000으로 돌아가라”고 말하십니다. Windows는 매우 유연하여 경험을 조정할 수 있는 여러 가지 방법을 제공합니다. 이 포럼에서 우리는 다른 청중에 맞게 사용자 정의된 특정한 버전들의 Windows를 만들어 달라는 의견을 많이 들었습니다만, 동시에 Windows 버전의 개수를 줄이는 요구에 대해서도 많은 의견이 있었습니다. 그러나 저희가 제공할 수 있는 것, 그리고 사용자와 개발자가 믿을 수 있고 견고하며 광범위한 고객들이 다룰 수 있는 신뢰할 “플랫폼”을 동시에 제공하는 것에는 한계가 있습니다. 그러나 물론 알려진 문맥 안에서는, 즉 집에서 또는 알려진 소프트웨어들을 실행하는 비즈니스인 경우, 언제나 경험을 조율하도록 Windows가 제공하는 관리 도구를 이용하여 사용자 정의를 최대한 활용할 수 있도록 만들 수 있습니다. 사용자가 자기의 PC에서 일어나는 것을 제어하고 선택하는 능력은 우리에게 매우 중요하며 저희는 Windows 7에서 이 기능에 계속해서 집중할 것입니다.

지금까지 성능과 관련하여 훌륭한 PC를 제공하는 데 있어서의 가장 큰 어려움은 사용자가 PC를 사용하여 계속해서 더욱 더 많은 것을 하려고 하며, 사용자가 가진 PC에 소프트웨어를 계속 더 추가하면서 이 많은 일들을 당연히 기대한다는 것입니다. 사실Windows 자체도 기능을 추가해 왔지만 저희는 넓은 기반의 고객에게 도움이 될 것이라고 믿어지는 기능들을 고르기 위해 열심히 노력합니다. 동시에 상당 부분의 Windows 7에서 제공되는 소프트웨어와 관련해 Windows에서 무슨 일이 일어나는지, 파일 종류와 프로토콜의 기본 핸들러가 무엇인지, 그리고 사용자가 컴퓨팅 경험을 개인화하기 쉬운 플랫폼을 제공하는 데 있어서 계속적으로 사용자가 선택하고 제어할 수 있도록 지원할 것입니다.

마지막으로, 실제 세계와 이상적인 환경을 고려할 가치가 있습니다. Windows를 개발하기 위해 저희는 추가되는 코드와 그 영향을 특별히 추적할 수 있는 실험실 환경에서 벤치마크를 실행합니다. 또한 PC 제조 업체와 가깝게 일하면서 시스템이 공장을 떠났을 때의 상태를 벤치마킹하도록 돕습니다. 그리고 진정한 실제 성능에 대해서는 Microsoft 고객 경험 개선 프로그램을 통해 컴퓨터가 실제로 어떻게 작동하는지에 대한 데이터를 얻습니다. 이 프로그램은 익명으로 비밀이 철저히 보장되고 자발적으로 참여할 수 있습니다. 우리는 앞으로 몇 달 간 이 데이터를 많이 참조할 텐데 이는 예제나 덜 믿을 만한 형태의 정보보다는 이 데이터가 실제로 일들이 어떻게 돌아가는 지 설명하는 데에 있어서 기반이 되어주기 때문입니다.

다음 글에서 우리는 시작과 부팅 성능에 대해 살펴보고 관심 정도에 따라 성능과 관련된 주제에 대해 더 언급할 것입니다.

--Steven