성능 분석의 목표는 End-user 성능을 향상시키고 소프트웨어 동작에 대한 비용을 줄이기 위한 활동이며, 이러한 활동은 측정 가능한 측면, 요소등을 통해 달성하고자 하는 기대 성능 목표를 설명하는데 도움이 된다.
성능을 얘기할 때 측정 가능한 요소들은 빠질 수 없습니다. 먼저 측정가능한 요소에 대한 용어를 먼저 정의하려 한다.
- latency : 어떤 요청에 대한 응답을 받기까지 기다려야 하는 시간
- Rate : 초 당 동작 또는 요청 수
- Throughput : 단위 시간 당 처리량
- Utilization : 요청을 서비스하는 자원의 경우 그 자원이 얼마나 바쁜 상태인가를 측정하는 기준
- Cost : 가격 대비 성능 비율
위에 나열한 정의 외에도 매우 다양한 요소들이 있다. 다른 부분은 필요할 때 설명하려 한다.
Performance Methodologies
이제 진짜 이 글에서 말하고싶은 내용이다. 성능 분석을 처음 시작하려 하면 무엇부터 해야할지 감이 잘 오지 않는다.(매우 쉽거나, 명확한 문제를 제외하면..) 다양한 툴들이 존재하지만 그 툴에서 제공하는 데이터의 의미가 무엇인지 어떻게 사용해야 할지도 어렵기만하다. 그렇기에 다양한 사람들이 성능 분석에 대한 여러 방법론을 제시하였고, 그 중 몇 가지를 정리해 보려 한다.
성능 분석 방법론을 정의하면 아래와 같다
Process you can follow that provides a starting point, steps, and an ending point.
즉, 성능 분석을 위해, 시작과 나가야할 방법, 끝점을 제시하여 따라갈 수 있도록 하는 과정이다.
1. Workload Characterization (부하 특성 평가 방법)
Workload characterization
은 성능 분석 방법론에 있지만 성능에 직접적으로 관심을 가지는 방법론은 아니다.
이 방법론은 시스템에 가해진 부하에 의해 생겨난 문제가 어떤 종류의 것인지 식별하는 방법으로 많이 사용된다. 그렇기에 성능보다는 시스템에 가해진 부하에 더 초점을 맞춘다.
Workload characterization
을 수행하기 위한 단계는 아래와 같다.
Who
is causing the load?- 누가 부하를 발생 시키는가? 프로세스? 스레드? 그 외 무엇인가?
Why
is the load called?- 왜 부하가 발생하는가? 코드 경로 어떠한가? 스택 트레이스, 플레임 그레프 등으로 확인할 수 있는가?
What
is the load?- 부하가 무엇인가? 측정할 수 있는가? IOPS, Throughput, letency?
How
is the load changing over time?- 부하가 시간에 따라 어떻게 변하는가? 패턴이 있는가?
2. Drill-Down Analysis
Drill-Down
방법은 가장 많이 사용되는 방법이며, 여러분 중에서도 방법론 이름을 모를 뿐 흔히 사용하는 방법 중 하나다.
Drill-Down
방법론은 이름에서 유추할 수 있듯이 높은 곳에서 낮은 곳으로 파고 들어가는 것이다. 문제는 더 높은 곳에서 살펴보고 거기서 발견한 것을 기초로 관심이 없는 범위는 제외하고 문제의 대상을 다시 좁혀나가며 관심이 있는 대상에 대해 더 깊이 파고드는 분석 방법이다.
좀 더 각 단계에 대해 설명하면 아래와 같다.
- 높은 레벨에서 분석을 시작하라.
- 좀 더 깊숙한 다음 단계로 상세하게 조사하라.
- 관심있는 부분이나 단서를 발견하고 분석하라.
- 만약 문제가 해결되지 않는다면 2번 단계로 다시 돌아가라.
3. USE Methodologies
USE 방법론
의 정의부터 언급하고 시작하자.
For every resource, check utilization, saturation, and errors.
모든 자원에 대해, Utilization, Saturation, 그리고 Errors를 확인하는 방법입니다. 이 방법론은 성능 검토 초기 단계에서 시스템의 병목 지점을 분석하기 위해 자주 사용되는 방법론입니다.
시작하기 전에 용어에 대해 정리하자면 아래와 같습니다
- Resource : 모든 물리적인 서버 구성 요소로 CPU, DISK, Memory, Network 등을 일컫는다.
- Utilization : 사용률, 어떤 특정 시간ㄷ 동안 자원이 작업을 하느라 사용한 비율
- Saturation : 포화도, 어떤 자원이 처리 불가능한 추가 작업을 얼마나 가지고 있는지를 보여주는 정도
- Errors : 오류율, 발생한 오류의 횟수
'Linux > Profiling' 카테고리의 다른 글
[glibc] malloc, free mechanism (0) | 2021.02.04 |
---|---|
Process Profiling (0) | 2021.02.04 |
Memory Profiling (0) | 2021.02.04 |
[Profiling Tool] LTTng (0) | 2021.02.04 |
File System Profiling (0) | 2021.02.04 |