рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреА рдирд┐рд╡рдб

рдЖрдореНрд╣реА рд▓рд┐рдирдХреНрд╕ рдорд╢реАрдирд╡рд░реАрд▓ CPU рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдзрдирд╛рдВрдмрджреНрджрд▓ рдмреЛрд▓рдд рдЖрд╣реЛрдд. рдЖрдЬ рд╕рд╛рдордЧреНрд░реАрдордзреНрдпреЗ: temci, uarch-bench, likwid, perf-tools рдЖрдгрд┐ llvm-mca.

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

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреА рдирд┐рд╡рдб
╨д╨╛╤В╨╛ - рд▓реБрдХрд╛рд╕ рдмреНрд▓рд╛рдЭреЗрдХ - рдЕрдирд╕реНрдкреНрд▓реЕрд╢

temci

рджреЛрди рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рд╡реЗрд│реЗрдЪрд╛ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдПрдХ рд╕рд╛рдзрди рдЖрд╣реЗ. рдореВрд▓рдд:, рд╣реЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рджреЛрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рд╡реЗрд│реЗрдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЪреЗ рд▓реЗрдЦрдХ рдЬрд░реНрдордиреАрддреАрд▓ рд╡рд┐рджреНрдпрд╛рд░реНрдереА, рдЬреЛрд╣рд╛рдиреНрд╕ рдмреЗрдЪрдмрд░реНрдЧрд░ рд╣реЛрддреЗ, рдЬреНрдпрд╛рдиреЗ 2016 рдордзреНрдпреЗ рддреНрдпрд╛рдЪреНрдпрд╛ рдкрджрд╡реАрдкреВрд░реНрд╡ рдкреНрд░рдмрдВрдзрд╛рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рд╣реЛрддреЗ. рдЖрдЬ рдПрдХ рд╕рд╛рдзрди рдЖрд╣реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд GNU рдЬрдирд░рд▓ рдкрдмреНрд▓рд┐рдХ рд▓рд╛рдпрд╕рдиреНрд╕ рдЕрдВрддрд░реНрдЧрдд рдкрд░рд╡рд╛рдирд╛рдХреГрдд.

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

рдкрд╣рд┐рд▓реНрдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдпреБрдЯрд┐рд▓рд┐рдЯреА рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

# 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-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдгрд╛рд▓реАрд╡рд░ рдЙрдкрд▓рдмреНрдз рдирд╛рд╣реАрдд. рднрд╡рд┐рд╖реНрдпрд╛рдд, рдкрд░рд┐рд╕реНрдерд┐рддреА рдмрджрд▓реВ рд╢рдХрддреЗ, рдХрд╛рд░рдг рд▓реЗрдЦрдХ рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рдкреНрд░рдХрд▓реНрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЖрд╣реЗ рдЖрдгрд┐ рдЧрд┐рдЯрд╣рдмрд╡рд░реАрд▓ рддрд╛рд░реНтАНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рд╣рд│реВрд╣рд│реВ рд╡рд╛рдврдд рдЖрд╣реЗ - рдлрд╛рд░ рдкреВрд░реНрд╡реА рдирд╛рд╣реА. рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рдЪрд░реНрдЪрд╛ рдХреЗрд▓реА рд╣реЕрдХрд░ рдмрд╛рддрдореНрдпрд╛ рд╡рд░.

uarch-рдмреЗрдВрдЪ

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

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

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

рдЖрддреНрддрд╛рд╕рд╛рдареА, рдкреНрд░рдХрд▓реНрдк рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рдд рдЖрд╣реЗ, рдореНрд╣рдгреВрди uarch-bench рдордзреНрдпреЗ рддрдкрд╢реАрд▓рд╡рд╛рд░ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдирд╛рд╣реА рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ рдмрдЧ рдЕрд╕реВ рд╢рдХрддрд╛рдд - рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЕрдбрдЪрдгреА рдЬреНрдЮрд╛рдд рдЖрд╣реЗрдд Ryzen рд╡рд░ рд▓рд╛рдБрдЪ рд╕рд╣. рддрд╕реЗрдЪ, рдлрдХреНрдд x86 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд. рд▓реЗрдЦрдХ рднрд╡рд┐рд╖реНрдпрд╛рдд рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрдгреНрдпрд╛рдЪреЗ рд╡рдЪрди рджреЗрддреЛ рдЖрдгрд┐ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╡рд┐рдХрд╛рд╕рд╛рдд рд╕рд╛рдореАрд▓ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЛ.

рджреНрд░рд╡

Intel, AMD рдЖрдгрд┐ ARMv8 рдкреНрд░реЛрд╕реЗрд╕рд░рд╕рд╣ Linux рдорд╢реАрдирдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдореВрд▓реНрдпрдорд╛рдкрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣рд╛ рд╕рд╛рдзрдирд╛рдВрдЪрд╛ рдПрдХ рд╕рдВрдЪ рдЖрд╣реЗ. рд╣реЗ 2017 рдордзреНрдпреЗ рдЬрд░реНрдорди рдлреЗрдбрд░рд▓ рдорд┐рдирд┐рд╕реНрдЯреНрд░реА рдСрдл рдПрдЬреНрдпреБрдХреЗрд╢рди рдЕрдБрдб рд░рд┐рд╕рд░реНрдЪрдЪреНрдпрд╛ рдЖрд╢реНрд░рдпрд╛рдЦрд╛рд▓реА рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрдгрд┐ рдореБрдХреНрдд рд╕реНрддреНрд░реЛрддрд╛рдордзреНрдпреЗ рд╕реЛрдбрд▓реЗ рдЧреЗрд▓реЗ.

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

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

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреА рдирд┐рд╡рдб
╨д╨╛╤В╨╛ - рдХреНрд▓реЗрдо рдУрдиреЛрдЬреЗрдШреВрдУ - рдЕрдирд╕реНрдкреНрд▓реЕрд╢

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

