เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•: เจ“เจชเจจ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉ‹เจฃ

เจ…เจธเฉ€เจ‚ เจฒเฉ€เจจเจ•เจธ เจฎเจธเจผเฉ€เจจเจพเจ‚ 'เจคเฉ‡ CPU เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐเจจ เจฒเจˆ เจŸเฉ‚เจฒเจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เฉฑเจœ เจธเจฎเฉฑเจ—เจฐเฉ€ เจตเจฟเฉฑเจš: temci, uarch-bench, likwid, perf-tools เจ…เจคเฉ‡ llvm-mca.

เจนเฉ‹เจฐ เจฎเจพเจชเจฆเฉฐเจก:

เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•: เจ“เจชเจจ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉ‹เจฃ
ะคะพั‚ะพ - เจฒเฉเจ•เจพเจธ เจฌเจฒเฉ‡เจœเจผเจ• - เจ…เจจเจธเจชเจฒเฉˆเจธเจผ

temci

เจ‡เจน เจฆเฉ‹ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจฆเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจŸเจพเจˆเจฎ เจฆเจพ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจธเจพเจงเจจ เจนเฉˆเฅค เจœเจผเจฐเฉ‚เจฐเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉ‹ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจธเจฎเฉ‡เจ‚ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฆเจพ เจฒเฉ‡เจ–เจ• เจœเจฐเจฎเจจเฉ€ เจฆเจพ เจ‡เฉฑเจ• เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€ เจธเฉ€, เจœเฉ‹เจนเจพเจจเจธ เจฌเฉ‡เจšเจฌเจฐเจ—เจฐ, เจœเจฟเจธเจจเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ 2016 เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ‡ เจฌเฉˆเจšเจฒเจฐ เจฆเฉ‡ เจฅเฉ€เจธเจฟเจธ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚ เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเจพ เจธเฉ€เฅค เจ…เฉฑเจœ เจ‡เฉฑเจ• เจธเฉฐเจฆ เจนเฉˆ เจฆเฉเจ†เจฐเจพ เจตเฉฐเจกเจฟเจ† GNU เจœเจจเจฐเจฒ เจชเจฌเจฒเจฟเจ• เจฒเจพเจˆเจธเฉˆเจ‚เจธ เจ…เจงเฉ€เจจ เจฒเจพเจ‡เจธเฉฐเจธเจธเจผเฉเจฆเจพเฅค

เจœเฉ‹เจนเจพเจจเจธ เจ‡เฉฑเจ• เจ…เจœเจฟเจนเจพ เจŸเฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€ เจœเฉ‹ เจ‰เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจจเฉ‚เฉฐ เจฎเจพเจชเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจฒเจˆ, เจŸเฉ‡เจฎเจธเฉ€ เจฆเฉ€เจ†เจ‚ เจฎเฉเฉฑเจ– เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจ‡เฉฑเจ• เจŸเฉˆเจธเจŸ เจตเจพเจคเจพเจตเจฐเจฃ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจฃ เจฒเจˆ, เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ: CPU เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ เจชเฉเจฐเจฌเฉฐเจงเจ• เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒเฉ‹, เจ…เจฏเฉ‹เจ— เจ•เจฐเฉ‹ เจนเจพเจˆเจชเจฐ-เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— เจ…เจคเฉ‡ L1 เจ…เจคเฉ‡ L2 เจ•เฉˆเจธเจผ, เจ‡เฉฐเจŸเฉ‡เจฒ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐเจพเจ‚ 'เจคเฉ‡ เจŸเจฐเจฌเฉ‹ เจฎเฉ‹เจก เจฌเฉฐเจฆ เจ•เจฐเฉ‹, เจ†เจฆเจฟเฅค เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•เจฟเฉฐเจ— เจฒเจˆ เจŸเฉˆเจฎเจธเฉ€ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจตเจพเจฐ, 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-เจ…เจงเจพเจฐเจฟเจค เจธเจฟเจธเจŸเจฎ 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจจเจนเฉ€เจ‚ เจนเจจเฅค เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš, เจธเจฅเจฟเจคเฉ€ เจฌเจฆเจฒ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฒเฉ‡เจ–เจ• เจธเจฐเจ—เจฐเจฎเฉ€ เจจเจพเจฒ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจตเจฟเจ•เจธเจค เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ—เจฟเจŸเจนเจฌ 'เจคเฉ‡ เจคเจพเจฐเจฟเจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจนเฉŒเจฒเฉ€-เจนเฉŒเจฒเฉ€ เจตเจง เจฐเจนเฉ€ เจนเฉˆ - เจ‡เฉฐเจจเฉ€ เจฆเฉ‡เจฐ เจชเจนเจฟเจฒเจพเจ‚ เจจเจนเฉ€เจ‚ temci เจตเฉ€. เจŸเจฟเฉฑเจชเจฃเฉ€ เจตเจฟเฉฑเจš เจšเจฐเจšเจพ เจ•เฉ€เจคเฉ€ เจนเฉˆเจ•เจฐ เจจเจฟเจŠเจœเจผ 'เจคเฉ‡.

