ํ ์ผํธ๊ฐ ์ ๋ฒ์ ์ ์ถ์ํ์ต๋๋ค. F-์คํ 1.13, DPDK ๋ฐ FreeBSD TCP/IP ์คํ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํ๋ ์์ํฌ์ ๋๋ค. ํ๋ ์์ํฌ์ ์ฃผ์ ํ๋ซํผ์ Linux์ ๋๋ค. ์ฝ๋๋ BSD ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด์ ์ฒด์ ์คํ์ ์ฐํํ๊ณ ๋์ ๋คํธ์ํฌ ํ๋์จ์ด์ ์ง์ ์๋ํ๋ ์ฌ์ฉ์ ๊ณต๊ฐ์ ๊ตฌํ๋ ์คํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๋ ์์ํฌ์ ๋ช ์๋ ๊ธฐ๋ฅ ์ค:
- ๋คํธ์ํฌ ์นด๋์ ์ ์ฒด ๋ก๋: 10๋ง ๊ฐ์ ํ์ฑ ๋คํธ์ํฌ ์ฐ๊ฒฐ, 5๋ง RPS ๋ฐ 1๋ง CPS ๋ฌ์ฑ
- FreeBSD 11์์ ์ฌ์ฉ์ ๊ณต๊ฐ ์คํ์ ๋ง์ด๊ทธ๋ ์ด์ ํ์ฌ ํ์์ ์ด์ง ์์ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ฑฐํ์ฌ ๋คํธ์ํฌ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์์ผฐ์ต๋๋ค.
- Nginx์ Redis๋ฅผ ์ง์ํฉ๋๋ค. ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ F-Stack์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ค์ค ํ๋ก์ธ์ค ์ํคํ ์ฒ๋ก ์ธํ ํ์ฅ ์ฉ์ด์ฑ
- ๋ง์ดํฌ๋กํ๋ก์ฐ์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ F-Stack์ ์ฌ์ฉํ์ฌ ๋ณต์กํ ๋น๋๊ธฐ ๋ก์ง์ โโ๊ตฌํํ์ง ์๊ณ ๋ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ํ์ค epoll/kqueue API ์ง์
์ ๋ฒ์ ์์:
- ์ธํฐํ์ด์ค ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd, ff_setsockopt_freebsd๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ๋ค์ด์ค๋ ํจํท์ด ์์ ๋ CPU ์ฌ์ฉ๋์ ์ค์ด๊ธฐ ์ํด "idle_sleep" ์ต์ ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- arm64 ์ง์ ์ถ๊ฐ
- Docker ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- VLAN ์ง์ ์ถ๊ฐ
- F-Stack์ ๋ํ nginx ๊ตฌํ์์ getpeername, getsockname, shutdown ํจ์๊ฐ ๋์ฒด๋์์ต๋๋ค.
- DPDK๊ฐ ๋ฒ์ 17.11.4 LTS๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
์ถ์ฒ : linux.org.ru