рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЪрдпрди

рд╣рдо рд▓рд┐рдирдХреНрд╕ рдорд╢реАрдиреЛрдВ рдкрд░ рд╕реАрдкреАрдпреВ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдЖрдЬ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ: temci, uarch-bench, likwid, perf-tools рдФрд░ llvm-mcaред

рдЕрдзрд┐рдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ:

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЪрдпрди
- рд▓реБрдХрд╛рд╕ рдмреНрд▓реЗрдЬрд╝реЗрдХ - рдЕрдирд╕реНрдкреНрд▓реИрд╢

temci

рдпрд╣ рджреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдпрд╣ рдЖрдкрдХреЛ рджреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓реЗрдЦрдХ рдЬрд░реНрдордиреА рдХреЗ рдПрдХ рдЫрд╛рддреНрд░ рдЬреЛрд╣рд╛рдиреНрд╕ рдмреЗрдЪрдмрд░реНрдЧрд░ рдереЗ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ 2016 рдореЗрдВ рдЕрдкрдиреА рд╕реНрдирд╛рддрдХ рдереАрд╕рд┐рд╕ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдЖрдЬ рдХрд╛ рдЙрдкрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд рдЬреАрдПрдирдпреВ рдЬрдирд░рд▓ рдкрдмреНрд▓рд┐рдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрддред

рдЬреЛрд╣рд╛рдиреНрд╕ рдПрдХ рдРрд╕рд╛ рдЙрдкрдХрд░рдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗред рдЗрд╕рд▓рд┐рдП, рдЯреЗрдорд╕реА рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕реАрдкреАрдпреВ рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рдмрдВрдзрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓реЗрдВ, рдЕрдХреНрд╖рдо рдХрд░реЗрдВ рд╣рд╛рдЗрдкрд░ рдереНрд░реЗрдбрд┐рдВрдЧ рдФрд░ L1 рдФрд░ L2 рдХреИрд╢, Intel рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрджрд┐ рдкрд░ рдЯрд░реНрдмреЛ рдореЛрдб рдмрдВрдж рдХрд░реЗрдВред рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП temci рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдкрд╣рд░, perf_stat ╨╕ getrusage.

рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддреА рд╣реИ:

# 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

рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕рд┐рд╕реНрдЯрдо рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░рд┐рдкреЛрд░реНрдЯ рдЖрд░реЗрдЦреЛрдВ, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд╕рд╛рде, рдЬреЛ рдЯреЗрдорд╕реА рдХреЛ рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред

рдЯреЗрдорд╕реА рдХреА рдХрдорд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ, рдЗрд╕рдХрд╛ "рдпреБрд╡рд╛" рдкреНрд░рдореБрдЦ рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рд╡рд╣ рд╣рд░ рдЪреАрдЬрд╝ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, macOS рдкрд░ рдЪрд▓рд╛рдирд╛ рдХрдард┐рди рд╣реИ, рдФрд░ рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдПрдБ ARM-рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ GitHub рдкрд░ рд╕рд┐рддрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рдмрдврд╝ рд░рд╣реА рд╣реИ - рдЗрддрдирд╛ рд╕рдордп рдкрд╣рд▓реЗ рднреА рдирд╣реАрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИрдХрд░ рдиреНрдпреВрдЬрд╝ рдкрд░.

рдЙрд░реНрдЪ-рдмреЗрдВрдЪ

рдЗрдВрдЬреАрдирд┐рдпрд░ рдЯреНрд░реИрд╡рд┐рд╕ рдбрд╛рдЙрдиреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕реАрдкреАрдпреВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ (рдЯреНрд░реИрд╡рд┐рд╕ рдбрд╛рдЙрдиреНрд╕). рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╡рд╣ рдмреНрд▓реЙрдЧрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдкреНрд░рджрд░реНрд╢рди рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ GitHub рдкреЗрдЬ рдкрд░, рдЬреЛ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдЯреВрд▓ рдФрд░ рдЕрдиреНрдп рд╕рдВрдмрдВрдзрд┐рдд рдЪреАрдЬрд╝реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпреВрдЖрд░реНрдЪ-рдмреЗрдВрдЪ рдЕрднреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдЖрдо рд╣реИ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╖рдпрдЧрдд рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╣реИрдХрд░ рд╕рдорд╛рдЪрд╛рд░ рдХреЗ рдирд┐рд╡рд╛рд╕реАред