uarch-เจฌเฉˆเจ‚เจš

เจ‡เฉฐเจœเจจเฉ€เจ…เจฐ เจŸเฉเจฐเฉˆเจตเจฟเจธ เจกเจพเจŠเจจเจธ (เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐ เจŸเฉเจฐเฉˆเจตเจฟเจธ เจกเจพเจŠเจจเจธ) เจฆเฉเจ†เจฐเจพ เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเฉ‡ เจนเฉ‡เจ เจฒเฉ‡-เจชเฉฑเจงเจฐ เจฆเฉ‡ CPU เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจŸเฉเจฐเฉˆเจตเจฟเจธ เจกเจพเจŠเจจเจœเจผ). เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจ‰เจธ เจจเฉ‡ เจฌเจฒเฉŒเจ— เจ•เฉ€เจคเจพ เจนเฉˆ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ GitHub เจชเฉฐเจจเจฟเจ†เจ‚ 'เจคเฉ‡, เจœเฉ‹ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•เจฟเฉฐเจ— เจŸเฉ‚เจฒเจธ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจšเฉ€เจœเจผเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจฏเฉ‚เจ†เจฐเจš-เจฌเฉˆเจ‚เจš เจนเฉเจฃเฉ‡ เจนเฉ€ เจชเฉเจฐเจธเจฟเฉฑเจงเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ, เจชเจฐ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ…เจ•เจธเจฐ เจœเจผเจฟเจ•เจฐ เจ•เฉ€เจคเจพ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•เจฟเฉฐเจ— เจฒเจˆ เจ‡เฉฑเจ• เจ—เฉ‹-เจŸเฉ‚ เจŸเฉ‚เจฒ เจตเจœเฉ‹เจ‚ เจฅเฉ€เจฎเฉˆเจŸเจฟเจ• เจฅเฉเจฐเฉˆเจกเจพเจ‚ เจตเจฟเฉฑเจš เจนเฉˆเจ•เจฐ เจจเจฟเจŠเจœเจผ เจฆเฉ‡ เจจเจฟเจตเจพเจธเฉ€เฅค

เจฏเฉ‚เจ†เจฐเจš-เจฌเฉˆเจ‚เจš เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€, เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจกเจพเจŸเจพ เจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจ—เจคเฉ€ เจ…เจคเฉ‡ เจธเจซเจพเจˆ เจฆเฉ‡ เจ•เฉฐเจฎ เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ YMM เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ. เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉเจ†เจฐเจพ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•เจฟเฉฐเจ— เจจเจคเฉ€เจœเฉ‡ เจ•เจฟเจนเฉ‹ เจœเจฟเจนเฉ‡ เจฆเจฟเจธเจฆเฉ‡ เจนเจจ, เจ‡เจน เจชเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจงเจฟเจ•เจพเจฐเจค เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉฐเจจเฉ‡ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚เฅค

เจ‡เจน เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจนเฉˆ เจ•เจฟ uarch-เจฌเฉˆเจ‚เจš, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจŸเฉ‡เจฎเจธเฉ€, เจกเจฟเจธเจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจฆเจพ เจนเฉˆ เจ‡เฉฐเจŸเฉ‡เจฒ เจŸเจฐเจฌเฉ‹ เจฌเฉ‚เจธเจŸ เจซเฉฐเจ•เจธเจผเจจ (เจ‡เจน เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจฒเฉ‹เจก เจฆเฉ‡ เจ…เจงเฉ€เจจ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจฆเฉ€ เจ˜เฉœเฉ€ เจฆเฉ€ เจ—เจคเฉ€ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ) เจคเจพเจ‚ เจœเฉ‹ เจŸเฉˆเจธเจŸ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจ‡เจ•เจธเจพเจฐ เจนเฉ‹เจฃเฅค

เจซเจฟเจฒเจนเจพเจฒ, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเจ•เจพเจธ เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจชเฉœเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจนเฉˆ, เจ‡เจธเจฒเจˆ uarch-เจฌเฉˆเจ‚เจš เจตเจฟเฉฑเจš เจตเจฟเจธเจคเฉเจฐเจฟเจค เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจจเจนเฉ€เจ‚ เจนเจจ, เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจตเจฟเฉฑเจš เจฌเฉฑเจ— เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ - เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฎเฉเจธเจผเจ•เจฒเจพเจ‚ เจœเจพเจฃเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ เจฐเจพเจˆเจœเจผเจจ 'เจคเฉ‡ เจฒเจพเจ‚เจš เจฆเฉ‡ เจจเจพเจฒ. เจจเจพเจฒ เจนเฉ€, x86 เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฒเจˆ เจธเจฟเจฐเจซเจผ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ• เจธเจฎเจฐเจฅเจฟเจค เจนเจจเฅค เจฒเฉ‡เจ–เจ• เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจœเฉ‹เฉœเจจ เจฆเจพ เจตเจพเจ…เจฆเจพ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจตเจฟเจ•เจพเจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃ เจฒเจˆ เจธเฉฑเจฆเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจคเจฐเจฒ

เจ‡เจน Intel, AMD เจ…เจคเฉ‡ ARMv8 เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐเจพเจ‚ เจจเจพเจฒ เจฒเฉ€เจจเจ•เจธ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐเจจ เจฒเจˆ เจ”เจœเจผเจพเจฐเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจนเฉˆเฅค เจ‡เจน 2017 เจตเจฟเฉฑเจš เจœเจฐเจฎเจจ เจธเฉฐเจ˜เฉ€ เจธเจฟเฉฑเจ–เจฟเจ† เจ…เจคเฉ‡ เจ–เฉ‹เจœ เจฎเฉฐเจคเจฐเจพเจฒเฉ‡ เจฆเฉ€ เจธเจฐเจชเฉเจฐเจธเจคเฉ€ เจนเฉ‡เจ  เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจตเจฟเฉฑเจš เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค

likwid เจŸเฉ‚เจฒเจธ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ likwid-powermeter เจจเฉ‚เฉฐ เจนเจพเจˆเจฒเจพเจˆเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจœเฉ‹ เจ•เจฟ เจธเจฟเจธเจŸเจฎ เจฆเฉเจ†เจฐเจพ เจ–เจชเจค เจ•เฉ€เจคเฉ€ เจ—เจˆ เจชเจพเจตเจฐ เจฌเจพเจฐเฉ‡ RAPL เจฐเจœเจฟเจธเจŸเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ, เจจเจพเจฒ เจนเฉ€ likwid-setFrequencies, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจฆเฉ€ เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจชเฉ‚เจฐเฉ€ เจธเฉ‚เจšเฉ€ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจฒเฉฑเจญเฉ‹.

เจŸเฉ‚เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ HPC เจ–เฉ‹เจœ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, likwid เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ เจœเจฐเจฎเจจเฉ€ เจตเจฟเฉฑเจš เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฟเจŸเฉ€ เจ†เจซ เจ…เจฐเจฒเฉˆเจ‚เจ—เฉ‡เจจ-เจจเฉเจฐเฉ‡เจฎเจฌเจฐเจ— (RRZE) เจฆเฉ‡ เจ–เฉ‡เจคเจฐเฉ€ เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจธเฉˆเจ‚เจŸเจฐ เจฆเฉ‡ เจฎเจพเจนเจฟเจฐเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจนเฅค เจ‰เจน เจธเจพเจงเจจเจพเจ‚ เจฆเฉ‡ เจ‡เจธ เจธเฉˆเฉฑเจŸ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจตเจฟเฉฑเจš เจตเฉ€ เจธเจฐเจ—เจฐเจฎ เจนเจฟเฉฑเจธเจพ เจฒเฉˆเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•: เจ“เจชเจจ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉ‹เจฃ
ะคะพั‚ะพ - เจ•เจฒเฉ‡เจฎ เจ“เจจเฉ‹เจœเฉ‡เจ˜เฉ‚เจ“ - เจ…เจจเจธเจชเจฒเฉˆเจธเจผ

perf-เจŸเฉ‚เจฒ

เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฒเจˆ เจ‡เจน เจธเจพเจงเจจ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจฌเฉเจฐเฉˆเจ‚เจกเจจ เจ—เฉเจฐเฉ‡เจ—. เจ‰เจน เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆ เจกเฉ€เจŸเจฐเฉ‡เจธ โ€” เจ…เจธเจฒ เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจกเฉ€เจฌเฉฑเจ— เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจŸเจฐเฉ‡เจธเจฟเฉฐเจ— เจซเจฐเฉ‡เจฎเจตเจฐเจ•เฅค

perf-เจŸเฉ‚เจฒ 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. เจชเจฐ เจŸเฉ‚เจฒ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเจฟเจ•เจธเจค เจ…เจคเฉ‡ เจธเฉฐเจธเจผเฉ‹เจงเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ (เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ…เฉฑเจชเจกเฉ‡เจŸ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจนเฉ€ เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจœเจพเจฐเฉ€ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ). เจ‡เจธเจฒเจˆ, เจ‡เจธเจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจตเจฟเฉฑเจš เจ—เจฒเจคเฉ€เจ†เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ - เจฒเฉ‡เจ–เจ• เจฒเจฟเจ–เจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เจˆ เจตเจพเจฐ เจชเจฐเจซ-เจŸเฉ‚เจฒ เจ•เจฐเจจเจฒ เจชเฉˆเจจเจฟเจ• เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃเจฆเฉ‡ เจนเจจเฅค

llvm-mca

เจ‡เฉฑเจ• เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจœเฉ‹ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจตเฉฑเจ–-เจตเฉฑเจ– CPUs 'เจคเฉ‡ เจ•เจฟเฉฐเจจเฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจธเจฐเฉ‹เจค เจฎเจธเจผเฉ€เจจ เจ•เฉ‹เจก เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ‰เจน เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐเจฆเจพ เจนเฉˆ เจชเฉเจฐเจคเฉ€ เจธเจพเจˆเจ•เจฒ เจจเจฟเจฐเจฆเฉ‡เจธเจผ (เจ†เจˆเจชเฉ€เจธเฉ€) เจ…เจคเฉ‡ เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ เจ‰เฉฑเจคเฉ‡ เจฒเฉ‹เจก เจœเฉ‹ เจ‡เฉฑเจ• เจ–เจพเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

