성능 분석의 목표는 End-user 성능을 향상시키고 소프트웨어 동작에 대한 비용을 줄이기 위한 활동이며, 이러한 활동은 측정 가능한 측면, 요소등을 통해 달성하고자 하는 기대 성능 목표를 설명하는데 도움이 된다.
성능을 얘기할 때 측정 가능한 요소들은 빠질 수 없습니다. 먼저 측정가능한 요소에 대한 용어를 먼저 정의하려 한다.
위에 나열한 정의 외에도 매우 다양한 요소들이 있다. 다른 부분은 필요할 때 설명하려 한다.
이제 진짜 이 글에서 말하고싶은 내용이다. 성능 분석을 처음 시작하려 하면 무엇부터 해야할지 감이 잘 오지 않는다.(매우 쉽거나, 명확한 문제를 제외하면..) 다양한 툴들이 존재하지만 그 툴에서 제공하는 데이터의 의미가 무엇인지 어떻게 사용해야 할지도 어렵기만하다. 그렇기에 다양한 사람들이 성능 분석에 대한 여러 방법론을 제시하였고, 그 중 몇 가지를 정리해 보려 한다.
성능 분석 방법론을 정의하면 아래와 같다
Process you can follow that provides a starting point, steps, and an ending point.
즉, 성능 분석을 위해, 시작과 나가야할 방법, 끝점을 제시하여 따라갈 수 있도록 하는 과정이다.
Workload characterization
은 성능 분석 방법론에 있지만 성능에 직접적으로 관심을 가지는 방법론은 아니다.
이 방법론은 시스템에 가해진 부하에 의해 생겨난 문제가 어떤 종류의 것인지 식별하는 방법으로 많이 사용된다. 그렇기에 성능보다는 시스템에 가해진 부하에 더 초점을 맞춘다.
Workload characterization
을 수행하기 위한 단계는 아래와 같다.
Who
is causing the load?
Why
is the load called?
What
is the load?
How
is the load changing over time?
Drill-Down
방법은 가장 많이 사용되는 방법이며, 여러분 중에서도 방법론 이름을 모를 뿐 흔히 사용하는 방법 중 하나다.
Drill-Down
방법론은 이름에서 유추할 수 있듯이 높은 곳에서 낮은 곳으로 파고 들어가는 것이다. 문제는 더 높은 곳에서 살펴보고 거기서 발견한 것을 기초로 관심이 없는 범위는 제외하고 문제의 대상을 다시 좁혀나가며 관심이 있는 대상에 대해 더 깊이 파고드는 분석 방법이다.
좀 더 각 단계에 대해 설명하면 아래와 같다.
USE 방법론
의 정의부터 언급하고 시작하자.
For every resource, check utilization, saturation, and errors.
모든 자원에 대해, Utilization, Saturation, 그리고 Errors를 확인하는 방법입니다. 이 방법론은 성능 검토 초기 단계에서 시스템의 병목 지점을 분석하기 위해 자주 사용되는 방법론입니다.
시작하기 전에 용어에 대해 정리하자면 아래와 같습니다