рдЙрд░реНрдЪ-рдмреЗрдВрдЪ рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдкреНрд░рджрд░реНрд╢рди, рд╕рдорд╛рдирд╛рдВрддрд░ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдФрд░ рд╕рдлрд╛рдИ рдХрд╛рд░реНрдп рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ YMM рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ. рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдХреИрд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдВрдбрд╛рд░ рдореЗрдВ рдкреГрд╖реНрда рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВред

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЙрд░реНрдЪ-рдмреЗрдВрдЪ, рдЯреЗрдорд╕реА рдХреА рддрд░рд╣, рдЕрдХреНрд╖рдо рдЗрдВрдЯреЗрд▓ рдЯрд░реНрдмреЛ рдмреВрд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди (рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХреЗ рддрд╣рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдШрдбрд╝реА рдХреА рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ) рддрд╛рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕реБрд╕рдВрдЧрдд рд╣реЛрдВред

рдЕрднреА, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпреВрдЖрд░реНрдЪ-рдмреЗрдВрдЪ рдХреЗ рдкрд╛рд╕ рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдмрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рдЬреНрдЮрд╛рдд рд╣реИрдВ Ryzen рдкрд░ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рд╛рдеред рд╕рд╛рде рд╣реА, рдХреЗрд╡рд▓ x86 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рд▓реЗрдЦрдХ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рддрд░рд▓

рдпрд╣ рдЗрдВрдЯреЗрд▓, рдПрдПрдордбреА рдФрд░ рдПрдЖрд░рдПрдорд╡реА8 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рд▓рд┐рдирдХреНрд╕ рдорд╢реАрдиреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдЗрд╕реЗ 2017 рдореЗрдВ рдЬрд░реНрдорди рд╕рдВрдШреАрдп рд╢рд┐рдХреНрд╖рд╛ рдФрд░ рдЕрдиреБрд╕рдВрдзрд╛рди рдордВрддреНрд░рд╛рд▓рдп рдХреЗ рддрддреНрд╡рд╛рд╡рдзрд╛рди рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд▓рд┐рдХреНрд╡рд┐рдб рдЯреВрд▓ рдХреЗ рдмреАрдЪ, рд╣рдо рд▓рд┐рдХреНрд╡рд┐рдб-рдкрд╛рд╡рд░рдореАрдЯрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЦрдкрдд рдХреА рдЧрдИ рдмрд┐рдЬрд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд░рдПрдкреАрдПрд▓ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд▓рд┐рдХреНрд╡рд┐рдб-рд╕реЗрдЯрдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдкреВрд░реА рд▓рд┐рд╕реНрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рднрдВрдбрд╛рд░ рдореЗрдВ рдЦреЛрдЬреЗрдВ.

рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдЪрдкреАрд╕реА рдЕрдиреБрд╕рдВрдзрд╛рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдХреНрд╡рд┐рдб рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдЬрд░реНрдордиреА рдореЗрдВ рдПрд░реНрд▓рд╛рдВрдЧреЗрди-рдиреБрд░реЗрдордмрд░реНрдЧ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп (рдЖрд░рдЖрд░рдЬреЗрдбрдИ) рдХреЗ рдХреНрд╖реЗрддреНрд░реАрдп рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗрдВрджреНрд░ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ред рд╡рд╣ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднреА рд╕рдХреНрд░рд┐рдп рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреА рд╣реИред

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЪрдпрди
- рдХреНрд▓реЗрдо рдУрдиреЛрдЬреЗрдШреБрдУ - рдЕрдирд╕реНрдкреНрд▓реИрд╢

