рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВ: рдЦреБрд▓рд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдЪрдпрди

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

рдердк рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВ:

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВ: рдЦреБрд▓рд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдЪрдпрди
╨д╨╛╤В╨╛ - рд▓реБрдХрд╛рд╕ рдмреНрд▓рд╛рдЬреЗрдХ - рдЕрдирд╕реНрдкреНрд▓рд╛рд╕

temci

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

рдЬреЛрд╣рд╛рдиреЗрд╕ рдПрдЙрдЯрд╛ рдЙрдкрдХрд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдереЗ рдЬрд╕рд▓реЗ рдЙрд╕рд▓рд╛рдИ рдПрдХ рдирд┐рдпрдиреНрддреНрд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдорд╛рдкрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рддрд╕рд░реНрде, рдЯреЗрдореНрд╕реАрдХреЛ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдЧрд░реНрди рд╕рдХреНрдЫрдиреН: CPU рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реА рдкреНрд░рдмрдиреНрдзрдХ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╣рд╛рдЗрдкрд░-рдереНрд░реЗрдбрд┐рдЩ рд░ L1 рд░ L2 рдХреНрдпрд╛рд╕рд╣рд░реВ, Intel рдкреНрд░реЛрд╕реЗрд╕рд░рд╣рд░реВрдорд╛ рдЯрд░реНрдмреЛ рдореЛрдб рдмрдиреНрдж рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЗрддреНрдпрд╛рджрд┐ред рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд┐рдЩрдХрд╛ рд▓рд╛рдЧрд┐ рдЯреЗрдореНрд╕реАрд▓реЗ рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рд╕рдордп, 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 рдорд╛ рддрд╛рд░рд╛рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмрд┐рд╕реНрддрд╛рд░реИ рдмрдвреНрджреИ рдЧрдПрдХреЛ рдЫ - рдзреЗрд░реИ рдкрд╣рд┐рд▓реЗ рдиреИ temci рдкрдирд┐ред рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░рд┐рдпреЛ рд╣реНрдпрд╛рдХрд░ рд╕рдорд╛рдЪрд╛рд░ рдорд╛ред

uarch-рдмреЗрдиреНрдЪ

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

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

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

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

рддрд░рд▓ рдкрджрд╛рд░реНрде

рдпреЛ Intel, AMD рд░ ARMv8 рдкреНрд░реЛрд╕реЗрд╕рд░рд╣рд░реВрд╕рдБрдЧ рд▓рд┐рдирдХреНрд╕ рдорд┐рд╕рд┐рдирд╣рд░реВрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд╕реЗрдЯ рд╣реЛред рдпреЛ 2017 рдорд╛ рдЬрд░реНрдорди рд╕рдВрдШреАрдп рд╢рд┐рдХреНрд╖рд╛ рд░ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдордиреНрддреНрд░рд╛рд▓рдпрдХреЛ рд╕рдВрд░рдХреНрд╖рдгрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рд░ рдЦреБрд▓рд╛ рд╕реНрд░реЛрддрдорд╛ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред

likwid рдЙрдкрдХрд░рдгрд╣рд░реВ рдордзреНрдпреЗ, рд╣рд╛рдореА likwid-powermeter рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рдЬрд╕рд▓реЗ RAPL рджрд░реНрддрд╛рд╣рд░реВрдмрд╛рдЯ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдЦрдкрдд рдЧрд░реЗрдХреЛ рдкрд╛рд╡рд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрдЫ, рд╕рд╛рдереИ likwid-setFrequencies, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░реЛрд╕реЗрд╕рд░ рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реА рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рддрдкрд╛рдИрдВ рдкреВрд░рд╛ рд╕реВрдЪреА рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдгреНрдбрд╛рд░рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН.

рдЙрдкрдХрд░рдг HPC рдЕрдиреБрд╕рдиреНрдзрд╛рди рдорд╛ рд╕рдВрд▓рдЧреНрди рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реБ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, likwid рд╕рдВрдЧ ╤А╨░╨▒╨╛╤В╨░╨╡╤В рдЬрд░реНрдордиреАрдХреЛ рдПрд░реНрд▓рд╛рдиреНрдЬреЗрди-рдиреБрд░реЗрдореНрдмрд░реНрдЧ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп (RRZE) рдХреЛ рдХреНрд╖реЗрддреНрд░реАрдп рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рдХреЗрдиреНрджреНрд░рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрд╣рд░реВрдХреЛ рд╕рдореВрд╣ред рдЙрдиреА рдкрдирд┐ рдпрд╕ рдЙрдкрдХрд░рдгрдХреЛ рд╕реЗрдЯрдХреЛ рд╡рд┐рдХрд╛рд╕рдорд╛ рд╕рдХреНрд░рд┐рдп рднрд╛рдЧ рд▓рд┐рдиреНрдЫрд┐рдиреНред

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВ: рдЦреБрд▓рд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдЪрдпрди
╨д╨╛╤В╨╛ - рдХреНрд▓реЗрдо рдУрдиреЛрдЬреЗрдШреБрдУ - рдЕрдирд╕реНрдкреНрд▓рд╛рд╕

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

