์ฐ๋ฆฌ๋ Linux ์์คํ ์์ CPU ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋๊ตฌ์ ๋ํด ๊ณ์ํด์ ์ด์ผ๊ธฐํฉ๋๋ค. ์ค๋ ์๋ฃ์๋ temci, uarch-bench, likwid, perf-tools ๋ฐ llvm-mca๊ฐ ์์ต๋๋ค.
๋ ๋ง์ ๋ฒค์น๋งํฌ:
Sysbench, UnixBench, Phoronix ํ ์คํธ ์ค์ํธ, Vdbench ๋ฐ IOzone ์ธํฐ๋ฒค์น, Fio, Hdparm, S ๋ฐ Bonnie Iometer, DD, vpsbench, HammerDB ๋ฐ 7-Zip
์ฌ์ง โ
ํ
์
๋ ํ๋ก๊ทธ๋จ์ ์คํ ์๊ฐ์ ์ถ์ ํ๋ ๋๊ตฌ์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฅผ ํตํด ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํ ์๊ฐ์ ๋น๊ตํ ์ ์์ต๋๋ค. ์ด ์ ํธ๋ฆฌํฐ์ ์์ฑ์๋ ๋
์ผ ํ์์ธ Johannes Bechberger์์ผ๋ฉฐ, ๊ทธ๋ 2016๋
ํ์ฌ ๋
ผ๋ฌธ์ ์ผ๋ถ๋ก ์ด ์ ํธ๋ฆฌํฐ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ค๋์ ๋๊ตฌ
Johannes๋ ํต์ ๋ ํ๊ฒฝ์์ ์ปดํจํ
์์คํ
์ ์ฑ๋ฅ์ ์ธก์ ํ ์ ์๋ ๋๊ตฌ๋ฅผ ๋ง๋ค๊ณ ์ถ์์ต๋๋ค. ๋ฐ๋ผ์ temci์ ์ฃผ์ ๊ธฐ๋ฅ ์ค ํ๋๋ ํ
์คํธ ํ๊ฒฝ์ ์ค์ ํ๋ ๊ธฐ๋ฅ์
๋๋ค. ์๋ฅผ ๋ค์ด,
์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ ์ ํธ๋ฆฌํฐ์ ๋ชจ์ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# compare the run times of two programs, running them each 20 times
> temci short exec "sleep 0.1" "sleep 0.2" --runs 20
Benchmark 20 times [####################################] 100%
Report for single runs
sleep 0.1 ( 20 single benchmarks)
avg_mem_usage mean = 0.000, deviation = 0.0
avg_res_set mean = 0.000, deviation = 0.0
etime mean = 100.00000m, deviation = 0.00000%
max_res_set mean = 2.1800k, deviation = 3.86455%
stime mean = 0.000, deviation = 0.0
utime mean = 0.000, deviation = 0.0
sleep 0.2 ( 20 single benchmarks)
avg_mem_usage mean = 0.000, deviation = 0.0
avg_res_set mean = 0.000, deviation = 0.0
etime mean = 200.00000m, deviation = 0.00000%
max_res_set mean = 2.1968k, deviation = 3.82530%
stime mean = 0.000, deviation = 0.0
utime mean = 0.000, deviation = 0.0
๋ฒค์น๋งํน ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์์คํ
์ ๋ค์์ ์์ฑํฉ๋๋ค.
temci์ ๋จ์ ์ค '์ ์'์ด ๋์ ๋๋๋ค. ์ด ๋๋ฌธ์ ๊ทธ๋
uarch ๋ฒค์น
์์ง๋์ด Travis Downs๊ฐ ๊ฐ๋ฐํ ํ์ ์์ค CPU ๊ธฐ๋ฅ์ ์ฑ๋ฅ์ ํ๊ฐํ๊ธฐ ์ํ ์ ํธ๋ฆฌํฐ(
Uarch-bench๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฑ๋ฅ, ๋ณ๋ ฌ ๋ฐ์ดํฐ ๋ก๋ฉ ์๋ ๋ฐ ์ ๋ฆฌ ์์ ์ ํ๊ฐํ ์ ์์ต๋๋ค.
YMM ๋ ์ง์คํฐ . ํ๋ก๊ทธ๋จ์ ์ํด ์์ฑ๋ ๋ฒค์น๋งํน ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.๊ณต์ ์ ์ฅ์์์ ํ์ด์ง ํ๋จ์ ์์ต๋๋ค.
temci์ ๋ง์ฐฌ๊ฐ์ง๋ก uarch-bench๋ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
ํ์ฌ ํ๋ก์ ํธ๋ ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ์ ์์ผ๋ฏ๋ก uarch-bench์๋ ์์ธํ ๋ฌธ์๊ฐ ์์ผ๋ฉฐ ํด๋น ์์
์๋ ๋ฒ๊ทธ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ก์ฒด
์ด๋ Intel, AMD ๋ฐ ARMv8 ํ๋ก์ธ์๊ฐ ํ์ฌ๋ Linux ์์คํ ์ ์ฑ๋ฅ์ ํ๊ฐํ๊ธฐ ์ํ ๋๊ตฌ ์ธํธ์ ๋๋ค. 2017๋ ๋ ์ผ ์ฐ๋ฐฉ ๊ต์ก์ฐ๊ตฌ๋ถ์ ํ์์ผ๋ก ์ ์๋์ด ์คํ์์ค๋ก ์ถ์๋์์ต๋๋ค.
likwid ๋๊ตฌ ์ค์์ ์์คํ
์ด ์๋นํ๋ ์ ๋ ฅ์ ๋ํ RAPL ๋ ์ง์คํฐ์ ์ ๋ณด๋ฅผ ํ์ํ๋ likwid-powermeter์ ํ๋ก์ธ์ ์ฃผํ์๋ฅผ ์ ์ดํ ์ ์๋ likwid-setFrequency๋ฅผ ๊ฐ์กฐํ ์ ์์ต๋๋ค. ์ ์ฒด ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค
์ด ๋๊ตฌ๋ HPC ์ฐ๊ตฌ์ ์ฐธ์ฌํ๋ ์์ง๋์ด๊ฐ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, likwid๋ฅผ ์ฌ์ฉํ๋ฉด
์ฌ์ง โ
์ฑ๋ฅ ๋๊ตฌ
Linux ์๋ฒ์ ์ฑ๋ฅ์ ๋ถ์ํ๋ ๋๊ตฌ์
๋๋ค.
perf-tools๋ perf_events ๋ฐ ftrace ์ปค๋ ํ์ ์์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ํด๋น ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๋ฉด I/O ๋๊ธฐ ์๊ฐ(iosnoop)์ ๋ถ์ํ๊ณ ์์คํ ํธ์ถ ์ธ์(unccount, funcslower, funcgraph ๋ฐ functrace)๋ฅผ ์ถ์ ํ๊ณ ํ์ผ ์บ์(cachestat)์ "์ ์ค"์ ๋ํ ํต๊ณ๋ฅผ ์์งํ ์ ์์ต๋๋ค. ํ์์ ๊ฒฝ์ฐ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# ./cachestat -t
Counting cache functions... Output every 1 seconds.
TIME HITS MISSES DIRTIES RATIO BUFFERS_MB CACHE_MB
08:28:57 415 0 0 100.0% 1 191
08:28:58 411 0 0 100.0% 1 191
08:28:59 362 97 0 78.9% 0 8
08:29:00 411 0 0 100.0% 0 9
์
๊ธฐ๋ฅผ ์ค์ฌ์ผ๋ก ์๋นํ ํฐ ์ปค๋ฎค๋ํฐ๊ฐ ํ์ฑ๋์์ต๋๋ค (
llvm-mca
๊ธฐ๊ณ์ด ์ฝ๋๊ฐ ๋ค์ํ CPU์์ ์ผ๋ง๋ ๋ง์ ์ปดํจํ
๋ฆฌ์์ค๋ฅผ ํ์๋ก ํ๋์ง ์์ธกํ๋ ์ ํธ๋ฆฌํฐ์
๋๋ค. ๊ทธ๋
llvm-mca๋ ํ๋ก์ ํธ์ ์ผ๋ถ๋ก 2018๋
์ ๋ฐํ๋์์ต๋๋ค.
๋ธ๋ก๊ทธ์ ์์ ๋คํธ์ํฌ์ ๊ธ์ ์ฐ๋ ๋ด์ฉ:
"๋งคํธ. ์์คํธ๋ฆฌํธ ๋ชจ๋ธ" ๋๋ ํด๋ผ์ฐ๋ ๋น์ฉ์ ์ต์ ํํ๋ ๋ฐฉ๋ฒ
Linux ์์คํ ์ ๋ณดํธํ๋ ๋ฐฉ๋ฒ: 10๊ฐ์ง ํ
์ํ ์ต์ํ: ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ
์ด๋ฏธ ์์คํ ๊ด๋ฆฌ์ ์ฐธ์ฌํ๊ณ ์๊ฑฐ๋ ์ด์ ๋ง ์์ํ๋ ค๋ ์ฌ๋๋ค์ ์ํ ์ฑ
์ ํ: ๋์ XNUMX๊ถ๊ณผ ๋คํธ์ํฌ ๊ด๋ จ ๊ฐ์ข XNUMX๊ฐ
1cloud.ru์์๋ ๋ฌด๋ฃ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ถ์ฒ : habr.com