เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 1.2 เดฆเดถเดฒเด•เตเดทเด‚ JSON เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป Linux เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

HTTP เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเดฐเดฎเดพเดตเดงเดฟ เดชเตเดฐเด•เดŸเดจเด‚ เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเต Linux เดŽเตปเดตเดฏเต‹เตบเดฎเต†เตปเตเดฑเต เดŸเตเดฏเต‚เตบ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดถเดฆเดฎเดพเดฏ เด’เดฐเต เด—เตˆเดกเต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเดšเตเดšเต. เด†เดฎเดธเต‹เตบ เด‡เดธเดฟ2 เดŽเตปเดตเดฏเต‹เตบเดฎเต†เตปเตเดฑเดฟเดฒเต† (4 เดตเดฟเดธเดฟเดชเดฟเดฏเต) เดฒเดฟเดฌเตเดฐเต†เด•เตเดฑเตเดฑเตผ เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดœเต†เดŽเดธเตเด’เดŽเตป เดชเตเดฐเตŠเดธเดธเดฑเดฟเตปเตเดฑเต† เดชเตเดฐเด•เดŸเดจเด‚ เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 224 เด†เดฏเดฟเดฐเด‚ เดŽเดชเดฟเด เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด†เดฎเดธเต‹เตบ เดฒเดฟเดจเด•เตเดธเต 2-เตปเตเดฑเต† เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดธเต†เดฑเตเดฑเดฟเด‚เด—เตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เต‡เตผเดฃเตฝ 4.14-เด“เดฐเต‹เดจเตเดจเตเด‚ 1.2 เดฆเดถเดฒเด•เตเดทเด‚ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเต‹ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดฐเต€เดคเดฟเด•เตพ เดธเดพเดงเตเดฏเดฎเดพเด•เตเด•เดฟ. เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเดถเต‡เดทเด‚ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต (436% เดตเตผเดฆเตเดงเดจเดตเต), เด•เต‚เดŸเดพเดคเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต† เด•เดพเดฒเดคเดพเดฎเดธเด‚ 79% เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด•เดพเดฐเดฃเดฎเดพเดฏเดฟ. nginx, Actix, Netty, Node.js เดŽเดจเตเดจเดฟเดตเดฏเตเตพเดชเตเดชเต†เดŸเต†เดฏเตเดณเตเดณ เดฎเดฑเตเดฑเต http เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดฐเต€เดคเดฟเด•เตพ libreactor-เดจเต เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เด…เดฒเตเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต (libreactor เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดคเต, เด•เดพเดฐเดฃเด‚ เด…เดคเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเด‚ เดฎเดฟเด•เดšเตเดš เดชเตเดฐเด•เดŸเดจเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต).

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 1.2 เดฆเดถเดฒเด•เตเดทเด‚ JSON เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป Linux เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด…เดŸเดฟเดธเตเดฅเดพเดจ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด•เตพ:

  • เดฒเดฟเดฌเตเดฐเด•เตเดฑเตเดฑเตผ เด•เต‹เดกเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดŸเต†เด•เตเด‚เดชเดตเตผ เด•เดฟเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ R18 เด“เดชเตเดทเตป เด’เดฐเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš CPU เด•เต‹เดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด•เต‹เดกเต เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดคเตเด•เตŠเดฃเตเดŸเต เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดฟ (เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป 25-27% เดตเดฐเต† เดœเต‹เดฒเดฟ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเดšเตเดšเต), "-O3" เด“เดชเตโ€Œเดทเดจเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดœเดฟเดธเดฟเดธเดฟเดฏเดฟเตฝ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเต. (5-10% เดตเตผเดฆเตเดงเดจเดตเต ) เด•เต‚เดŸเดพเดคเต† "-เดฎเดพเตผเดšเตเดšเต-เดจเต‡เดฑเตเดฑเต€เดตเต" (5-10%), เดฑเต€เดกเต/เดฑเตˆเดฑเตเดฑเต เด•เต‹เดณเตเด•เตพเด•เตเด•เต เดชเด•เดฐเด‚ recv/send (5-10%) เด•เต‚เดŸเดพเดคเต† pthreads เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด“เดตเตผเดนเต†เดกเต เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต (2-3%) . เด•เต‹เดกเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเดถเต‡เดทเด‚ เดฎเตŠเดคเตเดคเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเตเดฐเด•เดŸเดจ เดตเตผเดฆเตเดงเดจเดตเต 55% เด†เดฏเดฟเดฐเตเดจเตเดจเต, เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต 224k req/s-เตฝ เดจเดฟเดจเตเดจเต 347k req/s เด†เดฏเดฟ เดตเตผเดฆเตเดงเดฟเดšเตเดšเต.
  • เดŠเดนเด•เตเด•เดšเตเดšเดตเดŸ เดจเดฟเตผเดตเตเดตเดนเดฃ เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เต†เดคเดฟเดฐเดพเดฏ เดธเด‚เดฐเด•เตเดทเดฃเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•. เด•เต‡เตผเดฃเตฝ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ โ€œnospectre_v1 nospectre_v2 pti=off mds=off tsx_async_abort=offโ€ เดŽเดจเตเดจ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเตเดฐเด•เดŸเดจเด‚ 28% เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเดšเตเดšเต, เด•เต‚เดŸเดพเดคเต† เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต 347k req/s-เตฝ เดจเดฟเดจเตเดจเต 446k req/s เด†เดฏเดฟ เดตเตผเดฆเตเดงเดฟเดšเตเดšเต. เดตเต†เดตเตเดตเต‡เดฑเต†, โ€œnospectre_v1โ€ (Specter v1 + SWAPGS-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเด‚เดฐเด•เตเดทเดฃเด‚) เดŽเดจเตเดจ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดตเตผเดฆเตเดงเดจเดตเต 1-2%, โ€œnospectre_v2โ€ (Specter v2-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเด‚เดฐเด•เตเดทเดฃเด‚) - 15-20%, "pti=off" (Spectre v3/Meltdown) - 6 %, "mds=off tsx_async_abort=off" (MDS/Zombieload, TSX เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เด…เดฌเต‹เตผเดŸเตเดŸเต) - 6%. L1TF/Foreshadow (l1tf=flush), iTLB เดฎเตพเดŸเตเดŸเดฟเดนเดฟเดฑเตเดฑเต, เดŠเดนเด•เตเด•เดšเตเดšเดตเดŸ เดธเตเดฑเตเดฑเต‹เตผ เดฌเตˆเดชเดพเดธเต, SRBDS เด†เด•เตเดฐเดฎเดฃเด™เตเด™เตพ เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เต†เดคเดฟเดฐเดพเดฏ เดชเดฐเดฟเดฐเด•เตเดทเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดฎเดฟเดฒเตเดฒเดพเดคเต† เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดชเดฐเต€เด•เตเดทเดฟเดšเตเดš เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเดฎเดพเดฏเดฟ เดตเดฟเดญเดœเดฟเด•เตเด•เดพเดคเตเดคเดคเดฟเดจเดพเตฝ เดชเตเดฐเด•เดŸเดจเดคเตเดคเต† เดฌเดพเดงเดฟเดšเตเดšเดฟเดฒเตเดฒ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, KVM-เดจเต เดชเตเดฐเดคเตเดฏเต‡เด•เด‚, เดจเต†เดธเตเดฑเตเดฑเดกเต เดตเต†เตผเดšเตเดตเดฒเตˆเดธเต‡เดทเดจเตเด‚ เดฎเดฑเตเดฑเต เดธเดฟเดชเดฟเดฏเต เดฎเต‹เดกเดฒเตเด•เดณเตเด‚).
  • "auditctl -a never,task" เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด“เดกเดฟเดฑเตเดฑเดฟเด‚เด—เตเด‚ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เต‹เตพ เดฌเตเดฒเต‹เด•เตเด•เดฟเด‚เด—เต เดฎเต†เด•เตเด•เดพเดจเดฟเดธเด™เตเด™เดณเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ "--security-opt seccomp=unconfined" เด“เดชเตเดทเตป เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดฎเตŠเดคเตเดคเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเตเดฐเด•เดŸเดจ เดตเตผเดฆเตเดงเดจเดตเต 11% เด†เดฏเดฟเดฐเตเดจเตเดจเต, เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต 446k req/s เตฝ เดจเดฟเดจเตเดจเต 495k req/s เด†เดฏเดฟ เดตเตผเดฆเตเดงเดฟเดšเตเดšเต.
  • เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เด•เต‡เตผเดฃเตฝ เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เตพ เด…เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดคเตเด•เตŠเดฃเตเดŸเต iptables/netfilter เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโ€ŒเดŸ เดธเต†เตผเดตเตผ เดธเตŠเดฒเตเดฏเต‚เดทเดจเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดคเตเดค เดซเดฏเตผเดตเดพเตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดพเดจเตเดณเตเดณ เด†เดถเดฏเด‚, เดชเตเดฐเตŠเดซเตˆเดฒเดฟเด‚เด—เต เดซเดฒเด™เตเด™เตพ เดตเดดเดฟ เดชเตเดฐเต‡เดฐเดฟเดชเตเดชเดฟเดšเตเดšเต, nf_hook_slow เดซเด‚เด—เตโ€Œเดทเตป เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต 18% เดธเดฎเดฏเดฎเต†เดŸเตเดคเตเดคเต. iptables-เดจเต† เด…เดชเต‡เด•เตเดทเดฟเดšเตเดšเต nftables เด•เต‚เดŸเตเดคเตฝ เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ Amazon Linux iptables เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเดจเตเดจเต. iptables เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดฟเดฏเดคเดฟเดจเต เดถเต‡เดทเด‚, เดชเตเดฐเด•เดŸเดจ เดตเตผเดฆเตเดงเดจเดตเต 22% เด†เดฏเดฟเดฐเตเดจเตเดจเต, เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต 495k req/s เตฝ เดจเดฟเดจเตเดจเต 603k req/s เด†เดฏเดฟ เดตเตผเดฆเตเดงเดฟเดšเตเดšเต.
  • เดชเตเดฐเต‹เดธเดธเตเดธเตผ เด•เดพเดทเต† เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเตปเตเดฑเต† เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดค เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเดฟเดชเดฟเดฏเต เด•เต‹เดฑเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดนเดพเตปเดกเตโ€Œเดฒเดฑเตเด•เดณเตเดŸเต† เดฎเตˆเด—เตเดฐเต‡เดทเตป เด•เตเดฑเดšเตเดšเต. เดธเดฟเดชเดฟเดฏเต เด•เต‹เดฑเตเด•เตพ (เดธเดฟเดชเดฟเดฏเต เดชเดฟเตป เดšเต†เดฏเตเดฏเตฝ) เดฌเตˆเตปเดกเดฟเด‚เด—เต เดฒเดฟเดฌเตเดฐเต†เด•เตเดฑเตเดฑเตผ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เดณเตเดŸเต† เดคเดฒเดคเตเดคเดฟเดฒเตเด‚ เด•เต‡เตผเดฃเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดนเดพเตปเดกเตโ€Œเดฒเดฑเตเด•เตพ เดชเดฟเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†เดฏเตเด‚ (เดธเตˆเดกเต เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เต เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•) เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟ. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, irqbalance เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ CPU-เดฏเตเดฎเดพเดฏเตเดณเตเดณ เด•เตเดฏเต‚ เด…เดซเดฟเดจเดฟเดฑเตเดฑเดฟ /proc/irq/$IRQ/smp_affinity_list เดŽเดจเตเดจเดคเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต. เดฒเดฟเดฌเตเดฐเต†เด•เตโ€ŒเดŸเตผ เดชเตเดฐเต‹เดธเดธเตเด‚ เด‡เตปเด•เดฎเดฟเด‚เด—เต เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด•เตเดฏเต‚เดตเตเด‚ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เด’เดฐเต‡ เดธเดฟเดชเดฟเดฏเต เด•เต‹เตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดธเต‹เด•เตเด•เดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ SO_ATTACH_REUSEPORT_CBPF เดซเตเดฒเดพเด—เต เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดš เด’เดฐเต เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค BPF เดนเดพเตปเดกเตโ€Œเดฒเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด”เดŸเตเดŸเตโ€Œเด—เต‹เดฏเดฟเด‚เด—เต เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เด•เตเดฏเต‚เด•เตพ เดธเดฟเดชเดฟเดฏเตเดตเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, /sys/class/net/eth0/queues/tx- เดŽเดจเตเดจ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดฟ. /xps_cpus. เดฎเตŠเดคเตเดคเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเตเดฐเด•เดŸเดจ เดตเตผเดฆเตเดงเดจเดตเต 38% เด†เดฏเดฟเดฐเตเดจเตเดจเต, เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต 603k req/s เตฝ เดจเดฟเดจเตเดจเต 834k req/s เด†เดฏเดฟ เดตเตผเดฆเตเดงเดฟเดšเตเดšเต.
  • เด‡เตปเตเดฑเดฑเดชเตเดฑเตเดฑเต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดฒเดฟเตปเตเดฑเต†เดฏเตเด‚ เดชเต‹เดณเดฟเด‚เด—เดฟเตปเตเดฑเต† เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป. ENA เดกเตเดฐเตˆเดตเดฑเดฟเตฝ เด…เดกเดพเดชเตเดฑเตเดฑเต€เดตเต-rx เดฎเต‹เดกเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเดจเตเดจเดคเตเด‚ sysctl net.core.busy_read เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเตเด‚ เดชเตเดฐเด•เดŸเดจเด‚ 28% เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเต (เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต 834k req/s เตฝ เดจเดฟเดจเตเดจเต 1.06M req/s เด†เดฏเดฟ เดตเตผเดฆเตเดงเดฟเดšเตเดšเต, เด•เต‚เดŸเดพเดคเต† เดฒเต‡เดฑเตเดฑเตปเดธเดฟ 361ฮผs เตฝ เดจเดฟเดจเตเดจเต 292ฮผs เด†เดฏเดฟ เด•เตเดฑเดžเตเดžเต).
  • เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเตฝ เด…เดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เดคเดŸเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเดจเตเดจ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดธเต‡เดตเดจเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต. dhclient เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ IP เดตเดฟเดฒเดพเดธเด‚ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเดคเดฟเตปเตเดฑเต† เดซเดฒเดฎเดพเดฏเดฟ 6% เดชเตเดฐเด•เดŸเดจเด‚ เดตเตผเดฆเตเดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต 1.06M req/s-เตฝ เดจเดฟเดจเตเดจเต 1.12M req/s เด†เดฏเดฟ เดตเตผเดฆเตเดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต. dhclient เดชเตเดฐเด•เดŸเดจเดคเตเดคเต† เดฌเดพเดงเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดพเดฐเดฃเด‚ เด’เดฐเต เดฑเต‹ เดธเต‹เด•เตเด•เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เดŸเตเดฐเดพเดซเดฟเด•เต เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเดฒเดพเดฃเต.
  • เดธเตเดชเดฟเตป เดฒเต‹เด•เตเด•เต เดชเต‹เดฐเดพเดŸเตเดŸเด‚. sysctl โ€œnet.core.default_qdisc=noqueueโ€, โ€œtc qdisc replace dev eth0 root mqโ€ เดŽเดจเตเดจเดฟเดต เดตเดดเดฟ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตเดฑเตเดฑเดพเด•เตเด•เต โ€œnoqueueโ€ เดฎเต‹เดกเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเต 2% เดชเตเดฐเด•เดŸเดจ เดตเตผเดฆเตเดงเดจเดตเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเดฏเดฟ, เด•เต‚เดŸเดพเดคเต† เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต 1.12M req/s-เตฝ เดจเดฟเดจเตเดจเต 1.15M เด†เดฏเดฟ เดตเตผเดฆเตเดงเดฟเดšเตเดšเต. req/s.
  • "ethtool -K eth0 gro off" เดŽเดจเตเดจ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต GRO (Generic Receive Offload) เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเตเด‚ sysctl "net.ipv4.tcp_congestion_control=reno" เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต reno เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตเดฏเต‚เดฌเดฟเด•เต เด•เตบเดœเดทเตป เด•เตบเดŸเตเดฐเต‹เตพ เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดชเต‹เดฒเตเดณเตเดณ เด…เดตเดธเดพเดจ เดšเต†เดฑเดฟเดฏ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด•เตพ. เดฎเตŠเดคเตเดคเดคเตเดคเดฟเดฒเตเดณเตเดณ เด‰เตฝเดชเตเดชเดพเดฆเดจเด•เตเดทเดฎเดค 4% เด†เดฃเต. เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต 1.15M req/s-เตฝ เดจเดฟเดจเตเดจเต 1.2M req/s เด†เดฏเดฟ เดตเตผเดฆเตเดงเดฟเดšเตเดšเต.

