Π‘Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ для сСрвСров Π½Π° Linux: ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… инструмСнтов

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ± инструмСнтах для ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ CPU Π½Π° Linux-ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…. БСгодня Π² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅: temci, uarch-bench, likwid, perf-tools ΠΈ llvm-mca.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ²:

Π‘Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ для сСрвСров Π½Π° Linux: ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… инструмСнтов
Π€ΠΎΡ‚ΠΎ β€” Lukas Blazek β€” Unsplash

temci

Π­Ρ‚ΠΎ β€” инструмСнт для ΠΎΡ†Π΅Π½ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. По сути, ΠΎΠ½Π° позволяСт ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ врСмя исполнСния Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Автором ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ выступил студСнт ΠΈΠ· Π“Π΅Ρ€ΠΌΠ°Π½ΠΈΠΈ ЙоханнСс Π‘Π΅Ρ…Π±Π΅Ρ€Π³Π΅Ρ€ (Johannes Bechberger), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» Π΅Π΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… бакалаврской выпускной Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² 2016 Π³ΠΎΠ΄Ρƒ. БСгодня инструмСнт распространяСтся ΠΏΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GNU General Public License.

ЙоханнСс Ρ…ΠΎΡ‚Π΅Π» ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… особСнностСй temci являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ срСду. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ: ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки диспСтчСра управлСния частотой CPU, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ hyper-threading ΠΈ кэши L1 ΠΈ L2, Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚ΡƒΡ€Π±ΠΎΡ€Π΅ΠΆΠΈΠΌ Π½Π° процСссорах Intel ΠΈ Π΄Ρ€. Для Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈΠ½Π³Π° temci ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ инструмСнты time, 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

По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈΠ½Π³Π° систСма Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚ со схСмами, Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ temci ΠΎΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

Из нСдостатков temci выдСляСтся Π΅Π³ΠΎ Β«ΠΌΠΎΠ»ΠΎΠ΄ΠΎΡΡ‚ΡŒΒ». Из-Π·Π° этого ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ всС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. НапримСр, Π΅Π³ΠΎ слоТно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ macOS, Π° Π½Π° систСмС с процСссором ARM нСдоступны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ситуация ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΡ€ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈ количСство Π·Π²Π΅Π·Π΄ Π½Π° GitHub постСпСнно увСличиваСтся β€” Π½Π΅ Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ temci Π΄Π°ΠΆΠ΅ обсуТдали Π² коммСнтариях Π½Π° Hacker News.

uarch-bench

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° для ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ CPU, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ВрСвис Даунс (Travis Downs). Π‘ Π½Π΅Π΄Π°Π²Π½ΠΈΡ… ΠΏΠΎΡ€ ΠΎΠ½ Π²Π΅Π΄Π΅Ρ‚ свой Π±Π»ΠΎΠ³ Performance Matters Π½Π° GitHub Pages, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ рассказываСт ΠΎΠ± инструмСнтах для Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈΠ½Π³Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… связанных с Π½ΠΈΠΌΠΈ Π²Π΅Ρ‰Π°Ρ…. Π’ Ρ†Π΅Π»ΠΎΠΌ uarch-bench ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΡƒΠΆΠ΅ довольно часто упоминаСтся Ρ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π°ΠΌΠΈ Hacker News Π² тСматичСских Ρ‚Ρ€Π΅Π΄Π°Ρ… ΠΊΠ°ΠΊ go-to инструмСнт для Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈΠ½Π³Π°.

