Google Chrome 의 다중 프로세스와 메모리 사용


사용자 삽입 이미지

최근 Beta Tag를 구글의 크롬 브라우저 다른 브라우저에 비해 장점보다 단점이 더 많겠지만 일단 브라우저가 갖춰야 할 기능에 있어서는 상당히 만족스러운 느낌입니다.

렌더링속도와 브라우징 속도, 어플 수행속도 면에서 매우 안정적으로 변했습니다.
“헉 크롬이 다운되었습니다.” 라는 경고창은 자주 보였던 베타버젼 이후에는 아직까지 본 경우가 없습니다.

베타 첫 출시일에 JavaScript 지원여부와 벤츠마크에 대한 테스트를 해보고 그다지 만족하지 않아 그간 사용하던 FireFox를 사용해 왔었는데 부쩍 느려진 느낌이 들어 웹 서핑때에는 크롬을 사용중인데 그때와 많이 달라져 보이지 않지만 상대성인지 지금은 대단히 만족히 사용하고 있습니다.

크롬의 JavaScript 엔진인 V8 엔진은 이번 릴리즈 노트에서도 평균 1.4배 정도의 향상을 시켰다는 내용이 포함되어 있었고 다양한 부분에 있어서 향상과 안정성을 높인 것 같습니다.

이중 멀티 프로세스 모델과 메모리 사용에 대한 좋은 소개 내용이 있어 간단히 조사해 보았습니다.

크롬은 Firefox와 같은 브라우저에 비해 비교적 많은 메모리를 소모합니다.  바로 멀티 프로세스 아키텍처는  브라우저와 렌더링 엔진을 서로 다른 프로세서에서 동작시키는 원리로 동작하여 더 많은 메모리를 소모하게 됩니다.

크롬의 멀티 프로세스에 대한 설명은 Google Chrome Memory Usage – Good and Bad 이곳을 참고

위의 포스팅에 보면 간단한 메모리 사용에 대한 측정 방법에 대한 방법을 제시하고 있는데 Windows의 Task Manager(작업 관리자)를 통해서 측정한다면 실제 사용하는 메모리에 비해서 30%에서 40%정도 더 많은 사용률을 보일 수 있다고 합니다.  

이것은 멀티 프로세스 아키텍쳐만의 장점으로 크롬이 사용하는 공유 메모리까지 크롬의 메모리 사용률로 측정 될 수 있기 때문입니다.  그렇기 때문에 정확한 사용량을 측정하려면 크롬의 about:memory 를 통해서 확인하시는 것이 가장 정확한 방법입니다.

아래의 모습은 각 브라우저의 초기 페이지를 about:blank로 설정하고 띄운 상태에 메모리 사용률을 체크해 보았습니다. 


사용자 삽입 이미지


크롬이 채택한 이 멀티프로세스 아키텍쳐는 싱글 프로세스 브라우저에 비해 메모리 사용량이 늘어 날 수 밖에 없는 구조입니다.  하지만 반면에 관리에 있어 매우 정확히 동작하기 때문에 더 나은 방법일 수 있다는 생각을 합니다.

만약 메모리 공간을 시스템 프로세스에서 분리하기 위해 보안 취약점이 발생하면 다른 브라우저에까지 영향을 줄 수 있기는 하지만 분리된 렌더링 엔진 프로세스가 종료하면(예를 들자면 같은 도메인에 접속중인 모든 탭을 닫을 경우) 메모리는 운영체제의 수준으로 메모리는 반환되어 메모리 사용량이 증가하기도 쉽지만 사용량을 줄이는 것도 안정적으로 처리 될 수 있게 됩니다.

반면 Single 프로세서의 경우에는 한번 확보한 메모리를 비우거나 사용량을 줄이게 하는 것은 대단한 작업입니다.  FireFox의 경우에는 FreeBSD에서 개발된 jemalloc을 통합하여 사용하며 메모리 조각의 발생을 줄이는 방식으로 활용되고 프로세스 종료 시 메모리를 반환하게 되는 구조입니다.


사용자 삽입 이미지
출처 Stualrt Pavlov씨의 블로그

 구글 크롬의 경우가 메모리 반환의 구조는 더욱 단순해 보입니다.  브라우저는 웹 사이트를 보기 위해서 사용한 만큼 사용자의 메모리 리소스를 사용하고 그 사이트에 대한 정보를 브라우저에서 더 이상 사용하지 않을 때 모든 메모리를 반환한다.  

국내 고급형 PC의 보급률로 볼때면 리소스가 뒷 받침해주니 이런 방식이 더 낫지 않을까?   개인적으로는 단순하면서 더 깔끔하다는 느낌을 받습니다. 

사용자의 브라우징 유형에 따라서 크롬이 더 낫거나 파이어폭스가 더 나을 수도 있다는 느낌도 듭니다.


Chromium Developer DocumentationMulti-process Architecture
신고
Posted by Rhio.kim

이번 컨퍼런스는 샌프란시스코에서 하나 봅니다.

12월 3일 부터 6일까지네요..  구굴 UI 개발자가 되기위해서는 GWT를 아주 잘 알아야한다죠..

뭐 그것만 알아서 될 일은 아니지만 말이죠..


Addison-Wesley and Prentice Hall are putting on a conference dedicated to GWT on December 3-6 in San Francisco.

Meet and learn from the folks, both Google engineers and community members, who have developed GWT. Speakers will share their experiences in building real-world applications with GWT. Speakers include many of the GWT team members, including Bruce Johnson and Joel Webber. They will be joined by Billy Hoffman, Jeet Kaul, Josh Bloch, David Geary, and other members of the GWT community.

Introductory Topics

  • Getting started with GWT
  • Solving traditional web usability problems with AJAX and GWT
  • Building user interfaces
  • Client/server communication, including RPC, JSON, and XML
  • Integration and interoperation with existing applications and libraries
  • Unit testing and benchmarking
  • Deploying GWT applications effectively

Advanced Topics

  • Advanced UI programming: Widgets, Panels, DOM, and JSNI
  • Using deferred binding for dependency injection and code generation
  • Designing for no-compromise usability, including tips for maximizing responsiveness, supporting history, and internationalizing well
  • Maximizing code reuse
  • Understanding compilation, the JavaScript Native Interface (JSNI), and optimizations
  • Security considerations for AJAX and GWT
  • Architecting big applications with GWT

Network with colleagues and GWT team members to discuss the underlying promise of GWT as well as its current challenges:

  • How can I integrate GWT into my existing application?
  • How have others added functionality to GWT?
  • How can one best take advantage of Java
    design patterns in GWT?
  • For large projects, how can we handle multiple entry points?
  • What are the best practices for debugging
    GWT applications?
  • Which IDEs work best with GWT?
  • How have others integrated Spring and Hibernate?
  • How can you contribute to the Google Web Toolkit project?

To whet your appetite they put together a couple of interviews with the founders of GWT that are worth a lesson:

신고
Posted by Rhio.kim
TAG GWT, 구글