เดชเตเดฐเดตเตผเดคเตเดคเดฟเดšเตเดš เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด•เตพเด•เตเด•เต เดชเตเดฑเดฎเต‡, เดชเตเดฐเดคเต€เด•เตเดทเดฟเดšเตเดš เดชเตเดฐเด•เดŸเดจ เดตเตผเดฆเตเดงเดจเดตเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเด•เดพเดคเตเดค เดฐเต€เดคเดฟเด•เดณเตเด‚ เดฒเต‡เด–เดจเด‚ เดšเตผเดšเตเดšเดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดซเดฒเดชเตเดฐเดฆเดฎเดฒเตเดฒเต†เดจเตเดจเต เดคเต†เดณเดฟเดžเตเดžเต:

  • เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดคเตเดฏเต‡เด•เดฎเดพเดฏเดฟ เดฒเดฟเดฌเตเดฐเต†เด•เตโ€ŒเดŸเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเตเดฐเด•เดŸเดจเดคเตเดคเดฟเตฝ เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเต†เดŸเตเดŸเดฟเดฒเตเดฒ. เดฑเตˆเดฑเตเดฑเดฟเดจเต† เดชเด•เดฐเด‚ เด…เดฏเด•เตเด•เตเด•, epoll_wait-เตฝ maxevents เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเด•, GCC เดชเดคเดฟเดชเตเดชเตเด•เดณเตเด‚ เดซเตเดฒเดพเด—เตเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเดฟเดŸเตเดŸเตเด‚ เดซเดฒเดฎเตเดฃเตเดŸเดพเดฏเดฟเดฒเตเดฒ ("-O3", "-march-native" เดซเตเดฒเดพเด—เตเด•เตพเด•เตเด•เต เดฎเดพเดคเตเดฐเดฎเต‡ เดˆ เดชเตเดฐเดญเดพเดตเด‚ เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต).
  • เดฒเดฟเดจเด•เตเดธเต เด•เต‡เตผเดฃเตฝ 4.19, 5.4 เดชเดคเดฟเดชเตเดชเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตเด—เตเดฐเต‡เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, SCHED_FIFO, SCHED_RR เดทเต†เดกเตเดฏเต‚เดณเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, sysctl kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns เดŽเดจเตเดจเดฟเดต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, transparent_clock=hugets did not affect.
  • ENA เดกเตเดฐเตˆเดตเดฑเดฟเตฝ, เด“เดซเตโ€Œเดฒเต‹เดกเต เดฎเต‹เดกเตเด•เตพ (เดธเต†เด—เตโ€Œเดฎเต†เตปเตเดฑเต‡เดทเตป, เดธเตโ€Œเด•เดพเดฑเตเดฑเตผ-เด—เต†เดคเตผ, rx/tx เดšเต†เด•เตเด•เตโ€Œเดธเด‚) เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚, โ€œ-O3โ€ เดซเตเดฒเดพเด—เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚, ena.rx_queue_size, ena.force_large_llq_header เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเด‚ เดซเดฒเดฎเตเดฃเตเดŸเดพเดฏเดฟเดฒเตเดฒ.
  • เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเดฒเต† เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดชเตเดฐเด•เดŸเดจเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ:
    • IPv6 เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•: ipv6.disable=1
    • VLAN เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•: modprobe -rv 8021q
    • เดชเดพเด•เตเด•เต‡เดœเต เด‰เดฑเดตเดฟเดŸ เดชเดฐเดฟเดถเต‹เดงเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•
      • net.ipv4.conf.all.rp_filter=0
      • net.ipv4.conf.eth0.rp_filter=0
      • net.ipv4.conf.all.accept_local=1 (เดจเต†เด—เดฑเตเดฑเต€เดตเต เด‡เดซเด•เตเดฑเตเดฑเต)
    • net.ipv4.tcp_sack = 0
    • net.ipv4.tcp_dsack=0
    • net.ipv4.tcp_mem/tcp_wmem/tcp_rmem
    • net.core.netdev_budget
    • net.core.dev_weight
    • net.core.netdev_max_backlog
    • net.ipv4.tcp_slow_start_after_idle=0
    • net.ipv4.tcp_moderate_rcvbuf=0
    • net.ipv4.tcp_timestamps=0
    • net.ipv4.tcp_low_latency = 1
    • SO_PRIORITY
    • TCP_NODELAY

    เด…เดตเดฒเด‚เดฌเด‚: opennet.ru

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•