рдЖрдореНрд╣реА рд▓рд┐рдирдХреНрд╕ рдорд╢реАрдирд╡рд░реАрд▓ CPU рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдзрдирд╛рдВрдмрджреНрджрд▓ рдмреЛрд▓рдд рдЖрд╣реЛрдд. рдЖрдЬ рд╕рд╛рдордЧреНрд░реАрдордзреНрдпреЗ: temci, uarch-bench, likwid, perf-tools рдЖрдгрд┐ llvm-mca.
рдЕрдзрд┐рдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ:
Sysbench, UnixBench, Phoronix Test Suite, Vdbench рдЖрдгрд┐ IOzone рдЗрдВрдЯрд░рдмреЗрдВрдЪ, рдлрд┐рдУ, рдПрдЪрдбреАрдкрд░реНрдо, рдПрд╕ рдЖрдгрд┐ рдмреЛрдиреА рдЖрдпреЛрдореАрдЯрд░, рдбреАрдбреА, рд╡реНрд╣реАрдкреАрдПрд╕рдмреЗрдВрдЪ, рд╣реЕрдорд░рдбреАрдмреА рдЖрдгрд┐ 7-рдЭрд┐рдк
╨д╨╛╤В╨╛ -
temci
рджреЛрди рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рд╡реЗрд│реЗрдЪрд╛ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдПрдХ рд╕рд╛рдзрди рдЖрд╣реЗ. рдореВрд▓рдд:, рд╣реЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рджреЛрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рд╡реЗрд│реЗрдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЪреЗ рд▓реЗрдЦрдХ рдЬрд░реНрдордиреАрддреАрд▓ рд╡рд┐рджреНрдпрд╛рд░реНрдереА, рдЬреЛрд╣рд╛рдиреНрд╕ рдмреЗрдЪрдмрд░реНрдЧрд░ рд╣реЛрддреЗ, рдЬреНрдпрд╛рдиреЗ 2016 рдордзреНрдпреЗ рддреНрдпрд╛рдЪреНрдпрд╛ рдкрджрд╡реАрдкреВрд░реНрд╡ рдкреНрд░рдмрдВрдзрд╛рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рд╣реЛрддреЗ. рдЖрдЬ рдПрдХ рд╕рд╛рдзрди рдЖрд╣реЗ
рдЬреЛрд╣рд╛рдиреНрд╕рд▓рд╛ рдПрдХ рд╕рд╛рдзрди рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреЗ рд╣реЛрддреЗ рдЬреЗ рддреНрдпрд╛рд▓рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд╕рдВрдЧрдгрдХреАрдп рдкреНрд░рдгрд╛рд▓реАрдЪреЗ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдореЛрдЬрдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдИрд▓. рдореНрд╣рдгреВрди, рдЯреЗрдореНрд╕реАрдЪреНрдпрд╛ рдореБрдЦреНрдп рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдкреИрдХреА рдПрдХ рдореНрд╣рдгрдЬреЗ рдЪрд╛рдЪрдгреА рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде,
рдкрд╣рд┐рд▓реНрдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдпреБрдЯрд┐рд▓рд┐рдЯреА рдЕрд╕реЗ рджрд┐рд╕рддреЗ:
# 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
рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдорд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд, рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддреЗ
рдЯреЗрдореНрд╕реАрдЪреНрдпрд╛ рдХрдорддрд░рддрд╛рдВрдкреИрдХреА, рддреНрдпрд╛рдЪреЗ "рддрд░реБрдг" рд╡реЗрдЧрд│реЗ рдЖрд╣реЗ. рдпрд╛рдореБрд│реЗ рддреЛ
uarch-рдмреЗрдВрдЪ
рдЕрднрд┐рдпрдВрддрд╛ рдЯреНрд░реЕрд╡реНрд╣рд┐рд╕ рдбрд╛рдЙрдиреНрд╕ (
Uarch-bench рддреБрдореНрд╣рд╛рд▓рд╛ рдореЗрдорд░реА рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди, рд╕рдорд╛рдВрддрд░ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдЧрддреА рдЖрдгрд┐ рд╕рд╛рдлрд╕рдлрд╛рдИрдЪреНрдпрд╛ рдХрд╛рдорд╛рдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ
YMM рдиреЛрдВрджрдгреА . рдкреНрд░реЛрдЧреНрд░рд╛рдорджреНрд╡рд╛рд░реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдХрд╕реЗ рджрд┐рд╕рддрд╛рдд рддреЗ рдЖрдврд│реВ рд╢рдХрддреЗрдЕрдзрд┐рдХреГрдд рднрд╛рдВрдбрд╛рд░рд╛рдд рдкреГрд╖реНрдард╛рдЪреНрдпрд╛ рддрд│рд╛рд╢реА.
рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдХреА uarch-bench, temci рдкреНрд░рдорд╛рдгреЗ,
рдЖрддреНрддрд╛рд╕рд╛рдареА, рдкреНрд░рдХрд▓реНрдк рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рдд рдЖрд╣реЗ, рдореНрд╣рдгреВрди uarch-bench рдордзреНрдпреЗ рддрдкрд╢реАрд▓рд╡рд╛рд░ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдирд╛рд╣реА рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ рдмрдЧ рдЕрд╕реВ рд╢рдХрддрд╛рдд - рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде,
рджреНрд░рд╡
Intel, AMD рдЖрдгрд┐ ARMv8 рдкреНрд░реЛрд╕реЗрд╕рд░рд╕рд╣ Linux рдорд╢реАрдирдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдореВрд▓реНрдпрдорд╛рдкрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣рд╛ рд╕рд╛рдзрдирд╛рдВрдЪрд╛ рдПрдХ рд╕рдВрдЪ рдЖрд╣реЗ. рд╣реЗ 2017 рдордзреНрдпреЗ рдЬрд░реНрдорди рдлреЗрдбрд░рд▓ рдорд┐рдирд┐рд╕реНрдЯреНрд░реА рдСрдл рдПрдЬреНрдпреБрдХреЗрд╢рди рдЕрдБрдб рд░рд┐рд╕рд░реНрдЪрдЪреНрдпрд╛ рдЖрд╢реНрд░рдпрд╛рдЦрд╛рд▓реА рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрдгрд┐ рдореБрдХреНрдд рд╕реНрддреНрд░реЛрддрд╛рдордзреНрдпреЗ рд╕реЛрдбрд▓реЗ рдЧреЗрд▓реЗ.
likwid рдЯреВрд▓реНрд╕рдордзреНрдпреЗ, рдЖрдореНрд╣реА likwid-powermeter рд╣рд╛рдпрд▓рд╛рдЗрдЯ рдХрд░реВ рд╢рдХрддреЛ, рдЬреЗ рд╕рд┐рд╕реНрдЯрдорджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдЙрд░реНрдЬреЗрдмрджреНрджрд▓ RAPL рд░рдЬрд┐рд╕реНрдЯрд░рдордзреВрди рдорд╛рд╣рд┐рддреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ, рддрд╕реЗрдЪ likwid-setFrequencies, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдЖрдкрдг рд╕рдВрдкреВрд░реНрдг рдпрд╛рджреА рдкрд╛рд╣реВ рд╢рдХрддрд╛
HPC рд╕рдВрд╢реЛрдзрдирд╛рдд рд╕рд╣рднрд╛рдЧреА рдЕрднрд┐рдпрдВрддреЗ рд╣реЗ рд╕рд╛рдзрди рд╡рд╛рдкрд░рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, likwid рд╕рд╣
╨д╨╛╤В╨╛ -
perf-рд╕рд╛рдзрдиреЗ
рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рд╕рд╛рдзрди
perf-tools perf_events рдЖрдгрд┐ ftrace рдХрд░реНрдирд▓ рдЙрдкрдкреНрд░рдгрд╛рд▓реАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ. рддреНрдпрд╛рдВрдЪреА рдЙрдкрдпреБрдХреНрддрддрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ I/O рд▓реЗрдЯрдиреНрд╕реА (iosnoop), рдЯреНрд░реЕрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ (рдЕрдирдХрд╛рдЙрдВрдЯ, рдлрдВрдХрд╕реНрд▓реЛрд╡рд░, рдлрдВрдХреНрдЧреНрд░рд╛рдл рдЖрдгрд┐ рдлрдВрдХреНрдЯреНрд░реЗрд╕) рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рдлрд╛рдЗрд▓ рдХреЕрд╢реЗ (рдХреЕрд╢реЗрд╕реНрдЯреЕрдЯ) рдордзреАрд▓ тАЬрд╣рд┐рдЯтАЭ рд╡рд░ рдЖрдХрдбреЗрд╡рд╛рд░реА рдЧреЛрд│рд╛ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддрд╛рдд. рдирдВрддрд░рдЪреНрдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдХрдорд╛рдВрдб рдЕрд╕реЗ рджрд┐рд╕рддреЗ:
# ./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 рдордзреНрдпреЗ рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ
рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧ рдЖрдгрд┐ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХреНрд╕рд╡рд░ рдХрд╛рдп рд▓рд┐рд╣рд┐рддреЛ:
рддреБрдордЪреА рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдгрд╛рд▓реА рдХрд╢реА рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рд╛рд╡реА: 10 рдЯрд┐рдкрд╛
рдЬреЛрдЦреАрдо рдХрдореА рдХрд░рдгреЗ: рдЖрдкрд▓рд╛ рдбреЗрдЯрд╛ рдХрд╕рд╛ рдЧрдорд╛рд╡реВ рдирдпреЗ
рдЬреЗ рдЖрдзреАрдЪ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдирд╛рдд рдЧреБрдВрддрд▓реЗрд▓реЗ рдЖрд╣реЗрдд рдХрд┐рдВрд╡рд╛ рдлрдХреНрдд рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрдд рдЖрд╣реЗрдд рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рдкреБрд╕реНрддрдХреЗ
рдирд┐рд╡рдб: рдиреЗрдЯрд╡рд░реНрдХрд╡рд░реАрд▓ рдкрд╛рдЪ рдкреБрд╕реНрддрдХреЗ рдЖрдгрд┐ рдПрдХ рдХреЛрд░реНрд╕
рдЖрдореНрд╣реА 1cloud.ru рд╡рд░ рд╡рд┐рдирд╛рдореВрд▓реНрдп рд╕реЗрд╡рд╛ рдСрдлрд░ рдХрд░рддреЛ
рд╕реНрддреНрд░реЛрдд: www.habr.com