메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

리눅스 성능: 클라우드에서의 성능 측정

한빛미디어

|

2016-10-05

|

by Brian, Sash

13,225

클라우드에서의 동적 분석, 성능 측정 도구, 성능 최적화에 관한 사샤의 4가지 질문

 

셀라 그룹의 CTO이자 분산 시스템, 디버깅, 모바일 개발의 전문가인 사샤 골드슈테인 9월에 있을 벨로시티 컨퍼런스에서 현대 리눅스 성능 측정의 현재와 미래에 관해 발표할 예정이다. 나는 최근 사샤와 최신 리눅스 성능 측정 도구에 관해서 얘기할 기회가 있었다. 그 내용을 잠깐 요약해보겠다.

 

리눅스에서 현대 동적 분석 도구의 현황

 

성능 측정은 로우레벨 커널 컴포넌트부터 애플리케이션 레벨의 라이브러리와 런타임 시스템의 임의의 위치에 접근해 정확한 통계와 로그메세지를 받아 진단하고 모니터링 하는 것이다. 로깅과는 다르게 성능 측정은 개발 중에 개발자의 개입이 필요 없다. 대신 성능 측정은 이론적으로는 낮은 오버헤드로 필요할 때 켜서 시스템의 동작에 대해 유용한 정보를 얻을 수 있다. 현대 성능 측정도구는 이벤트 데이터를 커널에 쌓고 디스크에 저장하지 않으면서 평균과 히스토그램을 만들면서 수백만건의 이벤트를 처리해 이론을 현실로 만들었다.

 

최근 몇 년에 걸쳐서 새로운 성능 측정 도구가 리눅스 커널에 추가되었다. 이것을 사용해 보면 후회하지 않을 것이다. 주목할만한 것은 perf (스위스 아미 나이프 같은 성능 조사 도구), SystemTap (자신만의 성능 측정 도구를 만들 수 있는 스크립트 언어를 제공한다.), Sysdig (Wireshark 규칙의 단숨함을 시스템 수준의 모니터링에 제공한다.) eBPF (안전한 커널 속에 포함된 가상머신을 제공해서 고성능 낮은 오버헤드로 성능 측정을 할 수 있다.)등이 있다. 이 중의 일부 기술은 여전히 발전 중이며 다른 기술은 이미 성숙해 실제 시스템에 널리 쓰일 수 있다.

 

클라우드에서는 성능 최적화를 위해서 다른 접근 방식이 필요한가?

 

그렇다, 그것도 아주 많이.

 

첫째, 일부 부분은 우리가 통제할 수 없다. 우리는 클라우드 솔루션을 평가하고 벤치마킹할 수 있지만(특히나 IaaS 제품을 사용하고 있다면 RAM, IOPS, 다른 성능 속성을 조절할 수 있다.), 어딘가 예측할 수 없는 공유 시스템을 제공 받을 뿐이다. 우리가 모든 환경을 통제할 수 없으니 정확하게 느려지거나 단절 되는 이유를 알아내기 매우 힘들다. 

 

둘째, 일부 성능 측정 도구는 작은 실험실 규모에서만 효과가 측정되어 클라우드 규모에서는 동작하지 않는다. 점점 큰 규모의 시스템에서 배포하는 것이 쉬워지면서, 운영 대시보드와 경보기를 엄청나게 설치하지 않는다면 작은 오버헤드와 이용할 수 있는 성능 정보를 얻는 것은 어려워지고 있다. 많은 수의 서버에서 발생하는 문제를 추적 할 수 있는 능력은 더더욱 중요시 되고 있다.

 

셋째, 클라우드 환경은 탄력성이 있어서 일부 성능 최적화 기술은 시대의 뒤처지거나 관련 없다. 특정 프로세서, 메모리 크기, 네트워크 설정 또는 특정 클라우드 업체에 얽매어 있을 필요가 없다. 과거에 사용하던 설정은 다시는 투자대비성과를 얻을 수 없다. 다른 설정을 해야 수십억을 서버에 쓰지 않고 배포를 최적화할 수 있다.

 

운영 인력은 어떤 리눅스 성능 도구를 배워야 할까?

 

많은 운영 인력과 신뢰성 엔지니어는 top, iostat, vmstat 같은 고수준 성능 도구와 친하다. 하지만 교묘한 문제를 알아차리기 위해서는 예쁘게 정리된 상태의 결과를 봐서는 알 수 없다. 예를 들어, 어떤 코드가 많은 메모리를 쓰는가? 어떤 IP가 TCP 핸드쉐이크를 느리게 만드는가? 어떤 URL이 시스템의 부하를 높히는가? 이런 낮은 레벨의 질문은 낮은 레벨의 도구가 필요하다. 그리고 여기에서 동적분석이 빛난다. 재컴파일 하거나 시스템을 재구성 할 필요 없이 perf나 BPF는 애플리케이션에 어떤일이 일어나고 있는지 구체적인 통찰력은 준다.

 

왜 어떤 사람은 리눅스 성능 도구를 사용하기 힘들어 하고, 이 사람들을 어떻게 도와 줄 수 있을까?

 

몇년 동안 리눅스 성능 도구를 사용자 친화적으로 만들기 위해 많은 노력을 기울였음에도 여전히 많은 부분이 개선되야 한다. 그래픽적인 화면도 개선이 필요하다. 예를들면 모니터링 요원을 위한 웹 기반의 대시보드가 있을 수 있다. 몇번의 클릭으로 서버 하나를 선택해서 저수준 도구로 부터 정확한 도구를 얻을 수 있어야 한다. 또 다른 개선이 필요한 곳은 시각화이다. 차트, 영역 그래프, 지연 속도 히스토그램, 히트맵 기타등등. 오픈소스 프로젝트와 상용 소프트웨어에서 많은 개선이 일어나고 있다. 저수준 성능과 분석 도구를 많은 엔지니어와 지원조직원에게 접근 할 수 있도록 하는 것은 규모의 시스템인 다음 세대에 필수적이고 중요하다.

 

이것이 리눅스다

 

***

브라이언 앤더슨은 오라일리에서 소프트웨어를 서비스하는데 필수적인 인프라와 운영 편집자를 맡고 있습니다. 고전적인 시스템관리에서부터 클라우드까지 그리고 웹 성능과 도커, 데브옵스가 그의 영역이다. 온라인 교육과 교육을 필요로 하는 사람들을 돕는 일을 10년 이상 해왔다.

 

사샤 골드 슈테인은 셀라 그룹의 CTO로 마이크로소프트 C# MVP 와 Azure MRS이고 Pluralsight 강사이기도 하며 국제적인 컨설턴트와 강사이다. 사샤는 주로 분산 아키텍쳐와 디버깅 그리고 모바일 개발에 관해 컨설팅하며 “Introducing Windows 7 for Developers and Pro .NET Performance”를 저술 했다. 그는 프로 블로거이기도 하고 .NET Debugging, .NET Performance, Android Application Development와 Modern C++ 같은 강의도 했다.

 

****

원문 : Linux performance: Tracing the cloud

번역 : 조현석

댓글 입력
자료실