рд╡рд╛рджрдирд╛рднреЛрд╡рддреА рдмрд▒реНрдпрд╛рдкреИрдХреА рдореЛрдард╛ рд╕рдореБрджрд╛рдп рддрдпрд╛рд░ рдЭрд╛рд▓рд╛ рдЖрд╣реЗ (GitHub рд╡рд░ рдЬрд╡рд│рдЬрд╡рд│ 6 рд╣рдЬрд╛рд░ рддрд╛рд░реЗ). рдЖрдгрд┐ рдЕрд╢рд╛ рдХрдВрдкрдиреНрдпрд╛ рдЖрд╣реЗрдд рдЬреНрдпрд╛ рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рдкрд░рдл-рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░рддрд╛рдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде Netflix. рдкрд░рдВрддреБ рд╕рд╛рдзрди рдЖрдгрдЦреА рд╡рд┐рдХрд╕рд┐рдд рдЖрдгрд┐ рд╕реБрдзрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдд рдЖрд╣реЗ (рдЬрд░реА рдЕрджреНрдпрддрдиреЗ рдЕрд▓реАрдХрдбреЗ рдлрд╛рд░рдЪ рдХреНрд╡рдЪрд┐рддрдЪ рд░рд┐рд▓реАрдЭ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗрдд). рдореНрд╣рдгреВрди, рддреНрдпрд╛рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ рддреНрд░реБрдЯреА рдпреЗрдК рд╢рдХрддрд╛рдд - рд▓реЗрдЦрдХ рд▓рд┐рд╣рд┐рддрд╛рдд рдХреА рдХрдзреАрдХрдзреА perf-tools рдореБрд│реЗ рдХрд░реНрдирд▓ рдкреЕрдирд┐рдХ рд╣реЛрддреЗ.

llvm-mca

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

рдкреНрд░рдХрд▓реНрдкрд╛рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди llvm-mca 2018 рдордзреНрдпреЗ рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдПрд▓рдПрд▓рд╡реНрд╣реАрдПрдо, рдЬреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдкрд░рд┐рд╡рд░реНрддрди рдЖрдгрд┐ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирд╕рд╛рдареА рдПрдХ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЖрд╣реЗ. рд╣реЗ рдЬреНрдЮрд╛рдд рдЖрд╣реЗ рдХреА llvm-mca рдЪреЗ рд▓реЗрдЦрдХ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХрд╛ рдЙрдкрд╛рдпрд╛рдиреЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрддреЗ. Intel рдХрдбреВрди IACA рдЖрдгрд┐ рдкрд░реНрдпрд╛рдп рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛. рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рдорддреЗ, рдЯреВрд▓рдЪреЗ рдЖрдЙрдЯрдкреБрдЯ (рддреНрдпрд╛рдВрдЪреЗ рд▓реЗрдЖрдЙрдЯ рдЖрдгрд┐ рдкреНрд░рдорд╛рдг) рдЦрд░реЛрдЦрд░ IACA рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ - рдЙрджрд╛рд╣рд░рдг рдпреЗрдереЗ рдЖрдврд│реВ рд╢рдХрддреЗ. рддрдерд╛рдкрд┐, llvm-mca рдлрдХреНрдд рд╕реНрд╡реАрдХрд╛рд░рддреЗ рдПрдЯреА рдЕрдБрдб рдЯреА рд╡рд╛рдХреНрдпрд░рдЪрдирд╛, рддреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдмрд╣реБрдзрд╛ рддреНрдпрд╛рдЪреНрдпрд╛рд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдиреНрд╡реНрд╣рд░реНрдЯрд░ рд╡рд╛рдкрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓.

рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧ рдЖрдгрд┐ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХреНрд╕рд╡рд░ рдХрд╛рдп рд▓рд┐рд╣рд┐рддреЛ:

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреА рдирд┐рд╡рдб "рдЪрдЯрдИ. рд╡реЙрд▓ рд╕реНрдЯреНрд░реАрдЯ рдореЙрдбреЗрд▓" рдХрд┐рдВрд╡рд╛ рдХреНрд▓рд╛рдЙрдб рдЦрд░реНрдЪ рдХрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рд╛рд╡реЗ

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреА рдирд┐рд╡рдб рддреБрдордЪреА рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдгрд╛рд▓реА рдХрд╢реА рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рд╛рд╡реА: 10 рдЯрд┐рдкрд╛
рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреА рдирд┐рд╡рдб рдЬреЛрдЦреАрдо рдХрдореА рдХрд░рдгреЗ: рдЖрдкрд▓рд╛ рдбреЗрдЯрд╛ рдХрд╕рд╛ рдЧрдорд╛рд╡реВ рдирдпреЗ

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреА рдирд┐рд╡рдб рдЬреЗ рдЖрдзреАрдЪ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдирд╛рдд рдЧреБрдВрддрд▓реЗрд▓реЗ рдЖрд╣реЗрдд рдХрд┐рдВрд╡рд╛ рдлрдХреНрдд рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрдд рдЖрд╣реЗрдд рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рдкреБрд╕реНрддрдХреЗ
рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ: рдЦреБрд▓реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреА рдирд┐рд╡рдб рдирд┐рд╡рдб: рдиреЗрдЯрд╡рд░реНрдХрд╡рд░реАрд▓ рдкрд╛рдЪ рдкреБрд╕реНрддрдХреЗ рдЖрдгрд┐ рдПрдХ рдХреЛрд░реНрд╕

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