Linux ์„œ๋ฒ„์šฉ ๋ฒค์น˜๋งˆํฌ: ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ

์šฐ๋ฆฌ๋Š” Linux ์‹œ์Šคํ…œ์—์„œ CPU ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋„๊ตฌ์— ๋Œ€ํ•ด ๊ณ„์†ํ•ด์„œ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์ž๋ฃŒ์—๋Š” temci, uarch-bench, likwid, perf-tools ๋ฐ llvm-mca๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๋ฒค์น˜๋งˆํฌ:

Linux ์„œ๋ฒ„์šฉ ๋ฒค์น˜๋งˆํฌ: ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ
์‚ฌ์ง„ โ€” ๋ฃจ์นด์Šค ๋ธ”๋ผ์ œํฌ โ€” ์–ธํ”Œ๋ž˜์‰ฌ

ํ…œ์‹œ

๋‘ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ถ”์ •ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋ฅผ ํ†ตํ•ด ๋‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ์ž‘์„ฑ์ž๋Š” ๋…์ผ ํ•™์ƒ์ธ Johannes Bechberger์˜€์œผ๋ฉฐ, ๊ทธ๋Š” 2016๋…„ ํ•™์‚ฌ ๋…ผ๋ฌธ์˜ ์ผ๋ถ€๋กœ ์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์˜ ๋„๊ตฌ ๋ฐฐํฌ์ž GNU General Public License์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Johannes๋Š” ํ†ต์ œ๋œ ํ™˜๊ฒฝ์—์„œ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ temci์˜ ์ฃผ์š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•˜๋‚˜๋Š” ์ˆ˜: CPU ์ฃผํŒŒ์ˆ˜ ๊ด€๋ฆฌ์ž ์„ค์ • ๋ณ€๊ฒฝ, ๋น„ํ™œ์„ฑํ™” ํ•˜์ดํผ์Šค๋ ˆ๋”ฉ L1 ๋ฐ L2 ์บ์‹œ, Intel ํ”„๋กœ์„ธ์„œ ๋“ฑ์˜ ํ„ฐ๋ณด ๋ชจ๋“œ ๋„๊ธฐ. ๋ฒค์น˜๋งˆํ‚น์„ ์œ„ํ•ด 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

๋ฒค์น˜๋งˆํ‚น ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹œ์Šคํ…œ์€ ๋‹ค์Œ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŽธ๋ฆฌํ•œ ๋ณด๊ณ  temci๋ฅผ ์œ ์‚ฌํ•œ ์†”๋ฃจ์…˜๊ณผ ๊ตฌ๋ณ„ํ•˜๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ, ํ‘œ ๋ฐ ๊ทธ๋ž˜ํ”„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

temci์˜ ๋‹จ์  ์ค‘ '์ Š์Œ'์ด ๋ˆˆ์— ๋•๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ๊ทธ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ง€์›๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ. ์˜ˆ๋ฅผ ๋“ค์–ด macOS์—์„œ๋Š” ์‹คํ–‰ํ•˜๊ธฐ ์–ด๋ ต๊ณ , ARM ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ €์ž๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์œผ๋ฉฐ GitHub์˜ ์Šคํƒ€ ์ˆ˜๊ฐ€ ์ ์ฐจ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ž์œผ๋กœ ์ƒํ™ฉ์€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ผ๋งˆ ์ „๊นŒ์ง€๋งŒ ํ•ด๋„ temci ๋Œ“๊ธ€์—์„œ ๋…ผ์˜๋œ ํ•ด์ปค ๋‰ด์Šค์—์„œ.

uarch ๋ฒค์น˜

์—”์ง€๋‹ˆ์–ด Travis Downs๊ฐ€ ๊ฐœ๋ฐœํ•œ ํ•˜์œ„ ์ˆ˜์ค€ CPU ๊ธฐ๋Šฅ์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ(ํŠธ๋ž˜๋น„์Šค ๋‹ค์šด์Šค). ์ตœ๊ทผ ๊ทธ๋Š” ๋ธ”๋กœ๊ทธ์— ์„ฑ๋Šฅ ๋ฌธ์ œ ๋ฒค์น˜๋งˆํ‚น ๋„๊ตฌ ๋ฐ ๊ธฐํƒ€ ๊ด€๋ จ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” GitHub ํŽ˜์ด์ง€์—์„œ. ์ผ๋ฐ˜์ ์œผ๋กœ uarch-bench๋Š” ์ด์ œ ๋ง‰ ์ธ๊ธฐ๋ฅผ ์–ป๊ธฐ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ์ด๋ฏธ ๋งค์šฐ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ์–ธ๊ธ‰ ๋œ ๋ฒค์น˜๋งˆํ‚น์„ ์œ„ํ•œ ๋„๊ตฌ๋กœ ์ฃผ์ œ๋ณ„ ์Šค๋ ˆ๋“œ๋ฅผ ๋‹ค๋ฃจ๋Š” Hacker News์˜ ๊ฑฐ์ฃผ์ž์ž…๋‹ˆ๋‹ค.

