Benchmarks เบชเปเบฒเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต Linux: เบเบฒเบ™เป€เบฅเบทเบญเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบ›เบตเบ”

เบžเบงเบเป€เบฎเบปเบฒเบชเบทเบšเบ•เปเปˆเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš CPU เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ Linux. เปƒเบ™เบกเบทเป‰เบ™เบตเป‰เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™: temci, uarch-bench, likwid, perf-tools เปเบฅเบฐ llvm-mca.

เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก:

Benchmarks เบชเปเบฒเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต Linux: เบเบฒเบ™เป€เบฅเบทเบญเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบ›เบตเบ”
ั‚ะพะพั‚ะพ - Lukas Blazek โ€” unsplash

เป€เบ—เบกเบŠเบต

เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ„เบฒเบ”โ€‹เบ„เบฐโ€‹เป€เบ™โ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ‚เบญเบ‡โ€‹เบชเบญเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบกเบฑเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฝเบšเบ—เบฝเบšเป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบชเบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เปเบกเปˆเบ™เบ™เบฑเบเบชเบถเบเบชเบฒเบˆเบฒเบเป€เบขเบเบฅเบฐเบกเบฑเบ™, Johannes Bechberger, เบœเบนเป‰เบ—เบตเปˆเป„เบ”เป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ—เบดเบ”เบชเบฐเบ”เบตเบ›เบฐเบฅเบดเบ™เบเบฒเบ•เบตเบ‚เบญเบ‡เบฅเบฒเบงเปƒเบ™เบ›เบต 2016. เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹เปƒเบ™โ€‹เบกเบทเป‰โ€‹เบ™เบตเป‰โ€‹ เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ—เบปเปˆเบงเป„เบ› GNU.

Johannes เบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบฅเบฒเบงเบชเบฒเบกเบฒเบ”เบงเบฑเบ”เปเบ—เบเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ„เบงเบšเบ„เบธเบก. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบ™เบถเปˆเบ‡เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ temci เปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡, เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰: เบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบ–เบตเปˆ CPU, เบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ hyper threading เปเบฅเบฐ L1 เปเบฅเบฐ L2 cache, เบ›เบดเบ”เป‚เบซเบกเบ” turbo เปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต Intel, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบชเปเบฒเบฅเบฑเบš benchmarking temci เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบท. เบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒ, 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

เบญเบตเบ‡เบ•เบฒเบกเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš benchmarking, เบฅเบฐเบšเบปเบšเบœเบฐเบฅเบดเบ” เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹เบชเบฐโ€‹เบ”เบงเบโ€‹ เบกเบตเปเบœเบ™เบงเบฒเบ”, เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบฅเบฐเบเบฒเบŸ, เป€เบŠเบดเปˆเบ‡เบˆเปเบฒเปเบ™เบ temci เบˆเบฒเบเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เบ‚เบญเบ‡ temci, "เป„เบงเบซเบ™เบธเปˆเบก" เบ‚เบญเบ‡เบกเบฑเบ™เป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™. เบเป‰เบญเบ™โ€‹เป€เบซเบ”โ€‹เบ™เบตเป‰โ€‹เบฅเบฒเบง เบšเปเปˆเปเบกเปˆเบ™เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบš เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฎเบฒเบ”เปเบง เปเบฅเบฐเบŠเบญเบšเปเบง. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™ macOS, เปเบฅเบฐเบšเบฒเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบšเปเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบš ARM. เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบเป‰เบญเบ™เบงเปˆเบฒเบœเบนเป‰เบ‚เบฝเบ™เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™, เปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ”เบฒเบงเปƒเบ™ GitHub เปเบกเปˆเบ™เบ„เปˆเบญเบเป†เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™ - เบšเปเปˆเบ”เบปเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰ temci เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ. เบชเบปเบ™เบ—เบฐเบ™เบฒเปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™ เบเปˆเบฝเบงเบเบฑเบšเบ‚เปˆเบฒเบงเปเบฎเบเป€เบเบต.

uarch-bench

เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆ CPU เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒ, เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบงเบดเบชเบฐเบงเบฐเบเบญเบ™ Travis Downs (Travis Downs). เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เบฅเบฒเบงเป„เบ”เป‰เบ‚เบฝเบ™เบšเบฅเบฑเบญเบ เป€เบฅเบทเปˆเบญเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš เปƒเบ™ GitHub Pages, เป€เบŠเบดเปˆเบ‡เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบท benchmarking เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบญเบทเปˆเบ™เป†. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, uarch-bench เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบ™เบดเบเบปเบก, เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เปเบฒเบกเบฐเบ”เบฒเปเบฅเป‰เบง เบเปˆเบฒเบงเป€เบ–เบดเบ‡ เบœเบนเป‰เบญเบฒเป„เบชเบขเบนเปˆเบ‚เบญเบ‡เบ‚เปˆเบฒเบงเปเบฎเบเป€เบเบตเปƒเบ™เบซเบปเบงเบ‚เปเป‰เบซเบปเบงเบ‚เปเป‰เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš.

Uarch-bench เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเป€เบกเบตเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เป‚เบซเบผเบ”เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ™เปเบฅเบฐเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เปเบฒเบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ” เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ YMM. เบชเบดเปˆเบ‡เบ—เบตเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš benchmarking เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰ เปƒเบ™ repository เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™ เบขเบนเปˆเบฅเบธเปˆเบกเบชเบธเบ”เบ‚เบญเบ‡เปœเป‰เบฒ.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ uarch-bench, เป€เบŠเบฑเปˆเบ™ temci, เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ เบŸเบฑเบ‡เบŠเบฑเบ™ Intel Turbo Boost (เบกเบฑเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเป‚เบกเบ‡เบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”) เป€เบžเบทเปˆเบญเปƒเบซเป‰เบœเบปเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบกเบตเบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡.

เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ uarch-bench เบšเปเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”, เปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเปเบกเบ‡เป„เบกเป‰ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ„เบงเบฒเบกโ€‹เบซเบเบธเป‰เบ‡โ€‹เบเบฒเบโ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบฎเบนเป‰โ€‹เบˆเบฑเบโ€‹ เบ”เป‰เบงเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™ Ryzen. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, เบฎเบญเบ‡เบฎเบฑเบšเบžเบฝเบ‡เปเบ•เปˆ benchmarks เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ x86 เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบœเบนเป‰เบ‚เบฝเบ™เบชเบฑเบ™เบเบฒเบงเปˆเบฒเบˆเบฐเป€เบžเบตเปˆเบกเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เปเบฅเบฐเป€เบŠเบตเบ™เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เปเบซเบผเบง

เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบธเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ Linux เบ”เป‰เบงเบเป‚เบ›เป€เบŠเบ”เป€เบŠเบต Intel, AMD เปเบฅเบฐ ARMv8. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบญเบธเบ›เบฐเบ–เปเบฒเบ‚เบญเบ‡เบเบฐเบŠเบงเบ‡เบชเบถเบเบชเบฒเบ—เบดเบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ‚เบญเบ‡เป€เบขเบเบฅเบฐเบกเบฑเบ™เปƒเบ™เบ›เบต 2017 เปเบฅเบฐเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปƒเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบท likwid, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบ™เบฑเป‰เบ™เปƒเบชเปˆ likwid-powermeter, เป€เบŠเบดเปˆเบ‡เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ RAPL เบเปˆเบฝเบงเบเบฑเบšเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบเบฅเบฐเบšเบปเบš, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš likwid-setFrequencies, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบต. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ„เบปเบšเบ–เป‰เบงเบ™ เบŠเบญเบเบซเบฒเบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™.

เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒ HPC. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ”เป‰เบงเบ likwid เบงเบฝเบเบ‡เบฒเบ™ เบเบธเปˆเบกเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบˆเบฒเบเบชเบนเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบžเบฒเบเบžเบทเป‰เบ™เบ‚เบญเบ‡เบกเบฐเบซเบฒเบงเบดเบ—เบฐเบเบฒเป„เบฅ Erlangen-Nuremberg (RRZE) เปƒเบ™เป€เบขเบเบฅเบฐเบกเบฑเบ™. เบ™เบฒเบ‡เบเบฑเบ‡เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบŠเบธเบ”เบ™เบตเป‰.

Benchmarks เบชเปเบฒเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต Linux: เบเบฒเบ™เป€เบฅเบทเบญเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบ›เบตเบ”
ั‚ะพะพั‚ะพ - Clem Onojeghuo โ€” unsplash

perf-เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹

เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Linux เปเบ™เบฐ เบ™เบณ Brendan Gregg. เบฅเบฒเบงเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ DTrace โ€” เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบเบฒเบ™โ€‹เป€เบ„เบทเปˆเบญเบ™โ€‹เป„เบซเบงโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เปเบ—เป‰โ€‹เบˆเบดเบ‡โ€‹.

