рд╣рдо рд▓рд┐рдирдХреНрд╕ рдорд╢реАрдиреЛрдВ рдкрд░ рд╕реАрдкреАрдпреВ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдЖрдЬ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ: temci, uarch-bench, likwid, perf-tools рдФрд░ llvm-mcaред
рдЕрдзрд┐рдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ:
рд╕рд┐рд╕рдмреЗрдВрдЪ, рдпреВрдирд┐рдХреНрд╕рдмреЗрдВрдЪ, рдлреЛрд░реЛрдирд┐рдХреНрд╕ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ, рд╡реАрдбреАрдмреЗрдВрдЪ рдФрд░ рдЖрдИрдУрдЬрд╝реЛрди рдЗрдВрдЯрд░рдмреЗрдВрдЪ, рдлрд┐рдпреЛ, рдПрдЪрдбреАрдкрд╛рд░реНрдо, рдПрд╕ рдФрд░ рдмреЛрдиреА рдЖрдпреЛрдореАрдЯрд░, рдбреАрдбреА, рд╡реАрдкреАрдПрд╕рдмреЗрдВрдЪ, рд╣реИрдорд░рдбреАрдмреА рдФрд░ 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
рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕рд┐рд╕реНрдЯрдо рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ
рдЯреЗрдорд╕реА рдХреА рдХрдорд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ, рдЗрд╕рдХрд╛ "рдпреБрд╡рд╛" рдкреНрд░рдореБрдЦ рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рд╡рд╣
рдЙрд░реНрдЪ-рдмреЗрдВрдЪ
рдЗрдВрдЬреАрдирд┐рдпрд░ рдЯреНрд░реИрд╡рд┐рд╕ рдбрд╛рдЙрдиреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕реАрдкреАрдпреВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ (
рдЙрд░реНрдЪ-рдмреЗрдВрдЪ рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдкреНрд░рджрд░реНрд╢рди, рд╕рдорд╛рдирд╛рдВрддрд░ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдФрд░ рд╕рдлрд╛рдИ рдХрд╛рд░реНрдп рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
YMM рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ . рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдХреИрд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИрдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдВрдбрд╛рд░ рдореЗрдВ рдкреГрд╖реНрда рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЙрд░реНрдЪ-рдмреЗрдВрдЪ, рдЯреЗрдорд╕реА рдХреА рддрд░рд╣,
рдЕрднреА, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпреВрдЖрд░реНрдЪ-рдмреЗрдВрдЪ рдХреЗ рдкрд╛рд╕ рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдмрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рддрд░рд▓
рдпрд╣ рдЗрдВрдЯреЗрд▓, рдПрдПрдордбреА рдФрд░ рдПрдЖрд░рдПрдорд╡реА8 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рд▓рд┐рдирдХреНрд╕ рдорд╢реАрдиреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдЗрд╕реЗ 2017 рдореЗрдВ рдЬрд░реНрдорди рд╕рдВрдШреАрдп рд╢рд┐рдХреНрд╖рд╛ рдФрд░ рдЕрдиреБрд╕рдВрдзрд╛рди рдордВрддреНрд░рд╛рд▓рдп рдХреЗ рддрддреНрд╡рд╛рд╡рдзрд╛рди рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд▓рд┐рдХреНрд╡рд┐рдб рдЯреВрд▓ рдХреЗ рдмреАрдЪ, рд╣рдо рд▓рд┐рдХреНрд╡рд┐рдб-рдкрд╛рд╡рд░рдореАрдЯрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЦрдкрдд рдХреА рдЧрдИ рдмрд┐рдЬрд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд░рдПрдкреАрдПрд▓ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд▓рд┐рдХреНрд╡рд┐рдб-рд╕реЗрдЯрдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдкреВрд░реА рд▓рд┐рд╕реНрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдЪрдкреАрд╕реА рдЕрдиреБрд╕рдВрдзрд╛рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдХреНрд╡рд┐рдб рдХреЗ рд╕рд╛рде
-
рдкреВрд░реНрдг-рдЙрдкрдХрд░рдг
рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрдкрдХрд░рдг
perf-tools perf_events рдФрд░ ftrace рдХрд░реНрдиреЗрд▓ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЙрдирдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ рдЖрдкрдХреЛ I/O рд╡рд┐рд▓рдВрдмрддрд╛ (iosnoop) рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ, рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рддрд░реНрдХреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ (рдЕрдирдХрд╛рдЙрдВрдЯ, 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
рдЙрдкрдХрд░рдг рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╕рдореБрджрд╛рдп рдмрди рдЧрдпрд╛ рд╣реИ (
рдПрд▓рдПрд▓рд╡реАрдПрдо-рдПрдорд╕реАрдП
рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬреЛ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддреА рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕реАрдкреАрдпреВ рдкрд░ рдорд╢реАрди рдХреЛрдб рдХреЛ рдХрд┐рддрдиреЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╡рд╣
рдПрд▓рдПрд▓рд╡реАрдПрдо-рдПрдорд╕реАрдП рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ 2018 рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рд╣рдо рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдФрд░ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
рдЕрдкрдиреЗ рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреИрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдВ: 10 рдЯрд┐рдкреНрд╕
рдЬреЛрдЦрд┐рдо рдиреНрдпреВрдирддрдордХрд░рдг: рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рди рдЦреЛрдПрдВ
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХреЗрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдпрд╛ рдЕрднреА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ
рдЪрдпрди: рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдБрдЪ рдкреБрд╕реНрддрдХреЗрдВ рдФрд░ рдПрдХ рдкрд╛рдареНрдпрдХреНрд░рдо
рд╣рдо 1cloud.ru рдкрд░ рдирд┐рдГрд╢реБрд▓реНрдХ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рд╕реНрд░реЛрдд: www.habr.com