SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
이펙티브 퍼포먼스 측정
김규래
서강대학교 전자공학과
September 29 2019
김규래 Sogang University Effective Performance Measurement September 29 2019 1 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
세션에서 다룰 내용
1 왜 성능 측정을 해야 하는가?
2 예제 소개
3 표본 갯수의 중요성
4 신뢰구간
5 가설 검정
6 Warm Starting
7 시스템 노이즈 최소화
김규래 Sogang University Effective Performance Measurement September 29 2019 2 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
세션에서 다루지 않을 내용
1 코드 프로파일링
김규래 Sogang University Effective Performance Measurement September 29 2019 3 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
최적화 이전에는 반드시 측정 또 측정!
“성능을 실제로 벤치마킹 해보기 전까지는
절대 성능을 논하지 말아야 한다.”
Chandler Carruth, CppCon 2015
김규래 Sogang University Effective Performance Measurement September 29 2019 4 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Case 1: Andrei Alexandrescu
“이진 탐색이 당연히 빠르다고 교과서에서는 알려주지만,
introsort 에서는 더 느리다!”
Andrei Alexandrescu, CppCon 2019
김규래 Sogang University Effective Performance Measurement September 29 2019 5 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Case 2: Emery Berger
“실험을 돌린 폴더의 이름을
바꾸자 성능이 완전히 달라졌다.”
Emery Berger, Strange Loop 2019
김규래 Sogang University Effective Performance Measurement September 29 2019 6 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
왜 측정을 하기가 어려운가?
Abstraction layer 의 모든 레벨에서 노이즈가 발생한다
Computer System Abstraction Layers
1 Application
2 Compiler, Driver, Middleware
3 OS
4 Instruction Set Architecture
5 Micro‑architecture
6 그 이하 전자과 stuff
김규래 Sogang University Effective Performance Measurement September 29 2019 7 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
컴퓨터 시스템의 다양한 노이즈 소스
Micro Architecture
Operating System
김규래 Sogang University Effective Performance Measurement September 29 2019 8 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
컴퓨터 시스템의 다양한 노이즈 소스
Micro Architecture
Cache
Branch‑predictor
Processor Frequency Scaling
Out‑of‑order (OoO) pipeline
Operating System
김규래 Sogang University Effective Performance Measurement September 29 2019 9 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
컴퓨터 시스템의 다양한 노이즈 소스
Micro Architecture
Cache
Branch‑predictor
Processor Frequency Scaling
Out‑of‑order (OoO) pipeline
Operating System
Context switching
Page Translation
Blocking I/O
Interrupts
김규래 Sogang University Effective Performance Measurement September 29 2019 10 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Micro Architecture
Memory load 한 건 만으로도 발생할 수 있는 시간 편차1
Memory Fetch Cost
L1 cache 0.95ns
L2 cache 3.00ns
L3 cache 9.2ns
RAM 66ns
1
AMD Ryzen 기준
김규래 Sogang University Effective Performance Measurement September 29 2019 11 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
컴퓨터 시스템의 다양한 노이즈 소스
Compiler
Inlining
Cache Prefetching
Dead‑code Removal
김규래 Sogang University Effective Performance Measurement September 29 2019 12 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Matrix Multiplication
256 × 256 행렬곱
루프 vs 루프 언롤링
A ∈ R256
B ∈ R256
C = A · B
김규래 Sogang University Effective Performance Measurement September 29 2019 13 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Matrix Multiplication
256 × 256 행렬곱
루프 vs 루프 언롤링
A ∈ R256
B ∈ R256
C = A · B
루프 언롤링을 하면 빨라진다니까 이왕 하는거 화끈하게 하면 되겠지?
김규래 Sogang University Effective Performance Measurement September 29 2019 14 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Matrix Multiplication (Naive)
inline dynamic_matrix<double>
gemm(dynamic_matrix<double> const& A,
dynamic_matrix<double> const& B)
{
size_t M = A.rows();
size_t K = A.columns();
size_t N = B.columns();
auto C = dynamic_matrix<double>(M, N);
for(size_t i = 0; i < M; ++i)
{
for(size_t j = 0; j < N; ++j)
{
double sum = 0;
for(size_t k = 0; k < K; ++k)
{
sum += A(i, k) * B(k, j);
}
C(i, j) = sum;
}
}
return C;
}
김규래 Sogang University Effective Performance Measurement September 29 2019 15 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Matrix Multiplication (Unrolled)
inline dynamic_matrix<double>
gemm(dynamic_matrix<double> const& A,
dynamic_matrix<double> const& B)
{
size_t M = A.rows();
size_t K = A.columns();
size_t N = B.columns();
auto C = dynamic_matrix<double>(M, N);
for(size_t i = 0; i < M; ++i)
{
for(size_t j = 0; j < N; ++j)
{
double sum = 0;
for(size_t k = 0; k < K; ++k)
{
sum += A(i, k) * B(k, j);
}
C(i, j) = sum;
}
}
return C;
}
김규래 Sogang University Effective Performance Measurement September 29 2019 16 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Matrix Multiplication (Naive)
64배 Loop unrolling 을 진행
Loop unrolling 은 가장 기본적인 최적화 중에 하나
double sum = 0;
for(size_t k = 0; k < K; ++k)
{
if(K - k > 64)
{
sum += A(i, k) * B(k, j);
sum += A(i, k+1) * B(k+1, j);
sum += A(i, k+2) * B(k+2, j);
sum += A(i, k+3) * B(k+3, j);
sum += A(i, k+4) * B(k+4, j);
sum += A(i, k+5) * B(k+5, j);
/*  */
k += 63;
}
else
sum += A(i, k) * B(k, j);
}
김규래 Sogang University Effective Performance Measurement September 29 2019 17 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
밴치마크 결과
김규래 Sogang University Effective Performance Measurement September 29 2019 18 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
밴치마크 결과
여기서 결과를 받아들이면 확증편향 (confirmation bias)!
김규래 Sogang University Effective Performance Measurement September 29 2019 19 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
방금 본 그래프에서 가져야 하는 의문
어떤 환경에서 측정하였는가?
입력한 데이터의 타입, 양은 얼마인가?
데이터의 분포는 얼마인가?
어떻게 측정하였는가?
몇번이나 측정을 했는가?
측정한 샘플들을 어떻게 종합하였는가?
신뢰구간은 얼마인가?
제시한 결과는 다른 조건에서도 성립하는가?
데이터의 크기나 양이 바뀌어도 비슷한가?
다른 환경에서 실행해도 비슷한가?
김규래 Sogang University Effective Performance Measurement September 29 2019 20 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
측정 환경
밴치마크를 읽을 때는 항상 측정 환경을 먼저 확인해야 합니다
Environment
intel i7–7700HQ
Linux 4.14
gcc 9.1 -O0
측정 횟수: 1회
김규래 Sogang University Effective Performance Measurement September 29 2019 21 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
128 회 반복
정말 unrolling 을 한게 더 느릴까?
김규래 Sogang University Effective Performance Measurement September 29 2019 22 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
신뢰구간이란?
(지루한 ⋯)정의
표본 데이터로부터 구성되는 통계량으로부터 모지모수를 추정는
경우, 모지모수가 어떤 확률로 지정되는 구간에 들어갈 확률
코드의 실제 실행시간 µ 가 임의로 지정한 확률만큼 존재하는 범위!
Z‑Score
{T1, T2, T3 . . .}, ˆT = E[T], Ti ∼ N(µ, σ)
ˆT − 1.96
σ
√
n
≤ µ ≤ ˆT + 1.96
σ
√
n
김규래 Sogang University Effective Performance Measurement September 29 2019 23 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
프로그램 실행 시간은 정규분포를 따르는가?
중심 극한 정리 (Central Limit Theorem)
충분히 많은 독립 확률변수들의 합은 표준 정규분포를 따른다
“독립 확률변수”
확률변수들은 컴퓨터 시스템의 노이즈 ϵ
Temporal, spatial locality 로 인해서 완벽한 독립은 아니나 꽤
독립
“충분히 많은”
측정을 하는 구간이 넓을수록 더 많은 노이즈가 영향을 미치면서
정규분포를 따르게 됨
김규래 Sogang University Effective Performance Measurement September 29 2019 24 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
중심극한 정리
실제로 컴퓨터 프로그램들은 쉽게 정규분포를 따르게 되는 것으로
알려져 있음2
2
Adve, Vikram Sadanand, and Mary K. Vernon. “The influence of
random delays on parallel execution times.” 1993 ACM SIGMETRICS
김규래 Sogang University Effective Performance Measurement September 29 2019 25 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
프로그램 실행 시간은 정규분포를 따르는가?
if( /* ... */ )
{
/* probability 50% */
}
else
{
/* probability 50% */
}
프로그램의 형태에 따라서는 정규분포와 매우 다른 분포가
나오기도 함
위의 예제의 경우 bimodal distribution 이 나올 확률이 높음
근본적으로 정규분포를 따르지 않는 실행시간도 있음
병렬 루프의 실행 시간은 max(T1, T2, . . .) 으로, 정규분포가 아님
프로그램이 최적화될수록 정규분포로부터 멀어짐
김규래 Sogang University Effective Performance Measurement September 29 2019 26 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
z‑score 신뢰구간
김규래 Sogang University Effective Performance Measurement September 29 2019 27 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Hypothesis Testing
가설 검정 (Hypothesis Testing)
가설검정은 연구자의 주장에 경험적 합리성이 있는가를 검토하는
통계적 방법이다.
가설 1 (H1)
Unrolling 을 수행했을 때 execution time 의 평균이 더 낮다
가설 0 (H0)
그렇지 않다 (Null hypothesis)
이 경우 execution time 은 정규분포를 따를 가능성이 높기 때문에
T‑Test 를 사용할 수 있습니다.
김규래 Sogang University Effective Performance Measurement September 29 2019 28 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
검정 결과
가설 0 (H0)
그렇지 않다 (Null hypothesis)
가설 1 (H1)
Unrolling 을 수행했을 때 execution time 의 평균이 더 낮다
One sample T‑Test
Test summary:
outcome with 95% confidence : f a i l s to reject H_0
two−sided p−value : 0.5540
Details :
number of observations : 256
t−s t a t i s t i c : −0.5925551366027152
degrees of freedom : 255
empirical standard error : 0.0008589782340963979
김규래 Sogang University Effective Performance Measurement September 29 2019 29 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
compiler optimization
김규래 Sogang University Effective Performance Measurement September 29 2019 30 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
검정 결과
가설 0 (H0)
그렇지 않다 (Null hypothesis)
가설 1 (H1)
Unrolling 을 수행했을 때 execution time 의 평균이 더 낮다
One sample T‑Test
Test summary:
outcome with 95% confidence : reject H_0
two−sided p−value : 1e−27
Details :
number of observations : 256
t−s t a t i s t i c : −12.382404994083672
degrees of freedom : 255
empirical standard error : 0.00013816665575860985
김규래 Sogang University Effective Performance Measurement September 29 2019 31 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
데이터의 히스토그램
김규래 Sogang University Effective Performance Measurement September 29 2019 32 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Locality 로 인한 오차
Temporal locality, spatial locality 관련된 기능들,
Cache
Translation Look‑aside Buffer (TLB)
Branch predictor
etc ⋯
로 인해서 생기는 오차를 줄이기 위해서는,
측정 샘플들을 최대한으로 모으거나
최초 몇 회의 측정들을 버리거나
해야 합니다.
김규래 Sogang University Effective Performance Measurement September 29 2019 33 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
샘플의 수가 충분하지 않은 경우
Sample size = 16
김규래 Sogang University Effective Performance Measurement September 29 2019 34 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Effect of Locality
데이터의 엄청난 노이즈 레벨
최초 샘플들의 positive bias
등을 확인할 수 있습니다.
김규래 Sogang University Effective Performance Measurement September 29 2019 35 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
중간값 (Median) 트릭
평균값 대신에 중간값을 사용하는 방법
데이터 노이즈에 덜 취약
극단적인 값 (cold start) 들에 덜 취약
김규래 Sogang University Effective Performance Measurement September 29 2019 36 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
샘플의 수가 충분하지 않은 경우
Sample size = 16, median
256 샘플들의 평균 만큼은 아니지만
더 평균에 가까운 것을 확인할 수 있습니다.
김규래 Sogang University Effective Performance Measurement September 29 2019 37 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Warm starting 에 관한 여담
엄밀하게는 다양한 시스템 상태를 모두 실험해봐야 합니다
Stabilizer3 와 같은 툴을 사용
3
Curtsinger, Charlie, and Emery D. Berger. “STABILIZER: statistically
sound performance evaluation.” ACM SIGPLAN Notices. 2013.
김규래 Sogang University Effective Performance Measurement September 29 2019 38 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
OS 노이즈 최소화
측정 OS 의 노이즈를 최소화해야됩니다.
측정과 무관한 프로그램들은 종료
서버의 경우 접속자 통제
CPU 의 frequency scaling 해제
김규래 Sogang University Effective Performance Measurement September 29 2019 39 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
OS 노이즈 최소화
Chromium 을 끄고 리눅스의 cpupower 를 이용해서 CPU
Clock 을 3.0 GHz 로 고정한 결과
Kolmogorov‑Smirnov Test
naive: p‑value  1e–49
unrolled: p‑value  1e–66
김규래 Sogang University Effective Performance Measurement September 29 2019 40 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Out circuit 측정
회로의 부품을 측정할 때는 회로에서 제거를 하고 회로 밖에서 측정
회로 내에 있을 때는 다른 부품들과의 연결로 인해서 측정값이
부정확
인라이닝이 되는 경우에는 기존 코드와 매우 복잡하게 상호작용
locality 로 인한 노이즈와도 연관이 있음
마이크로밴치마킹의 결과가 현장 성능과 매우 다를 수 있습니다.
quick‑bench.com, googlebench 에서의 결과를 의심할것
실제 배포현장과 최대한 비슷한 측정 환경을 만드는게 중요
김규래 Sogang University Effective Performance Measurement September 29 2019 41 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Noinline
gemm 을 noinline 으로 설정
Kolmogorov‑Smirnov Test
naive: p‑value  1e–58
unrolled: p‑value  1e–55
김규래 Sogang University Effective Performance Measurement September 29 2019 42 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
결론
Takeways
최적화 등을 하기 전에는 반드시 측정 또 측정
OS 단에서 최대한 노이즈를 통제
측정 횟수를 최대한 많이
측정하는 영역이 정규분포를 따르는지 확인
측정값을 비교할 때는 신뢰구간을 반드시 그릴것
유의미함을 확실하게 하기 위해서는 가설검정
표본이 적거나 noise 가 심한 경우 median 트릭
실제 배포현장과 최대한 비슷한 실험 환경
정말 엄밀한 성능이 필요한 경우 randomizer 사용
김규래 Sogang University Effective Performance Measurement September 29 2019 43 / 45
왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화
Noinline
결론
감사합니다.
김규래 Sogang University Effective Performance Measurement September 29 2019 44 / 45