Uarch-bench๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์„ฑ๋Šฅ, ๋ณ‘๋ ฌ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ์†๋„ ๋ฐ ์ •๋ฆฌ ์ž‘์—…์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. YMM ๋ ˆ์ง€์Šคํ„ฐ. ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ฒค์น˜๋งˆํ‚น ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ์ €์žฅ์†Œ์—์„œ ํŽ˜์ด์ง€ ํ•˜๋‹จ์— ์žˆ์Šต๋‹ˆ๋‹ค.

temci์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ uarch-bench๋„ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„ํ™œ์„ฑํ™” Intel Turbo Boost ๊ธฐ๋Šฅ(๋ถ€ํ•˜ ์‹œ ํ”„๋กœ์„ธ์„œ ํด๋Ÿญ ์†๋„๋ฅผ ์ž๋™์œผ๋กœ ๋†’์ž„)์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋Š” ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„์— ์žˆ์œผ๋ฏ€๋กœ uarch-bench์—๋Š” ์ž์„ธํ•œ ๋ฌธ์„œ๊ฐ€ ์—†์œผ๋ฉฐ ํ•ด๋‹น ์ž‘์—…์—๋Š” ๋ฒ„๊ทธ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์–ด๋ ค์›€์ด ์•Œ๋ ค์ ธ ์žˆ๋‹ค Ryzen ์ถœ์‹œ์™€ ํ•จ๊ป˜. ๋˜ํ•œ x86 ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๋ฒค์น˜๋งˆํฌ๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ €์ž๋Š” ์•ž์œผ๋กœ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์„ ์•ฝ์†ํ•˜๋ฉฐ ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•˜๋„๋ก ์—ฌ๋Ÿฌ๋ถ„์„ ์ดˆ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์•ก์ฒด

์ด๋Š” Intel, AMD ๋ฐ ARMv8 ํ”„๋กœ์„ธ์„œ๊ฐ€ ํƒ‘์žฌ๋œ Linux ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. 2017๋…„ ๋…์ผ ์—ฐ๋ฐฉ ๊ต์œก์—ฐ๊ตฌ๋ถ€์˜ ํ›„์›์œผ๋กœ ์ œ์ž‘๋˜์–ด ์˜คํ”ˆ์†Œ์Šค๋กœ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

likwid ๋„๊ตฌ ์ค‘์—์„œ ์‹œ์Šคํ…œ์ด ์†Œ๋น„ํ•˜๋Š” ์ „๋ ฅ์— ๋Œ€ํ•œ RAPL ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” likwid-powermeter์™€ ํ”„๋กœ์„ธ์„œ ์ฃผํŒŒ์ˆ˜๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” likwid-setFrequency๋ฅผ ๊ฐ•์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์ €์žฅ์†Œ์—์„œ ์ฐพ๊ธฐ.

์ด ๋„๊ตฌ๋Š” HPC ์—ฐ๊ตฌ์— ์ฐธ์—ฌํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, likwid๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘ํ’ˆ ๋…์ผ ์—๋ฅผ๋ž‘๊ฒ-๋‰˜๋ฅธ๋ฒ ๋ฅดํฌ ๋Œ€ํ•™(RRZE) ์ง€์—ญ ์ปดํ“จํŒ… ์„ผํ„ฐ์˜ ์ „๋ฌธ๊ฐ€ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ๊ทธ๋…€๋Š” ๋˜ํ•œ ์ด ๋„๊ตฌ ์„ธํŠธ ๊ฐœ๋ฐœ์— ์ ๊ทน์ ์œผ๋กœ ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Linux ์„œ๋ฒ„์šฉ ๋ฒค์น˜๋งˆํฌ: ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ
์‚ฌ์ง„ โ€” ํด๋ ˜ ์˜ค๋…ธ ์ œ ๊ตฌ์˜ค โ€” ์–ธํ”Œ๋ž˜์‰ฌ

์„ฑ๋Šฅ ๋„๊ตฌ

Linux ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋„์ž… ๋œ ๋ธŒ๋ Œ๋“  ๊ทธ๋ ˆ๊ทธ. ๊ทธ๋Š” ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์ด๋‹ค. DTrace โ€” ์‹ค์‹œ๊ฐ„์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•œ ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.