рдкреВрд░реНрдг-рдЙрдкрдХрд░рдг

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрдкрдХрд░рдг рдкреНрд░рд╕реНрддреБрдд рдмреНрд░реЗрдВрдбрди рдЧреНрд░реЗрдЧ. рд╡рд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ DTrace - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдврд╛рдВрдЪрд╛ред

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

рдЙрдкрдХрд░рдг рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╕рдореБрджрд╛рдп рдмрди рдЧрдпрд╛ рд╣реИ (GitHub рдкрд░ рд▓рдЧрднрдЧ 6 рд╣рдЬрд╛рд░ рд╕рд┐рддрд╛рд░реЗ). рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕реА рдХрдВрдкрдирд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкрд░реНрдлрд╝-рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ рдиреЗрдЯрдлреНрд▓рд┐рдХреНрд╕. рд▓реЗрдХрд┐рди рдЯреВрд▓ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдбреЗрдЯ рдмрд╣реБрдд рдХрдо рд╣реА рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд╣реИрдВ)ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ - рд▓реЗрдЦрдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрднреА-рдХрднреА рдкрд░реНрдлрд╝-рдЯреВрд▓реНрд╕ рдХрд░реНрдиреЗрд▓ рдШрдмрд░рд╛рд╣рдЯ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВред

рдПрд▓рдПрд▓рд╡реАрдПрдо-рдПрдорд╕реАрдП

рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬреЛ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддреА рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕реАрдкреАрдпреВ рдкрд░ рдорд╢реАрди рдХреЛрдб рдХреЛ рдХрд┐рддрдиреЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╡рд╣ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реИ рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рддрд┐ рдЪрдХреНрд░ (рдЖрдИрдкреАрд╕реА) рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд▓реЛрдб рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдПрд▓рдПрд▓рд╡реАрдПрдо-рдПрдорд╕реАрдП рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ 2018 рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ LLVM, рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдПрд▓рдПрд▓рд╡реАрдПрдо-рдПрдорд╕реАрдП рдХреЗ рд▓реЗрдЦрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдереЗ рдЗрдВрдЯреЗрд▓ рд╕реЗ IACA рдФрд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдиреЗ рдХреА рдорд╛рдВрдЧ рдХреАред рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЯреВрд▓ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ (рдЙрдирдХрд╛ рд▓реЗрдЖрдЙрдЯ рдФрд░ рдорд╛рддреНрд░рд╛) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ IACA рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрд▓рдПрд▓рд╡реАрдПрдо-рдПрдорд╕реАрдП рдХреЗрд╡рд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдПрдЯреА рдПрдВрдб рдЯреА рд╕рд┐рдВрдЯреИрдХреНрд╕, рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╣рдо рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдФрд░ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЪрдпрди "рдореИрдЯ. рд╡реЙрд▓ рд╕реНрдЯреНрд░реАрдЯ рдореЙрдбрд▓" рдпрд╛ рдХреНрд▓рд╛рдЙрдб рд▓рд╛рдЧрддреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЪрдпрди рдЕрдкрдиреЗ рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреИрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдВ: 10 рдЯрд┐рдкреНрд╕
рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЪрдпрди рдЬреЛрдЦрд┐рдо рдиреНрдпреВрдирддрдордХрд░рдг: рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рди рдЦреЛрдПрдВ

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЪрдпрди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХреЗрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдпрд╛ рдЕрднреА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ
рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЪрдпрди рдЪрдпрди: рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдБрдЪ рдкреБрд╕реНрддрдХреЗрдВ рдФрд░ рдПрдХ рдкрд╛рдареНрдпрдХреНрд░рдо

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЪрдпрдирд╣рдо 1cloud.ru рдкрд░ рдирд┐рдГрд╢реБрд▓реНрдХ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВредрдбреАрдПрдирдПрд╕ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ" рдЖрдк DNS рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдПрдХ рд╣реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