Mais conteúdo relacionado

Semelhante a 이팩티브 퍼포먼스 측정

[IMQA] performance consulting
[IMQA] performance consulting[IMQA] performance consulting
[IMQA] performance consulting
IMQA
 
Ksejw2011 테스팅프론티어역량평가모델소개와2010평가사례소개및분석발표 윤형진
Ksejw2011 테스팅프론티어역량평가모델소개와2010평가사례소개및분석발표 윤형진Ksejw2011 테스팅프론티어역량평가모델소개와2010평가사례소개및분석발표 윤형진
Ksejw2011 테스팅프론티어역량평가모델소개와2010평가사례소개및분석발표 윤형진
형진 윤
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
ChangKyu Song
 
[삼성Mns] 회사소개서
[삼성Mns] 회사소개서[삼성Mns] 회사소개서
[삼성Mns] 회사소개서
rotcbiz
 
알아두면 쓸데있는 잡학사전- AWS Tips편::허준, 김병수::AWS Summit Seoul 2018
알아두면 쓸데있는 잡학사전- AWS Tips편::허준, 김병수::AWS Summit Seoul 2018알아두면 쓸데있는 잡학사전- AWS Tips편::허준, 김병수::AWS Summit Seoul 2018
알아두면 쓸데있는 잡학사전- AWS Tips편::허준, 김병수::AWS Summit Seoul 2018
Amazon Web Services Korea
 