рд╕рд╛рдзрдирдХреЛ рд╡рд░рд┐рдкрд░рд┐ рдПрдЙрдЯрд╛ рдареВрд▓реЛ рд╕рдореБрджрд╛рдп рдЧрдарди рднрдПрдХреЛ рдЫ (GitHub рдорд╛ рд▓рдЧрднрдЧ 6 рд╣рдЬрд╛рд░ рддрд╛рд░рд╛рд╣рд░реВ)ред рд░ рддреНрдпрд╣рд╛рдБ рдХрдореНрдкрдиреАрд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ perf-рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ Netflixред рддрд░ рдЙрдкрдХрд░рдг рдердк рд╡рд┐рдХрд╕рд┐рдд рд░ рдкрд░рд┐рдорд╛рд░реНрдЬрди рднрдЗрд░рд╣реЗрдХреЛ рдЫ (рдпрджреНрдпрдкрд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рд╣рд╛рд▓реИ рд╡рд┐рд░рд▓реИ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдЫ)ред рддреНрдпрд╕рдХрд╛рд░рдг, рдпрд╕рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫ - рд▓реЗрдЦрдХрд▓реЗ рд▓реЗрдЦреНрдЫрдиреН рдХрд┐ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ perf-tools рд▓реЗ рдХрд░реНрдиреЗрд▓ рдЖрддрдВрдХ рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫред

llvm-mca

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

llvm-mca рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рднрд╛рдЧрдХреЛ рд░реВрдкрдорд╛ 2018 рдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ LLVM, рдЬрд╕рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рд░реВрдкрд╛рдиреНрддрд░рдг рд░ рдЕрдиреБрдХреВрд▓рдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдЫред рдпреЛ рдЬреНрдЮрд╛рдд рдЫ рдХрд┐ llvm-mca рдХреЛ рд▓реЗрдЦрдХрд╣рд░реБ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рд╕рдорд╛рдзрд╛рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд░рд┐рдд рдерд┐рдПред Intel рдмрд╛рдЯ IACA рд░ рд╡рд┐рдХрд▓реНрдк рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЦреЛрдЬреНрдпреЛред рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХрд╛ рдЕрдиреБрд╕рд╛рд░, рдЙрдкрдХрд░рдгрдХреЛ рдЖрдЙрдЯрдкреБрдЯ (рддрд┐рдиреАрд╣рд░реВрдХреЛ рд▓реЗрдЖрдЙрдЯ рд░ рдорд╛рддреНрд░рд╛) рд╡рд╛рд╕реНрддрд╡рдорд╛ IACA рдЬрд╕реНрддреИ рджреЗрдЦрд┐рдиреНрдЫ - рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рдкрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред рдпрджреНрдпрдкрд┐, llvm-mca рд▓реЗ рдорд╛рддреНрд░ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджрдЫ AT&T рд╡рд╛рдХреНрдп рд░рдЪрдирд╛, рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдИрд▓реЗ рдпрд╕рдХреЛ рд╕рд╛рде рдХрд╛рдо рдЧрд░реНрди рдХрдиреНрднрд░реНрдЯрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред

рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧ рд░ рд╕рд╛рдорд╛рдЬрд┐рдХ рд╕рдЮреНрдЬрд╛рд▓рд╣рд░реВрдорд╛ рдХреЗ рд▓реЗрдЦреНрдЫреМрдВ:

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

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВ: рдЦреБрд▓рд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдЪрдпрди рддрдкрд╛рдЗрдБрдХреЛ рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдгрд╛рд▓реА рдХрд╕рд░реА рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрдиреЗ: 10 рд╕реБрдЭрд╛рд╡рд╣рд░реВ
рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВ: рдЦреБрд▓рд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдЪрдпрди рдЬреЛрдЦрд┐рдо рдиреНрдпреВрдиреАрдХрд░рдг: рдХрд╕рд░реА рдЖрдлреНрдиреЛ рдбрд╛рдЯрд╛ рдЧреБрдорд╛рдЙрдиреЗ рдЫреИрди

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

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди