рд╣рд╛рдореА рд▓рд┐рдирдХреНрд╕ рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ CPU рдкреНрд░рджрд░реНрд╢рди рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫреМрдВред рдЖрдЬ рд╕рд╛рдордЧреНрд░реАрдорд╛: temci, uarch-bench, likwid, perf-tools рд░ llvm-mcaред
рдердк рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВ:
Sysbench, UnixBench, Phoronix Test Suite, Vdbench рд░ IOzone Interbench, Fio, Hdparm, S рд░ Bonnie Iometer, DD, vpsbench, HammerDB рд░ 7-Zip
╨д╨╛╤В╨╛ -
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
рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд┐рдЩ рдкрд░рд┐рдгрд╛рдорд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд, рдкреНрд░рдгрд╛рд▓реА рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрдЫ
рдЯреЗрдореНрд╕реАрдХреЛ рдХрдордЬреЛрд░реАрд╣рд░реВ рдордзреНрдпреЗ, рдпрд╕рдХреЛ "рдпреБрд╡рд╛" рдмрд╛рд╣рд┐рд░ рдЦрдбрд╛ рдЫред рдЬрд╕рдХрд╛ рдХрд╛рд░рдг рдЙрдирд▓реЗ
uarch-рдмреЗрдиреНрдЪ
рдЗрдиреНрдЬрд┐рдирд┐рдпрд░ рдЯреНрд░рд╛рднрд┐рд╕ рдбрд╛рдЙрдиреНрд╕ (
Uarch-рдмреЗрдиреНрдЪрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдореЗрдореЛрд░реА рдкреНрд░рджрд░реНрд╢рди, рд╕рдорд╛рдирд╛рдиреНрддрд░ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдЩ рдЧрддрд┐ рд░ рд╕рдлрд╛рдИ рдХрд╛рд░реНрдпрдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
YMM рджрд░реНрддрд╛ ред рдХрд╛рд░реНрдпрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫрдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдорд╛ рдкреГрд╖реНрдардХреЛ рддрд▓рдорд╛ред
рдпреЛ рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдЫ рдХрд┐ uarch-bench, temci рдЬрд╕реНрддреИ,
рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╛рд╕рдХреЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЪрд░рдгрд╣рд░реВрдорд╛ рдЫ, рддреНрдпрд╕реИрд▓реЗ uarch-bench рд╕рдБрдЧ рд╡рд┐рд╕реНрддреГрдд рдХрд╛рдЧрдЬрд╛рдд рдЫреИрди, рд░ рдпрд╕рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ рдмрдЧрд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреН - рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐,
рддрд░рд▓ рдкрджрд╛рд░реНрде
рдпреЛ Intel, AMD рд░ ARMv8 рдкреНрд░реЛрд╕реЗрд╕рд░рд╣рд░реВрд╕рдБрдЧ рд▓рд┐рдирдХреНрд╕ рдорд┐рд╕рд┐рдирд╣рд░реВрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд╕реЗрдЯ рд╣реЛред рдпреЛ 2017 рдорд╛ рдЬрд░реНрдорди рд╕рдВрдШреАрдп рд╢рд┐рдХреНрд╖рд╛ рд░ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдордиреНрддреНрд░рд╛рд▓рдпрдХреЛ рд╕рдВрд░рдХреНрд╖рдгрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рд░ рдЦреБрд▓рд╛ рд╕реНрд░реЛрддрдорд╛ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред
likwid рдЙрдкрдХрд░рдгрд╣рд░реВ рдордзреНрдпреЗ, рд╣рд╛рдореА likwid-powermeter рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рдЬрд╕рд▓реЗ RAPL рджрд░реНрддрд╛рд╣рд░реВрдмрд╛рдЯ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдЦрдкрдд рдЧрд░реЗрдХреЛ рдкрд╛рд╡рд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрдЫ, рд╕рд╛рдереИ likwid-setFrequencies, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░реЛрд╕реЗрд╕рд░ рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реА рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рддрдкрд╛рдИрдВ рдкреВрд░рд╛ рд╕реВрдЪреА рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рдЙрдкрдХрд░рдг HPC рдЕрдиреБрд╕рдиреНрдзрд╛рди рдорд╛ рд╕рдВрд▓рдЧреНрди рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реБ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, likwid рд╕рдВрдЧ
╨д╨╛╤В╨╛ -
perf-рдЙрдкрдХрд░рдгрд╣рд░реВ
рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрднрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд▓рд╛рдЧреА рдпреЛ рдЙрдкрдХрд░рдг
perf-tools perf_events рд░ ftrace рдХрд░реНрдиреЗрд▓ рдЙрдкрдкреНрд░рдгрд╛рд▓реАрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫред рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ I/O рд▓реЗрдЯрдиреНрд╕реА (iosnoop), рдЯреНрд░реНрдпрд╛рдХ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рддрд░реНрдХрд╣рд░реВ (unccount, funclower, 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 рдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ
рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧ рд░ рд╕рд╛рдорд╛рдЬрд┐рдХ рд╕рдЮреНрдЬрд╛рд▓рд╣рд░реВрдорд╛ рдХреЗ рд▓реЗрдЦреНрдЫреМрдВ:
рддрдкрд╛рдЗрдБрдХреЛ рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдгрд╛рд▓реА рдХрд╕рд░реА рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрдиреЗ: 10 рд╕реБрдЭрд╛рд╡рд╣рд░реВ
рдЬреЛрдЦрд┐рдо рдиреНрдпреВрдиреАрдХрд░рдг: рдХрд╕рд░реА рдЖрдлреНрдиреЛ рдбрд╛рдЯрд╛ рдЧреБрдорд╛рдЙрдиреЗ рдЫреИрди
рдЬреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рди рдорд╛ рд╕рдВрд▓рдЧреНрди рдЫрдиреН рд╡рд╛ рднрд░реНрдЦрд░ рд╕реБрд░реБ рдЧрд░реНрди рдпреЛрдЬрдирд╛ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рд▓рд╛рдЧрд┐ рдкреБрд╕реНрддрдХрд╣рд░реВ
рдЪрдпрди: рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдкрд╛рдБрдЪ рдкреБрд╕реНрддрдХрд╣рд░реВ рд░ рдПрдЙрдЯрд╛ рдкрд╛рдареНрдпрдХреНрд░рдо
рд╣рд╛рдореА 1cloud.ru рдорд╛ рдирд┐:рд╢реБрд▓реНрдХ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫреМрдВ "
рд╕реНрд░реЛрдд: www.habr.com