Uarch-bench позволяСт ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ памяти, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ очисткС YMM-рСгистров. Как выглядят Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈΠ½Π³Π°, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π²Π½ΠΈΠ·Ρƒ страницы.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ uarch-bench, ΠΊΠ°ΠΊ ΠΈ temci, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Intel Turbo Boost (ΠΎΠ½Π° автоматичСски ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту процСссора ΠΏΠΎΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования Π±Ρ‹Π»ΠΈ консистСнтными.

Пока Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ находится Π½Π° Ρ€Π°Π½Π½ΠΈΡ… этапах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, поэтому Ρƒ uarch-bench Π½Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π° Π² Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π±Π°Π³ΠΈ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, извСстны слоТности с запуском Π½Π° Ryzen. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ лишь Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ x86. Автор ΠΎΠ±Π΅Ρ‰Π°Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΈ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

likwid

Π­Ρ‚ΠΎ β€” Π½Π°Π±ΠΎΡ€ инструмСнтов для ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Linux-машин с процСссорами Intel, AMD ΠΈ ARMv8. Он создан ΠΏΠΎΠ΄ эгидой Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ министСрства образования ΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдований Π“Π΅Ρ€ΠΌΠ°Π½ΠΈΠΈ Π² 2017 Π³ΠΎΠ΄Ρƒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π² open source.

Π‘Ρ€Π΅Π΄ΠΈ инструмСнтов likwid ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ likwid-powermeter, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· RAPL-рСгистров ΠΎ потрСбляСмой систСмой мощности, Π° Ρ‚Π°ΠΊΠΆΠ΅ likwid-setFrequencies β€” позволяСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ частоту процСссора. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ исслСдованиями Π² области HPC. НапримСр, с likwid Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π³Ρ€ΡƒΠΏΠΏΠ° спСциалистов ΠΈΠ· РСгионального Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π° унивСрситСта Π­Ρ€Π»Π°Π½Π³Π΅Π½Π° β€” ΠΡŽΡ€ΠΌΠ±Π΅Ρ€Π³Π° (RRZE) Π² Π“Π΅Ρ€ΠΌΠ°Π½ΠΈΠΈ. Она ΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ участиС Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ этого Π½Π°Π±ΠΎΡ€Π° инструмСнтов.

Π‘Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ для сСрвСров Π½Π° Linux: ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… инструмСнтов
Π€ΠΎΡ‚ΠΎ β€” Clem Onojeghuo β€” Unsplash

perf-tools

Π­Ρ‚ΠΎΡ‚ инструмСнт для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Linux-сСрвСров прСдставил Π‘Ρ€Π΅Π½Π΄Π°Π½ Π“Ρ€Π΅Π³ (Brendan Gregg). Он ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² DTrace β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° динамичСской трассировки для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’ основС perf-tools Π»Π΅ΠΆΠ°Ρ‚ подсистСмы ядра perf_events ΠΈ ftrace. Π˜Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° (iosnoop), ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ обращСния ΠΊ систСмным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ (unccount, 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

Π’ΠΎΠΊΡ€ΡƒΠ³ инструмСнта ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ довольно ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠ΅ сообщСство (ΠΏΠΎΡ‡Ρ‚ΠΈ 6 тыс. Π·Π²Π΅Π·Π΄ Π½Π° GitHub). И Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ perf-tools, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Netflix. Но инструмСнт дорабатываСтся ΠΈ модифицируСтся (хотя Π² послСднСС врСмя обновлСния выходят довольно Ρ€Π΅Π΄ΠΊΠΎ). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ошибки β€” Π°Π²Ρ‚ΠΎΡ€ ΠΏΠΈΡˆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€ΠΎΠΉ perf-tools Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ kernel panic.

llvm-mca

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π°, которая ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅Ρ‚, сколько Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов потрСбуСтся ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… CPU. Она ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ Instructions Per Cycle (IPC) ΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ обСспСчСниС, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

llvm-mca прСдставили Π² 2018 Π³ΠΎΠ΄Ρƒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ занимаСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ систСмы Π°Π½Π°Π»ΠΈΠ·Π°, трансформации ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€Ρ‹ llvm-mca Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»ΡΠ»ΠΈΡΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ софта IACA ΠΎΡ‚ Intel ΠΈ ΡΡ‚Ρ€Π΅ΠΌΠΈΠ»ΠΈΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ. И ΠΏΠΎ словам ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ инструмСнта (ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΈ количСство) Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ IACA β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь. Однако llvm-mca воспринимаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ AT&T-синтаксис, поэтому для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ, скорСС всСго, придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Ρ‹.

О Ρ‡Π΅ΠΌ ΠΌΡ‹ пишСм Π² Π½Π°ΡˆΠΈΡ… Π±Π»ΠΎΠ³Π°Ρ… ΠΈ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях:

Π‘Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ для сСрвСров Π½Π° Linux: ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… инструмСнтов Β«ΠœΠ°Ρ‚. модСль с Π£ΠΎΠ»Π»-стрит» ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° ΠΎΠ±Π»Π°ΠΊΠΎ

Π‘Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ для сСрвСров Π½Π° Linux: ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… инструмСнтов Как ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡ‚ΡŒ Linux-систСму: 10 совСтов
Π‘Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ для сСрвСров Π½Π° Linux: ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… инструмСнтов ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ рисков: ΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ ваши Π΄Π°Π½Π½Ρ‹Π΅

Π‘Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ для сСрвСров Π½Π° Linux: ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… инструмСнтов Книги для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΡƒΠΆΠ΅ занимаСтся систСмным администрированиСм ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ
Π‘Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ для сСрвСров Π½Π° Linux: ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… инструмСнтов ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΠ°: ΠΏΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³ ΠΈ ΠΎΠ΄ΠΈΠ½ курс ΠΏΠΎ сСтям

Π‘Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ для сСрвСров Π½Π° Linux: ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²ΠœΡ‹ Π² 1cloud.ru ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ услугу Β«DNS-хостинг». Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ DNS-записями Ρƒ нас ΠΌΠΎΠΆΠ½ΠΎ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