llvm-mca เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚ 2018 เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ LLVM, เจœเฉ‹ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจฆเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ, เจชเจฐเจฟเจตเจฐเจคเจจ เจ…เจคเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฐเจตเจตเจฟเจ†เจชเฉ€ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจตเจฟเจ•เจธเจฟเจค เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ‡เจน เจœเจพเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ llvm-mca เจฆเฉ‡ เจฒเฉ‡เจ–เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจธเจพเจซเจŸเจตเฉ‡เจ…เจฐ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจนเฉฑเจฒ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเฉ‡เจฐเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ Intel เจคเฉ‹เจ‚ IACA เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฌเจฆเจฒ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€เฅค เจ…เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจŸเฉ‚เจฒ เจฆเจพ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ (เจ‰เจจเฉเจนเจพเจ‚ เจฆเจพ เจฒเฉ‡เจ†เจ‰เจŸ เจ…เจคเฉ‡ เจฎเจพเจคเจฐเจพ) เจ…เจธเจฒ เจตเจฟเฉฑเจš IACA เจจเจพเจฒ เจฎเจฟเจฒเจฆเจพ เจœเฉเจฒเจฆเจพ เจนเฉˆ - เจ‰เจฆเจพเจนเจฐเจจ. เจ‡เฉฑเจฅเฉ‡ เจชเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ. เจนเจพเจฒเจพเจ‚เจ•เจฟ, llvm-mca เจธเจฟเจฐเจซ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ AT&T เจธเฉฐเจŸเฉˆเจ•เจธ, เจ‡เจธ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ•เจจเจตเจฐเจŸเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเฉ€ เจชเจตเฉ‡เจ—เฉ€เฅค

เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจฌเจฒเฉŒเจ—เจพเจ‚ เจ…เจคเฉ‡ เจธเฉ‹เจธเจผเจฒ เจจเฉˆเจŸเจตเจฐเจ•เจธ 'เจคเฉ‡ เจ•เฉ€ เจฒเจฟเจ–เจฆเฉ‡ เจนเจพเจ‚:

เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•: เจ“เจชเจจ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉ‹เจฃ "เจฎเฉˆเจŸ. เจตเจพเจฒ เจธเจŸเจฐเฉ€เจŸ เจฎเจพเจกเจฒ" เจœเจพเจ‚ เจ•เจฒเจพเจ‰เจก เจฒเจพเจ—เจคเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉˆ

เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•: เจ“เจชเจจ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉ‹เจฃ เจ†เจชเจฃเฉ‡ เจฒเฉ€เจจเจ•เจธ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเฉ€เจ: 10 เจธเฉเจเจพเจ…
เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•: เจ“เจชเจจ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉ‹เจฃ เจœเฉ‹เจ–เจฎเจพเจ‚ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจ•เจฐเจจเจพ: เจ†เจชเจฃเจพ เจกเฉ‡เจŸเจพ เจ•เจฟเจตเฉ‡เจ‚ เจ—เฉเจ†เจ‰เจฃเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ

เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•: เจ“เจชเจจ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉ‹เจฃ เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจ•เจฟเจคเจพเจฌเจพเจ‚ เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเจธเจผเจพเจธเจจ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเจจ เจœเจพเจ‚ เจนเฉเจฃเฉ‡ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพ เจฐเจนเฉ‡ เจนเจจ
เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•: เจ“เจชเจจ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉ‹เจฃ เจšเฉ‹เจฃ: เจจเฉˆเฉฑเจŸเจตเจฐเจ• 'เจคเฉ‡ เจชเฉฐเจœ เจ•เจฟเจคเจพเจฌเจพเจ‚ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ•เฉ‹เจฐเจธ

เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ•: เจ“เจชเจจ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉ‹เจฃเจ…เจธเฉ€เจ‚ 1cloud.ru 'เจคเฉ‡ เจ‡เฉฑเจ• เจฎเฉเจซเจค เจธเฉ‡เจตเจพ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ "DNS เจนเฉ‹เจธเจŸเจฟเฉฐเจ—" เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจจเจฟเฉฑเจœเฉ€ เจ–เจพเจคเฉ‡ เจตเจฟเฉฑเจš DNS เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