Semelhante a 이팩티브 퍼포먼스 측정 (20)

Advanced nGrinder
Advanced nGrinderAdvanced nGrinder
Advanced nGrinder
 
AI/ML re:invent 2019 recap at Delivery Hero Korea
AI/ML re:invent 2019 recap at Delivery Hero KoreaAI/ML re:invent 2019 recap at Delivery Hero Korea
AI/ML re:invent 2019 recap at Delivery Hero Korea
 
C++ 태스크 기반 병렬 프로그래밍
C++ 태스크 기반 병렬 프로그래밍C++ 태스크 기반 병렬 프로그래밍
C++ 태스크 기반 병렬 프로그래밍
 
더 나은 S/W를 만드는 것에 관하여 (OKKY 세미나)
더 나은 S/W를 만드는 것에 관하여 (OKKY 세미나)더 나은 S/W를 만드는 것에 관하여 (OKKY 세미나)
더 나은 S/W를 만드는 것에 관하여 (OKKY 세미나)
 
[IMQA] performance consulting
[IMQA] performance consulting[IMQA] performance consulting
[IMQA] performance consulting
 
테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
 
Istqb 4-테스트설계기법-2015-3-배포
Istqb 4-테스트설계기법-2015-3-배포Istqb 4-테스트설계기법-2015-3-배포
Istqb 4-테스트설계기법-2015-3-배포
 
[삼성MNS] 회사소개서
[삼성MNS] 회사소개서[삼성MNS] 회사소개서
[삼성MNS] 회사소개서
 
Bag of Tricks for Image Classification with Convolutional Neural Networks (C...
Bag of Tricks for Image Classification  with Convolutional Neural Networks (C...Bag of Tricks for Image Classification  with Convolutional Neural Networks (C...
Bag of Tricks for Image Classification with Convolutional Neural Networks (C...
 
Clean code chapter9
Clean code chapter9Clean code chapter9
Clean code chapter9
 
Ksejw2011 테스팅프론티어역량평가모델소개와2010평가사례소개및분석발표 윤형진
Ksejw2011 테스팅프론티어역량평가모델소개와2010평가사례소개및분석발표 윤형진Ksejw2011 테스팅프론티어역량평가모델소개와2010평가사례소개및분석발표 윤형진
Ksejw2011 테스팅프론티어역량평가모델소개와2010평가사례소개및분석발표 윤형진
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
[삼성Mns] 회사소개서
[삼성Mns] 회사소개서[삼성Mns] 회사소개서
[삼성Mns] 회사소개서
 
알아두면 쓸데있는 잡학사전- AWS Tips편::허준, 김병수::AWS Summit Seoul 2018
알아두면 쓸데있는 잡학사전- AWS Tips편::허준, 김병수::AWS Summit Seoul 2018알아두면 쓸데있는 잡학사전- AWS Tips편::허준, 김병수::AWS Summit Seoul 2018
알아두면 쓸데있는 잡학사전- AWS Tips편::허준, 김병수::AWS Summit Seoul 2018
 
모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415
 
Coding interview
Coding interviewCoding interview
Coding interview
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법
 
AWS Compute Optimizer를 활용한 비용 효율적인 EC2 인스턴스 구성 - 윤석찬 :: AWS Unboxing 온라인 세미나
AWS Compute Optimizer를 활용한 비용 효율적인 EC2 인스턴스 구성 - 윤석찬 :: AWS Unboxing 온라인 세미나AWS Compute Optimizer를 활용한 비용 효율적인 EC2 인스턴스 구성 - 윤석찬 :: AWS Unboxing 온라인 세미나
AWS Compute Optimizer를 활용한 비용 효율적인 EC2 인스턴스 구성 - 윤석찬 :: AWS Unboxing 온라인 세미나
 

이팩티브 퍼포먼스 측정

  • 1. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 이펙티브 퍼포먼스 측정 김규래 서강대학교 전자공학과 September 29 2019 김규래 Sogang University Effective Performance Measurement September 29 2019 1 / 45
  • 2. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 세션에서 다룰 내용 1 왜 성능 측정을 해야 하는가? 2 예제 소개 3 표본 갯수의 중요성 4 신뢰구간 5 가설 검정 6 Warm Starting 7 시스템 노이즈 최소화 김규래 Sogang University Effective Performance Measurement September 29 2019 2 / 45
  • 3. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 세션에서 다루지 않을 내용 1 코드 프로파일링 김규래 Sogang University Effective Performance Measurement September 29 2019 3 / 45
  • 4. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 최적화 이전에는 반드시 측정 또 측정! “성능을 실제로 벤치마킹 해보기 전까지는 절대 성능을 논하지 말아야 한다.” Chandler Carruth, CppCon 2015 김규래 Sogang University Effective Performance Measurement September 29 2019 4 / 45
  • 5. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Case 1: Andrei Alexandrescu “이진 탐색이 당연히 빠르다고 교과서에서는 알려주지만, introsort 에서는 더 느리다!” Andrei Alexandrescu, CppCon 2019 김규래 Sogang University Effective Performance Measurement September 29 2019 5 / 45
  • 6. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Case 2: Emery Berger “실험을 돌린 폴더의 이름을 바꾸자 성능이 완전히 달라졌다.” Emery Berger, Strange Loop 2019 김규래 Sogang University Effective Performance Measurement September 29 2019 6 / 45
  • 7. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 왜 측정을 하기가 어려운가? Abstraction layer 의 모든 레벨에서 노이즈가 발생한다 Computer System Abstraction Layers 1 Application 2 Compiler, Driver, Middleware 3 OS 4 Instruction Set Architecture 5 Micro‑architecture 6 그 이하 전자과 stuff 김규래 Sogang University Effective Performance Measurement September 29 2019 7 / 45
  • 8. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 컴퓨터 시스템의 다양한 노이즈 소스 Micro Architecture Operating System 김규래 Sogang University Effective Performance Measurement September 29 2019 8 / 45
  • 9. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 컴퓨터 시스템의 다양한 노이즈 소스 Micro Architecture Cache Branch‑predictor Processor Frequency Scaling Out‑of‑order (OoO) pipeline Operating System 김규래 Sogang University Effective Performance Measurement September 29 2019 9 / 45
  • 10. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 컴퓨터 시스템의 다양한 노이즈 소스 Micro Architecture Cache Branch‑predictor Processor Frequency Scaling Out‑of‑order (OoO) pipeline Operating System Context switching Page Translation Blocking I/O Interrupts 김규래 Sogang University Effective Performance Measurement September 29 2019 10 / 45
  • 11. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Micro Architecture Memory load 한 건 만으로도 발생할 수 있는 시간 편차1 Memory Fetch Cost L1 cache 0.95ns L2 cache 3.00ns L3 cache 9.2ns RAM 66ns 1 AMD Ryzen 기준 김규래 Sogang University Effective Performance Measurement September 29 2019 11 / 45
  • 12. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 컴퓨터 시스템의 다양한 노이즈 소스 Compiler Inlining Cache Prefetching Dead‑code Removal 김규래 Sogang University Effective Performance Measurement September 29 2019 12 / 45
  • 13. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Matrix Multiplication 256 × 256 행렬곱 루프 vs 루프 언롤링 A ∈ R256 B ∈ R256 C = A · B 김규래 Sogang University Effective Performance Measurement September 29 2019 13 / 45
  • 14. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Matrix Multiplication 256 × 256 행렬곱 루프 vs 루프 언롤링 A ∈ R256 B ∈ R256 C = A · B 루프 언롤링을 하면 빨라진다니까 이왕 하는거 화끈하게 하면 되겠지? 김규래 Sogang University Effective Performance Measurement September 29 2019 14 / 45
  • 15. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Matrix Multiplication (Naive) inline dynamic_matrix<double> gemm(dynamic_matrix<double> const& A, dynamic_matrix<double> const& B) { size_t M = A.rows(); size_t K = A.columns(); size_t N = B.columns(); auto C = dynamic_matrix<double>(M, N); for(size_t i = 0; i < M; ++i) { for(size_t j = 0; j < N; ++j) { double sum = 0; for(size_t k = 0; k < K; ++k) { sum += A(i, k) * B(k, j); } C(i, j) = sum; } } return C; } 김규래 Sogang University Effective Performance Measurement September 29 2019 15 / 45
  • 16. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Matrix Multiplication (Unrolled) inline dynamic_matrix<double> gemm(dynamic_matrix<double> const& A, dynamic_matrix<double> const& B) { size_t M = A.rows(); size_t K = A.columns(); size_t N = B.columns(); auto C = dynamic_matrix<double>(M, N); for(size_t i = 0; i < M; ++i) { for(size_t j = 0; j < N; ++j) { double sum = 0; for(size_t k = 0; k < K; ++k) { sum += A(i, k) * B(k, j); } C(i, j) = sum; } } return C; } 김규래 Sogang University Effective Performance Measurement September 29 2019 16 / 45
  • 17. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Matrix Multiplication (Naive) 64배 Loop unrolling 을 진행 Loop unrolling 은 가장 기본적인 최적화 중에 하나 double sum = 0; for(size_t k = 0; k < K; ++k) { if(K - k > 64) { sum += A(i, k) * B(k, j); sum += A(i, k+1) * B(k+1, j); sum += A(i, k+2) * B(k+2, j); sum += A(i, k+3) * B(k+3, j); sum += A(i, k+4) * B(k+4, j); sum += A(i, k+5) * B(k+5, j); /* */ k += 63; } else sum += A(i, k) * B(k, j); } 김규래 Sogang University Effective Performance Measurement September 29 2019 17 / 45
  • 18. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 밴치마크 결과 김규래 Sogang University Effective Performance Measurement September 29 2019 18 / 45
  • 19. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 밴치마크 결과 여기서 결과를 받아들이면 확증편향 (confirmation bias)! 김규래 Sogang University Effective Performance Measurement September 29 2019 19 / 45
  • 20. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 방금 본 그래프에서 가져야 하는 의문 어떤 환경에서 측정하였는가? 입력한 데이터의 타입, 양은 얼마인가? 데이터의 분포는 얼마인가? 어떻게 측정하였는가? 몇번이나 측정을 했는가? 측정한 샘플들을 어떻게 종합하였는가? 신뢰구간은 얼마인가? 제시한 결과는 다른 조건에서도 성립하는가? 데이터의 크기나 양이 바뀌어도 비슷한가? 다른 환경에서 실행해도 비슷한가? 김규래 Sogang University Effective Performance Measurement September 29 2019 20 / 45
  • 21. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 측정 환경 밴치마크를 읽을 때는 항상 측정 환경을 먼저 확인해야 합니다 Environment intel i7–7700HQ Linux 4.14 gcc 9.1 -O0 측정 횟수: 1회 김규래 Sogang University Effective Performance Measurement September 29 2019 21 / 45
  • 22. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 128 회 반복 정말 unrolling 을 한게 더 느릴까? 김규래 Sogang University Effective Performance Measurement September 29 2019 22 / 45
  • 23. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 신뢰구간이란? (지루한 ⋯)정의 표본 데이터로부터 구성되는 통계량으로부터 모지모수를 추정는 경우, 모지모수가 어떤 확률로 지정되는 구간에 들어갈 확률 코드의 실제 실행시간 µ 가 임의로 지정한 확률만큼 존재하는 범위! Z‑Score {T1, T2, T3 . . .}, ˆT = E[T], Ti ∼ N(µ, σ) ˆT − 1.96 σ √ n ≤ µ ≤ ˆT + 1.96 σ √ n 김규래 Sogang University Effective Performance Measurement September 29 2019 23 / 45
  • 24. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 프로그램 실행 시간은 정규분포를 따르는가? 중심 극한 정리 (Central Limit Theorem) 충분히 많은 독립 확률변수들의 합은 표준 정규분포를 따른다 “독립 확률변수” 확률변수들은 컴퓨터 시스템의 노이즈 ϵ Temporal, spatial locality 로 인해서 완벽한 독립은 아니나 꽤 독립 “충분히 많은” 측정을 하는 구간이 넓을수록 더 많은 노이즈가 영향을 미치면서 정규분포를 따르게 됨 김규래 Sogang University Effective Performance Measurement September 29 2019 24 / 45
  • 25. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 중심극한 정리 실제로 컴퓨터 프로그램들은 쉽게 정규분포를 따르게 되는 것으로 알려져 있음2 2 Adve, Vikram Sadanand, and Mary K. Vernon. “The influence of random delays on parallel execution times.” 1993 ACM SIGMETRICS 김규래 Sogang University Effective Performance Measurement September 29 2019 25 / 45
  • 26. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 프로그램 실행 시간은 정규분포를 따르는가? if( /* ... */ ) { /* probability 50% */ } else { /* probability 50% */ } 프로그램의 형태에 따라서는 정규분포와 매우 다른 분포가 나오기도 함 위의 예제의 경우 bimodal distribution 이 나올 확률이 높음 근본적으로 정규분포를 따르지 않는 실행시간도 있음 병렬 루프의 실행 시간은 max(T1, T2, . . .) 으로, 정규분포가 아님 프로그램이 최적화될수록 정규분포로부터 멀어짐 김규래 Sogang University Effective Performance Measurement September 29 2019 26 / 45
  • 27. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 z‑score 신뢰구간 김규래 Sogang University Effective Performance Measurement September 29 2019 27 / 45
  • 28. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Hypothesis Testing 가설 검정 (Hypothesis Testing) 가설검정은 연구자의 주장에 경험적 합리성이 있는가를 검토하는 통계적 방법이다. 가설 1 (H1) Unrolling 을 수행했을 때 execution time 의 평균이 더 낮다 가설 0 (H0) 그렇지 않다 (Null hypothesis) 이 경우 execution time 은 정규분포를 따를 가능성이 높기 때문에 T‑Test 를 사용할 수 있습니다. 김규래 Sogang University Effective Performance Measurement September 29 2019 28 / 45
  • 29. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 검정 결과 가설 0 (H0) 그렇지 않다 (Null hypothesis) 가설 1 (H1) Unrolling 을 수행했을 때 execution time 의 평균이 더 낮다 One sample T‑Test Test summary: outcome with 95% confidence : f a i l s to reject H_0 two−sided p−value : 0.5540 Details : number of observations : 256 t−s t a t i s t i c : −0.5925551366027152 degrees of freedom : 255 empirical standard error : 0.0008589782340963979 김규래 Sogang University Effective Performance Measurement September 29 2019 29 / 45
  • 30. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 compiler optimization 김규래 Sogang University Effective Performance Measurement September 29 2019 30 / 45
  • 31. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 검정 결과 가설 0 (H0) 그렇지 않다 (Null hypothesis) 가설 1 (H1) Unrolling 을 수행했을 때 execution time 의 평균이 더 낮다 One sample T‑Test Test summary: outcome with 95% confidence : reject H_0 two−sided p−value : 1e−27 Details : number of observations : 256 t−s t a t i s t i c : −12.382404994083672 degrees of freedom : 255 empirical standard error : 0.00013816665575860985 김규래 Sogang University Effective Performance Measurement September 29 2019 31 / 45
  • 32. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 데이터의 히스토그램 김규래 Sogang University Effective Performance Measurement September 29 2019 32 / 45
  • 33. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Locality 로 인한 오차 Temporal locality, spatial locality 관련된 기능들, Cache Translation Look‑aside Buffer (TLB) Branch predictor etc ⋯ 로 인해서 생기는 오차를 줄이기 위해서는, 측정 샘플들을 최대한으로 모으거나 최초 몇 회의 측정들을 버리거나 해야 합니다. 김규래 Sogang University Effective Performance Measurement September 29 2019 33 / 45
  • 34. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 샘플의 수가 충분하지 않은 경우 Sample size = 16 김규래 Sogang University Effective Performance Measurement September 29 2019 34 / 45
  • 35. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Effect of Locality 데이터의 엄청난 노이즈 레벨 최초 샘플들의 positive bias 등을 확인할 수 있습니다. 김규래 Sogang University Effective Performance Measurement September 29 2019 35 / 45
  • 36. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 중간값 (Median) 트릭 평균값 대신에 중간값을 사용하는 방법 데이터 노이즈에 덜 취약 극단적인 값 (cold start) 들에 덜 취약 김규래 Sogang University Effective Performance Measurement September 29 2019 36 / 45
  • 37. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 샘플의 수가 충분하지 않은 경우 Sample size = 16, median 256 샘플들의 평균 만큼은 아니지만 더 평균에 가까운 것을 확인할 수 있습니다. 김규래 Sogang University Effective Performance Measurement September 29 2019 37 / 45
  • 38. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Warm starting 에 관한 여담 엄밀하게는 다양한 시스템 상태를 모두 실험해봐야 합니다 Stabilizer3 와 같은 툴을 사용 3 Curtsinger, Charlie, and Emery D. Berger. “STABILIZER: statistically sound performance evaluation.” ACM SIGPLAN Notices. 2013. 김규래 Sogang University Effective Performance Measurement September 29 2019 38 / 45
  • 39. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 OS 노이즈 최소화 측정 OS 의 노이즈를 최소화해야됩니다. 측정과 무관한 프로그램들은 종료 서버의 경우 접속자 통제 CPU 의 frequency scaling 해제 김규래 Sogang University Effective Performance Measurement September 29 2019 39 / 45
  • 40. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 OS 노이즈 최소화 Chromium 을 끄고 리눅스의 cpupower 를 이용해서 CPU Clock 을 3.0 GHz 로 고정한 결과 Kolmogorov‑Smirnov Test naive: p‑value 1e–49 unrolled: p‑value 1e–66 김규래 Sogang University Effective Performance Measurement September 29 2019 40 / 45
  • 41. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Out circuit 측정 회로의 부품을 측정할 때는 회로에서 제거를 하고 회로 밖에서 측정 회로 내에 있을 때는 다른 부품들과의 연결로 인해서 측정값이 부정확 인라이닝이 되는 경우에는 기존 코드와 매우 복잡하게 상호작용 locality 로 인한 노이즈와도 연관이 있음 마이크로밴치마킹의 결과가 현장 성능과 매우 다를 수 있습니다. quick‑bench.com, googlebench 에서의 결과를 의심할것 실제 배포현장과 최대한 비슷한 측정 환경을 만드는게 중요 김규래 Sogang University Effective Performance Measurement September 29 2019 41 / 45
  • 42. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Noinline gemm 을 noinline 으로 설정 Kolmogorov‑Smirnov Test naive: p‑value 1e–58 unrolled: p‑value 1e–55 김규래 Sogang University Effective Performance Measurement September 29 2019 42 / 45
  • 43. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 결론 Takeways 최적화 등을 하기 전에는 반드시 측정 또 측정 OS 단에서 최대한 노이즈를 통제 측정 횟수를 최대한 많이 측정하는 영역이 정규분포를 따르는지 확인 측정값을 비교할 때는 신뢰구간을 반드시 그릴것 유의미함을 확실하게 하기 위해서는 가설검정 표본이 적거나 noise 가 심한 경우 median 트릭 실제 배포현장과 최대한 비슷한 실험 환경 정말 엄밀한 성능이 필요한 경우 randomizer 사용 김규래 Sogang University Effective Performance Measurement September 29 2019 43 / 45
  • 44. 왜 성능 측정을 해야 하는가? 예제 소개 표본 갯수의 중요성 신뢰구간 가설 검정 Warm Starting 시스템 노이즈 최소화 Noinline 결론 감사합니다. 김규래 Sogang University Effective Performance Measurement September 29 2019 44 / 45