perf-tools๋Š” perf_events ๋ฐ ftrace ์ปค๋„ ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด I/O ๋Œ€๊ธฐ ์‹œ๊ฐ„(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

์•…๊ธฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ƒ๋‹นํžˆ ํฐ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํ˜•์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค (GitHub์— ๋ณ„์ด ๊ฑฐ์˜ 6๊ฐœ ์žˆ์Šต๋‹ˆ๋‹ค.). ์˜ˆ๋ฅผ ๋“ค์–ด perf-tool์„ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํšŒ์‚ฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ทํ”Œ๋ฆญ์Šค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋„๊ตฌ๋Š” ๊ณ„์† ๊ฐœ๋ฐœ๋˜๊ณ  ์ˆ˜์ •๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์ตœ๊ทผ์—๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฑฐ์˜ ๋ฆด๋ฆฌ์Šค๋˜์ง€ ์•Š์•˜์ง€๋งŒ). ๋”ฐ๋ผ์„œ ์ž‘๋™ ์ค‘์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์ž๋Š” ๋•Œ๋•Œ๋กœ perf-tools๊ฐ€ ์ปค๋„ ํŒจ๋‹‰์„ ์œ ๋ฐœํ•œ๋‹ค๊ณ  ์ผ์Šต๋‹ˆ๋‹ค.

llvm-mca

๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๊ฐ€ ๋‹ค์–‘ํ•œ CPU์—์„œ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š”์ง€ ์˜ˆ์ธกํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋…€ ๊ณ ๋งˆ์›Œ ์‚ฌ์ดํด๋‹น ๋ช…๋ น์–ด(IPC) ๋ฐ ํŠน์ • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ƒ์„ฑํ•˜๋Š” ํ•˜๋“œ์›จ์–ด์— ๋Œ€ํ•œ ๋ถ€ํ•˜์ž…๋‹ˆ๋‹ค.

llvm-mca๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ผ๋ถ€๋กœ 2018๋…„์— ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Llvm, ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„, ๋ณ€ํ™˜ ๋ฐ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๋ณดํŽธ์ ์ธ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. llvm-mca ์ž‘์„ฑ์ž๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ฑ๋Šฅ ๋ถ„์„ ์†”๋ฃจ์…˜์—์„œ ์˜๊ฐ์„ ์–ป์€ ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ…”์˜ IACA ๊ทธ๋ฆฌ๊ณ  ๋Œ€์•ˆ์„ ๋งŒ๋“ค๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž์— ๋”ฐ๋ฅด๋ฉด ๋„๊ตฌ์˜ ์ถœ๋ ฅ(๋ ˆ์ด์•„์›ƒ ๋ฐ ์ˆ˜๋Ÿ‰)์€ IACA์™€ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ llvm-mca๋Š” AT&T ๊ตฌ๋ฌธ, ๋”ฐ๋ผ์„œ ์ž‘์—…ํ•˜๋ ค๋ฉด ๋ณ€ํ™˜๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๋ธ”๋กœ๊ทธ์™€ ์†Œ์…œ ๋„คํŠธ์›Œํฌ์— ๊ธ€์„ ์“ฐ๋Š” ๋‚ด์šฉ:

Linux ์„œ๋ฒ„์šฉ ๋ฒค์น˜๋งˆํฌ: ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ "๋งคํŠธ. ์›”์ŠคํŠธ๋ฆฌํŠธ ๋ชจ๋ธ" ๋˜๋Š” ํด๋ผ์šฐ๋“œ ๋น„์šฉ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

Linux ์„œ๋ฒ„์šฉ ๋ฒค์น˜๋งˆํฌ: ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ Linux ์‹œ์Šคํ…œ์„ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•: 10๊ฐ€์ง€ ํŒ
Linux ์„œ๋ฒ„์šฉ ๋ฒค์น˜๋งˆํฌ: ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ ์œ„ํ—˜ ์ตœ์†Œํ™”: ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•

Linux ์„œ๋ฒ„์šฉ ๋ฒค์น˜๋งˆํฌ: ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ ์ด๋ฏธ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜ ์ด์ œ ๋ง‰ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์ฑ…
Linux ์„œ๋ฒ„์šฉ ๋ฒค์น˜๋งˆํฌ: ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ ์„ ํƒ: ๋„์„œ XNUMX๊ถŒ๊ณผ ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ๊ฐ•์ขŒ XNUMX๊ฐœ

Linux ์„œ๋ฒ„์šฉ ๋ฒค์น˜๋งˆํฌ: ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ1cloud.ru์—์„œ๋Š” ๋ฌด๋ฃŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.DNS ํ˜ธ์ŠคํŒ…" ๋‹จ์ผ ๊ฐœ์ธ ๊ณ„์ •์œผ๋กœ DNS ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€