Intel CPU Meltdown ์ทจ์ฝ์ ํจ์น 2์ฐจ ํ ์คํธ์ ๋ง๋ฌด๋ฆฌ
1์ฐจ ํ ์คํธ์ ์ด์ด์ 2์ฐจ ํ ์คํธ๋ฅผ ์งํํด๋ดค์ต๋๋ค. 2์ฐจ ํ ์คํธ๋ 1์ฐจ์์ ์งํํ๋ File I/O ๋ฟ๋ง ์๋๋ผ, ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ฌ์ฉํ๋ ์น ์๋ฒ, DBMS, ๊ทธ๋ฆฌ๊ณ ์๊ฐ๋ณด๋ค ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์ค๋์ค ์ธ์ฝ๋ฉ๊ณผ ๋น๋์ค ์ธ์ฝ๋ฉ ๋ฑ์ ํ ์คํธ๋ฅผ ์งํํ์์ต๋๋ค.
ํ ์คํธ ์งํ ์ฌํญ
- SQLite I/O Test (only HDD)
- FLAC Audio Encoding
- Opus Codec Encoding
- nginx Benchmark
- GCC Compile Test
- File I/O Test
ํ ์คํธ๋ ์ด 6๊ฐ์ง๋ก ์งํํ์์ผ๋ฉฐ ๊ทธ ์ค ๋ง์ง๋ง File system Test๋ ์ด์ ์งํํ๋ 4000๋ฒ์ ํ์ผ ์์ฑ์ ๋ค์ ํ ์คํธํ ๊ฒ์ ๋๋ค. SQLite์ DBMS ํ ์คํธ๋ ์ ์ ๋ ธํธ๋ถ ํ๊ฒฝ์ HDD์์๋ง ์งํํ์์ต๋๋ค.
SQLite I/O Test
SQLite๋ 2500 ์ค์ INSERT ์ฟผ๋ฆฌ ๋ฌธ์ ์ฌ์ฉํ์ฌ DB๋ฅผ ์์ฑํ ๊ฒฐ๊ณผ์ด๋ฉฐ HDD์์ ํ ์คํธํ์์ต๋๋ค.
ํจ์น ํ๊ธฐ ์ (์), ํจ์น ํ ํ(ํ)์ ๋ชจ์ต์
๋๋ค. ์ญ์ SATA3๋ฅผ ์ฌ์ฉํ์ฌ์ ๊ทธ๋ฐ์ง, HDD I/O ๋ํ ์ฑ๋ฅ ์ ํ๋ ๊ทธ๋ ๊ฒ ํฌ์ง ์์์ต๋๋ค.
FLAC Audio Encoding
FLAC ํ์ผ ์ธ์ฝ๋ฉ ํ ์คํธ์ ๋๋ค.
์ธ์ฝ๋ฉ ์์
์ ํ๋ ๋ฐ ์์ด CPU ์์
์ ๋ง์ด ์ฌ์ฉํ๋ ํธ์ด๊ธด ํ์ง๋ง, ์์ ์ธ๋ก ํฐ ์ฑ๋ฅ ์ ํ๋ ์์์ต๋๋ค.
Opus Codec Encoding
ํน์ ๋ชจ๋ฅด๋, ๋ค๋ฅธ ์ธ์ฝ๋ฉ๋ ํ ๋ฒ ํ ์คํธ ํด๋ดค์ต๋๋ค.
๋ญ ๋น์ทํ๋ค์. ์ธ์ฝ๋ฉ ๊ฐ์ ๋ถ๋ถ ๋ํด์๋ ํ์คํ ์ฑ๋ฅ ์ ํ๊ฐ ๋ง์ง ์์ต๋๋ค.
nginx Webserver Test
์ด๋ฒ์๋ ์๋ฒ์์ ๊ทธ๋๋ง ์กฐ๊ธ ๋น์ค์ด ํฐ ์น ์๋ฒ๋ฅผ ๋ฒค์น๋งํน ํด๋ดค์ต๋๋ค.
nginx ์น ์๋ฒ์ ๊ฒฝ์ฐ, ์์ฒญ ์์ ๋ฐ๋ผ ์กฐ๊ธ ์ฑ๋ฅ ์ ํ๊ฐ ์๊ธด ํ๋๋ฐ์. ํ์ง๋ง ์ญ์ ๊ทธ๋ ๊ฒ ํฐ ์ ํ ํญ์ ์๋์์ต๋๋ค.
GNU C Compiler Test
๊ทธ๋ฌ๋ฉด CPU ์ ์ ์จ์ ๋ง์ด ์ฐจ์งํ๊ณ , ๋ ๋ง์ด ์ฌ์ฉํ๋ ์ปดํ์ผ๋ฌ๋ ์ด๋จ๊น์?
์ญ์ ์ปดํ์ผ ์๋์๋ ์ฑ๋ฅ ์ ํ๋ ํ์คํ ์์์ต๋๋ค. ๊ท๋ชจ๋ Linux Kernel ๊ธ ์ ๋ ๋๋ ์ฝ๋๋ฅผ ์ปดํ์ผํ์ฌ ํ
์คํธํ ๊ฒฐ๊ณผ์
๋๋ค.
File I/O Test
1์ฐจ ํ ์คํธ์ ์ด์ด์ ์ด๋ฒ์๋ ์ง๋ ๋ฒ ํ ์คํธ๋ณด๋ค ๋ ๋ง์ ๋๋ ํฐ๋ฆฌ์ ํ์ผ์ ์์ฑํด๋ดค์ต๋๋ค.
์ง๋๋ฒ์๋ 4000๊ฐ ํ์ผ์ ์๋ธ ๋๋ ํฐ๋ฆฌ๋ฅผ 32๊ฐ๋ฅผ ์ฃผ๊ณ , ๊ฐ 4๋ฐ์ดํธ ์ฉ ํ์ผ์ ๋ง๋ค์์๋๋ฐ, ์ด๋ฒ์๋ 100๊ฐ์ ์๋ธ ๋๋ ํฐ๋ฆฌ์ 4๋ฐ์ดํธ ํฌ๊ธฐ์ ํ์ผ์ 10000๊ฐ๋ฅผ ์์ฑํ์์ต๋๋ค.
๋จผ์ M.2 SSD ํ ์คํธ ๊ฒฐ๊ณผ์ ๋๋ค.
M.2 SSD์์ ์ด๋ง์ด๋งํ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ์๋ค์. ํจ์น ์ ์ ์ฝ 40์ด ์ ๋ ๊ฑธ๋ฆฌ๋ ํ์ผ ์์ฑ ์์ ์ด ํจ์น๋ฅผ ํ๊ณ ๋๋ ๋ฌด๋ ค 1๋ถ 20์ด๊ฐ ์์๋๋๊ตฐ์.
๋ฐ๋ฉด์ SATA3๋ฅผ ์ฌ์ฉํ HDD์์๋ ๊ฑฐ์ ์ ํ๊ฐ ๋ํ๋์ง ์์์ต๋๋ค. SQLite ๋ฒค์น๋งํน ํ ์คํธ ๊ฒฐ๊ณผ๋ ๊ฑฐ์ ๋น์ทํ ๋ณํ์๋ค๊ณ ๋ณด์ ๋ ๋ฌด๋ฐฉํฉ๋๋ค.
ํ ์คํธ ๊ฒฐ๋ก ...
์ด๋ฒ Meltdown ํจ์น์ ๋ํ 30% ์ฑ๋ฅ ์ ํ๋ ์ฌ์ค์ ๋๋ค. ํ์ง๋ง ๋ช ๊ฐ์ง ์์ธ๊ฐ ์์ต๋๋ค. CPU์ ์ ์ฒด ์ฑ๋ฅ์ด ๋จ์ด์ง ๊ฒ์ ์๋๋ฉฐ ์ปค๋ ํ์ด์ง ํ ์ด๋ธ์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ๊ณ ์ณ์ง ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ธ ์ด์ ์ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ๋ด๋ฆฐ ์ ์ ์๊ฐ์ ์ด๋ ์ต๋๋ค.
System Call ํจ์๋ฅผ ๋ฒ๋ณตํ์ฌ ์ฌ์ฉํ ๋ ์ฑ๋ฅ์ด ๊ฐ์๋ก ๋ ์ ํ๊ฐ ์ฌํจ
๊ทธ ๊ทผ๊ฑฐ๋ก File ์ ์ถ๋ ฅ์์๋ fsync ์์คํ ํจ์๋ฅผ ์์ฃผ ํธ์ถํจ์ผ๋ก์จ ์ค์ 2~3๋ฐฐ ์ ๋ ๊ฐ๊น์ด ์ฑ๋ฅ ์ ํ ํ์์ด ๋ํ๋ฌ์ผ๋ฉฐ syscall ํจ์๋ฅผ 1์ต ๋ฒ ๋ถ๋ ์ ๋๋ 4๋ฐฐ๋ ๋๋ ์ฑ๋ฅ ์ ํ ํ์์ด ๋ณด์๋ค๋ ๊ฒ์ ๋๋ค.
๋ํ ์ด ํ์์ SATA3๋ฅผ ์ฌ์ฉํ๋ ํ๋์จ์ด๊ฐ ์๋ M.2, NVMe ๊ณ์ด์ PCI ํ๋์จ์ด ๊ณ์ด์์ ์ฃผ๋ก ๊ทธ ์ฑ๋ฅ ์ ํ๊ฐ ๊ต์ฅํ ์ฌํ๋ค๋ ๊ฒ์ ์ ์ ์์๊ณ , CPU ์ธ๋์ ๋ฐ๋ฅธ ์ฑ๋ฅ ์ ํ ํญ์ ์๋ฌด๋๋ Skylake ์ํคํ ์ฒ ์ดํ์์ ์ข ๋ ๋ฒ๋ฏํ๊ฒ ๋ํ๋๋ ๊ฒ ๊ฐ์์ต๋๋ค.
ํ์ง๋ง ํ์ฌ ์คํํ์ ์ทจ์ฝ์ ์ด ๊ณต๊ฐ๋์๊ณ , ์ ํฌ์คํธ์์ ๋ดค๋ฏ์ด ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ ํดํนํ ์์์ด ์ฌ๋ผ์์ผ๋, ํจ์น๋ ๋น์ฐํ ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์คํ ๋ฐ์ดํฐ๋ฅผ ์์ค๋นํ๋, ์ฑ๋ฅ์ ๋ํ ์ด์๋ฅผ ๊ฐ์ํด์ผ๊ฒ ์ฃ . ์๋ง๋ ์ด๊ฒ์ ์์คํ ์์ง๋์ด๋ ์๋ฒ ๊ด๋ฆฌ์ ์ฌ๋ฌ๋ถ๋ค์ ๊ฐ์ธ ์ฌ๋์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ง์น๋ฉฐ....
์ฌ๊ธฐ๊น์ง Intel CPU ์ฑ๋ฅ ์ ํ์ ๋ํ ์ด์์ ๋ํด ํฌ์คํ ํด๋ดค์ต๋๋ค. ํ ์คํธ๋ฅผ ํ๋ ๋ฐ, Linux kernel 4.15-rc6 ๋ฒ์ ๊ณผ Phoronix-test-suite๋ฅผ ์ฌ์ฉํ์์ผ๋ฉฐ System call ์์ค ์ฝ๋์ ๋ํด์๋ ๋ ๋ง์์ ํ ์คํธํ ๊ฒฐ๊ณผ๋ฅผ ์ธ์ฉํ์์ต๋๋ค. ํน์ ํ์ฌ ์ด์ฉ ์ค์ธ ์๋ฒ๋ ์์คํ ์ ํ ์คํธํ๊ณ ์ ํ๋ ๋ฐ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
ํ์ฌ Windows 10 RS3 ๋ฒ์ ๊ณผ Mac OS X 10.13.2 ๋ฒ์ ์์๋ ์ด๋ฏธ ์ด ์ทจ์ฝ์ ์ด ํจ์น๋์๋ค ํฉ๋๋ค. Linux ๋ํ ์ปค๋์ ์ฌ๋ผ์ ์์ง๋ง ๊ฐ ๋ฐฐํฌํ์ ๋ํด์๋ ์์ง ํจ์น๊ฐ ์ด๋ฃจ์ด์ง์ง ์์์ ๊ฒ์ด๊ณ , ํด๋ผ์ฐ๋ ์ ์ฒด(AWS, GCP, Azure ๋ฑ)์์๋ ๊ฐ ํจ์น ๋ ์ง๊ฐ ์ ํด์ ธ ์์ ๊ฒ์ด๋, ํจ์น์ ๋ํ ์์ธ ์ฌํญ์ ํด๋น ํด๋ผ์ฐ๋ ํํ์ด์ง์์ ํ์ธํ์๋ฉด ๋ฉ๋๋ค.
์ด์์ผ๋ก Intel CPU ์ฑ๋ฅ ์ ํ์ ๋ํ ๋ธ๋ก๊ทธ ํฌ์คํ ์ ๋ชจ๋ ๋ง์น๊ฒ ์ต๋๋ค.
'Infrastructure > Linux' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Netplan - ์ฐ๋ถํฌ(๋ฆฌ๋ ์ค) ๋คํธ์ํฌ ์ค์ (1) | 2018.11.05 |
---|---|
Intel CPU Spectre ํจ์น(Retpoline) ์ ํ ์คํธ (0) | 2018.01.22 |
Intel CPU ๋ณด์ ์ทจ์ฝ์ ํจ์น๋ก ์ธํ ์ฑ๋ฅ ๊ฐ์์ 1์ฐจ ํ ์คํธ (0) | 2018.01.04 |
Linux์์ MQTT Broker, Mosquitto ์ค์น (0) | 2017.08.28 |
Linux๋ก ์์ํด๋ณด๋ ๊ฐ๋จํ ์์ผ ํ๋ก๊ทธ๋๋ฐ (2) | 2017.04.08 |