ΠΡΠΎΠ΄ΠΎΠ»ΠΆΡΠ²Π°ΠΌΠ΅ Π΄Π° Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ Π·Π° Π°Π»Π°ΡΠΊΠΈ Π·Π° ΠΏΡΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ Π½Π° ΠΌΠ°ΡΠΈΠ½ΠΈΡΠ΅ ΡΠΎ Linux. ΠΠ΅Π½Π΅Ρ Π²ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»ΠΎΡ: temci, uarch-bench, likwid, perf-tools ΠΈ llvm-mca.
ΠΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄Π½ΠΈΡΠΈ:
Sysbench, UnixBench, Phoronix Test Suite, Vdbench ΠΈ IOzone ΠΠ½ΡΠ΅ΡΠ±Π΅Π½Ρ, Π€ΠΈΠΎ, Π₯Π΄ΠΏΠ°ΡΠΌ, Π‘ ΠΈ ΠΠΎΠ½ΠΈ Iometer, DD, vpsbench, HammerDB ΠΈ 7-Zip
Π€ΠΎΡΠΎ -
ΡΠ΅ΠΌΡΠΈ
ΠΠ²Π° Π΅ Π°Π»Π°ΡΠΊΠ° Π·Π° ΠΏΡΠΎΡΠ΅Π½ΠΊΠ° Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π΄Π²Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. ΠΠΎ ΡΡΡΡΠΈΠ½Π°, ΡΠΎΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΎ ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π΄Π²Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ²ΡΠΎΡ Π½Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° Π±Π΅ΡΠ΅ ΡΡΡΠ΄Π΅Π½ΡΠΎΡ ΠΎΠ΄ ΠΠ΅ΡΠΌΠ°Π½ΠΈΡΠ°, ΠΠΎΡ
Π°Π½Π΅Ρ ΠΠ΅Ρ
Π±Π΅ΡΠ³Π΅Ρ, ΠΊΠΎΡ Π³ΠΎ ΠΈΠ·ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ ΡΠ²ΠΎΡΠ°ΡΠ° Π΄ΠΎΠ΄ΠΈΠΏΠ»ΠΎΠΌΡΠΊΠ° ΡΠ΅Π·Π° Π²ΠΎ 2016 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠ΅Π½Π΅ΡΠ½Π° Π°Π»Π°ΡΠΊΠ°
ΠΠΎΡ
Π°Π½ΠΈΡ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ Π°Π»Π°ΡΠΊΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΠΌΡ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° Π³ΠΈ ΠΌΠ΅ΡΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΊΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ Π²ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½Π° ΡΡΠ΅Π΄ΠΈΠ½Π°. ΠΠ°ΡΠΎΠ°, Π΅Π΄Π½Π° ΠΎΠ΄ Π³Π»Π°Π²Π½ΠΈΡΠ΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° temci Π΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ ΡΠ΅ΡΡ ΡΡΠ΅Π΄ΠΈΠ½Π°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ,
ΠΠ°ΠΊΠ° ΠΈΠ·Π³Π»Π΅Π΄Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° Π²ΠΎ ΠΏΡΠ²ΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ:
# 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
ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΈΠ½Π³ΠΎΡ, ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΠ°
ΠΠ΅ΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΌΡΠΈ, ΡΠ΅ ΠΈΠ·Π΄Π²ΠΎΡΡΠ²Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° βΠΌΠ»Π°Π΄ΠΎΡΡβ. ΠΠΎΡΠ°Π΄ΠΈ ΠΎΠ²Π° ΡΠΎΡ
Π°ΡΡ
-ΠΊΠ»ΡΠΏΠ°
Π£ΡΠ»ΡΠΆΠ½Π° Π°Π»Π°ΡΠΊΠ° Π·Π° Π΅Π²Π°Π»ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΡΠ°Π·Π²ΠΈΠ΅Π½Π° ΠΎΠ΄ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΡ Π’ΡΠ΅Π²ΠΈΡ ΠΠ°ΡΠ½Ρ (
Uarch-bench Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΈ ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, ΠΏΠ°ΡΠ°Π»Π΅Π»Π½Π°ΡΠ° Π±ΡΠ·ΠΈΠ½Π° Π½Π° Π²ΡΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ
YMM ΡΠ΅Π³ΠΈΡΡΡΠΈ . ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π°Π°Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΈΠ½Π³ΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°Π²ΠΎ ΠΎΡΠΈΡΠΈΡΠ°Π»Π½ΠΎΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Π½Π° Π΄Π½ΠΎΡΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ°.
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° Π°ΡΡ
-ΠΊΠ»ΡΠΏΠ°ΡΠ°, ΠΊΠ°ΠΊΠΎ ΡΠ΅ΠΌΡΠΈ,
ΠΠ°ΡΠ΅Π³Π°, ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π΅ Π²ΠΎ ΡΠ°Π½Π° ΡΠ°Π·Π° Π½Π° ΡΠ°Π·Π²ΠΎΡ, ΡΠ°ΠΊΠ° ΡΡΠΎ uarch-bench Π½Π΅ΠΌΠ° Π΄Π΅ΡΠ°Π»Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°, Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΎΠ΄ΡΠΆΠΈ Π³ΡΠ΅ΡΠΊΠΈ - Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ,
ΡΠ΅ΡΠ½ΠΎΡΡ
ΠΠ²Π° Π΅ Π·Π±ΠΈΡ Π½Π° Π°Π»Π°ΡΠΊΠΈ Π·Π° ΠΏΡΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° Linux ΠΌΠ°ΡΠΈΠ½ΠΈΡΠ΅ ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Intel, AMD ΠΈ ARMv8. Π‘ΠΎΠ·Π΄Π°Π΄Π΅Π½ Π΅ ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡΠΎΠ²ΠΈΡΠ΅Π»ΡΡΠ²ΠΎ Π½Π° Π³Π΅ΡΠΌΠ°Π½ΡΠΊΠΎΡΠΎ Π‘ΠΎΡΡΠ·Π½ΠΎ ΠΠΈΠ½ΠΈΡΡΠ΅ΡΡΡΠ²ΠΎ Π·Π° ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΡΠ΅ Π²ΠΎ 2017 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΠΏΡΡΡΠ΅Π½ Π²ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄.
ΠΠ΅ΡΡ Π°Π»Π°ΡΠΊΠΈΡΠ΅ likwid, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΈΡΡΠ°ΠΊΠ½Π΅ΠΌΠ΅ likwid-powermeter, ΠΊΠΎΡ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ΄ RAPL ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ΅ Π·Π° Π΅Π½Π΅ΡΠ³ΠΈΡΠ°ΡΠ° ΡΡΠΎ ΡΠ° ΡΡΠΎΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠΎΡ, ΠΊΠ°ΠΊΠΎ ΠΈ likwid-setFrequencies, ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ ΡΡΠ΅ΠΊΠ²Π΅Π½ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠ½Π°ΡΠ° Π»ΠΈΡΡΠ°
ΠΠ»Π°ΡΠΊΠ°ΡΠ° ΡΠ° ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° HPC. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎ likwid
Π€ΠΎΡΠΎ -
ΠΏΠ΅ΡΡ-Π°Π»Π°ΡΠΊΠΈ
ΠΠ²Π°Π° Π°Π»Π°ΡΠΊΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° Linux ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅
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
ΠΠΊΠΎΠ»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΡ ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° Π·Π°Π΅Π΄Π½ΠΈΡΠ° (
llvm-mca
Π£ΡΠ»ΡΠΆΠ½Π° Π°Π»Π°ΡΠΊΠ° ΠΊΠΎΡΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΡΠ²Π° ΠΊΠΎΠ»ΠΊΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ ΡΠ΅ Π±Π°ΡΠ° ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ. Π’Π°Π°
llvm-mca Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΡΡΡΠ°Π²Π΅Π½Π° Π²ΠΎ 2018 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΊΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ
ΠΠ° ΡΡΠΎ ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π±Π»ΠΎΠ³ΠΎΠ²ΠΈ ΠΈ ΡΠΎΡΠΈΡΠ°Π»Π½ΠΈ ΠΌΡΠ΅ΠΆΠΈ:
ΠΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΡΠ΅ Π²Π°ΡΠΈΠΎΡ Linux ΡΠΈΡΡΠ΅ΠΌ: 10 ΡΠΎΠ²Π΅ΡΠΈ
ΠΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΈΠ·ΠΈΡΠΈΡΠ΅: ΠΊΠ°ΠΊΠΎ Π΄Π° Π½Π΅ Π³ΠΈ ΠΈΠ·Π³ΡΠ±ΠΈΡΠ΅ Π²Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ
ΠΠ½ΠΈΠ³ΠΈ Π·Π° ΠΎΠ½ΠΈΠ΅ ΠΊΠΎΠΈ Π²Π΅ΡΠ΅ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ°ΡΠ° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΡΠ° ΠΈΠ»ΠΈ ΡΡΠΎΡΡΠΊΡ ΠΏΠ»Π°Π½ΠΈΡΠ°Π°Ρ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ
ΠΠ·Π±ΠΎΡ: ΠΏΠ΅Ρ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Π΅Π΄Π΅Π½ ΠΊΡΡΡ Π·Π° ΠΌΡΠ΅ΠΆΠΈ
ΠΠΈΠ΅ Π½Π° 1cloud.ru Π½ΡΠ΄ΠΈΠΌΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π° ΡΡΠ»ΡΠ³Π° β
ΠΠ·Π²ΠΎΡ: www.habr.com