perf-tools เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบฅเบฐเบšเบปเบšเบเปˆเบญเบ perf_events เปเบฅเบฐ ftrace kernel. เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบงเบดเป€เบ„เบฒเบฐ I/O latency (iosnoop), เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบš (unccount, funcslower, funcgraph เปเบฅเบฐ functrace) เปเบฅเบฐเป€เบเบฑเบšเบเปเบฒเบชเบฐเบ–เบดเบ•เบดเบเปˆเบฝเบงเบเบฑเบš " hits" เปƒเบ™ cache เป„เบŸเบฅเปŒ (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 เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ™เบฒเบ‡ เบ›เบฐเป€เบกเบตเบ™ เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ•เปเปˆเบฎเบญเบšเบงเบฝเบ™ (IPC) เปเบฅเบฐเบเบฒเบ™เป‚เบซเบผเบ”เปƒเบ™เบฎเบฒเบ”เปเบงเบ—เบตเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ”เบ™เบถเปˆเบ‡เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™.

llvm-mca เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบ›เบต 2018 เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ LLVM, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเบ—เบปเปˆเบงเป„เบ›เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ, เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบงเปˆเบฒเบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡ llvm-mca เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ”เบปเบ™เปƒเบˆเป‚เบ”เบเบเบฒเบ™เปเบเป‰เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบŠเบญเบšเปเบง. IACA เบˆเบฒเบ Intel เปเบฅเบฐเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเบชเป‰เบฒเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เปเบฅเบฐเบญเบตเบ‡เบ•เบฒเบกเบœเบนเป‰เปƒเบŠเป‰, เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบท (เบฎเบนเบšเปเบšเบšเปเบฅเบฐเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ) เบเปเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบš IACA - เบ•เบปเบงเบขเปˆเบฒเบ‡. เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เบ—เบตเปˆเบ™เบตเป‰. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, llvm-mca เบžเบฝเบ‡เปเบ•เปˆเบเบญเบกเบฎเบฑเบš AT&T syntax, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเปˆเบงเบ™เบซเบผเบฒเบเบˆเบฐเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ•เบปเบงเปเบ›เบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบกเบฑเบ™.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบเปˆเบฝเบงเบเบฑเบš blogs เปเบฅเบฐเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบฑเบ‡เบ„เบปเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

Benchmarks เบชเปเบฒเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต Linux: เบเบฒเบ™เป€เบฅเบทเบญเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบ›เบตเบ” โ€œเบกเบฑเบ”. เบฎเบนเบšเปเบšเบš Wall Street" เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปƒเบ™เบ„เบฅเบฒเบง

Benchmarks เบชเปเบฒเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต Linux: เบเบฒเบ™เป€เบฅเบทเบญเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบ›เบตเบ” เบงเบดเบ—เบตเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบฅเบฐเบšเบปเบš Linux เบ‚เบญเบ‡เบ—เปˆเบฒเบ™: 10 เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ
Benchmarks เบชเปเบฒเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต Linux: เบเบฒเบ™เป€เบฅเบทเบญเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบ›เบตเบ” เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡: เบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบšเปเปˆเบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™

Benchmarks เบชเปเบฒเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต Linux: เบเบฒเบ™เป€เบฅเบทเบญเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบ›เบตเบ” เบ›เบถเป‰เบกเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบฅเบฐเบšเบปเบšเปเบฅเป‰เบงเบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
Benchmarks เบชเปเบฒเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต Linux: เบเบฒเบ™เป€เบฅเบทเบญเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบ›เบตเบ” เบเบฒเบ™เบ„เบฑเบ”เป€เบฅเบทเบญเบ: เบซเป‰เบฒเบ›เบทเป‰เบกเปเบฅเบฐเบซเบ™เบถเปˆเบ‡เบซเบผเบฑเบเบชเบนเบ”เบเปˆเบฝเบงเบเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบ

Benchmarks เบชเปเบฒเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต Linux: เบเบฒเบ™เป€เบฅเบทเบญเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบ›เบตเบ”เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆ 1cloud.ru เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบŸเบฃเบต "DNS hosting" เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ DNS เปƒเบ™เบšเบฑเบ™เบŠเบตเบชเปˆเบงเบ™เบ•เบปเบงเบ”เบฝเบง.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™