เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ 1.2 เจฎเจฟเจฒเฉ€เจ…เจจ JSON เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฒเจˆ เจฒเฉ€เจจเจ•เจธ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เจฐเจจเจพ

HTTP เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฒเจˆ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจฒเฉ€เจจเจ•เจธ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจŸเจฟเจŠเจจ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจคเฉเจฐเจฟเจค เจ—เจพเจˆเจก เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเฉ‡ เจเจฎเจพเจœเจผเจพเจจ EC2 เจตเจพเจคเจพเจตเจฐเจจ (4 vCPU) เจตเจฟเฉฑเจš เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจ•เจŸเจฐ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ JSON เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจจเฉ‚เฉฐ 224 เจนเจœเจผเจพเจฐ API เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ เจคเฉ‹เจ‚ เจ•เจฐเจจเจฒ 2 เจฆเฉ‡ เจจเจพเจฒ เจเจฎเจพเจœเจผเจพเจจ เจฒเฉ€เจจเจ•เจธ 4.14 เจฆเฉ€เจ†เจ‚ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเจพเจฒ เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ 1.2 เจคเฉ‹เจ‚ 436 เจฎเจฟเจฒเฉ€เจ…เจจ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃเจพ เจธเฉฐเจญเจต เจฌเจฃเจพเจ‡เจ† เจนเฉˆเฅค เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ (79% เจฆเจพ เจตเจพเจงเจพ) เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฆเฉ‚เจœเจพ, เจ…เจคเฉ‡ เจ‡เจน เจตเฉ€ XNUMX% เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฆเฉ‡เจฐเฉ€ เจตเจฟเฉฑเจš เจ•เจฎเฉ€ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃเจฟเจ†เฅค เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจตเจฟเจงเฉ€เจ†เจ‚ libreactor เจฒเจˆ เจ–เจพเจธ เจจเจนเฉ€เจ‚ เจนเจจ เจ…เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจนเฉ‹เจฐ HTTP เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ nginx, Actix, Netty เจ…เจคเฉ‡ Node.js (เจฒเจฟเจฌเจฐเฉ‡เจ•เจŸเจฐ เจจเฉ‚เฉฐ เจŸเฉˆเจธเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจ—เจฟเจ† เจธเฉ€ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจธเจฆเฉ‡ เจ†เจงเจพเจฐเจฟเจค เจนเฉฑเจฒ เจจเฉ‡ เจฌเจฟเจนเจคเจฐ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจฆเจฟเจ–เจพเจˆ เจธเฉ€)เฅค

เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ 1.2 เจฎเจฟเจฒเฉ€เจ…เจจ JSON เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฒเจˆ เจฒเฉ€เจจเจ•เจธ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เจฐเจจเจพ

เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจ…เจจเฉเจ•เฉ‚เจฒเจจ:

  • เจฒเจฟเจฌเจฐเฉ‡เจ•เจŸเจฐ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃเจพเฅค เจŸเฉˆเจ•เจฎเจชเจพเจตเจฐ เจ•เจฟเฉฑเจŸ เจคเฉ‹เจ‚ R18 เจตเจฟเจ•เจฒเจช เจจเฉ‚เฉฐ เจ†เจงเจพเจฐ เจตเจœเฉ‹เจ‚ เจตเจฐเจคเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจœเจฟเจธ เจจเฉ‚เฉฐ "-O25" เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ GCC เจตเจฟเฉฑเจš เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเฉ‡ เจ—เจ CPU เจ•เฉ‹เจฐเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจธเฉ€เจฎเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจนเจŸเจพ เจ•เฉ‡ เจธเฉเจงเจพเจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ (เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ เจจเฉ‡ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ 27-3% เจคเฉฑเจ• เจคเฉ‡เจœเจผ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฑเจคเฉ€ เจธเฉ€) (5-10% เจฆเจพ เจตเจพเจงเจพ) เจ…เจคเฉ‡ "-เจฎเจพเจฐเจš-เจจเฉ‡เจŸเจฟเจต" (5-10%), เจฐเฉ€เจก/เจฐเจพเจˆเจŸ เจ•เจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ recv/เจญเฉ‡เจœเฉ‹ (5-10%) เจจเจพเจฒ เจฌเจฆเจฒเจฃเจพ เจ…เจคเฉ‡ pthreads (2-3%) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ“เจตเจฐเจนเฉˆเฉฑเจก เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃเจพเฅค . เจ•เฉ‹เจก เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจฎเฉเฉฑเจšเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจตเจฟเฉฑเจš เจตเจพเจงเจพ 55% เจธเฉ€, เจ…เจคเฉ‡ เจฅเฉเจฐเฉ‹เจชเฉเฉฑเจŸ 224k เจฌเฉ‡เจจเจคเฉ€/s เจคเฉ‹เจ‚ 347k เจฌเฉ‡เจจเจคเฉ€/s เจคเฉฑเจ• เจตเจง เจ—เจˆเฅค
  • เจธเฉฑเจŸเฉ‡เจฌเจพเจœเฉ€ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ‡ เจตเจฟเจฐเฉเฉฑเจง เจธเฉเจฐเฉฑเจ–เจฟเจ† เจจเฉ‚เฉฐ เจ…เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจ“เฅค เจ•เจฐเจจเจฒ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ โ€œnospectre_v1 nospectre_v2 pti=off mds=off tsx_async_abort=offโ€ เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจจเฉ‚เฉฐ 28% เจคเฉฑเจ• เจตเจงเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจนเฉˆ, เจ…เจคเฉ‡ เจฅเฉเจฐเฉ‹เจชเฉเฉฑเจŸ 347k req/s เจคเฉ‹เจ‚ 446k req/s เจนเฉ‹ เจ—เจˆ เจนเฉˆเฅค เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ "nospectre_v1" (เจธเจชเฉˆเจ•เจŸเจฐ v1 + SWAPGS เจคเฉ‹เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ†) เจคเฉ‹เจ‚ เจตเจพเจงเจพ 1-2%, "nospectre_v2" (เจธเจชเฉˆเจ•เจŸเจฐ v2 เจคเฉ‹เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ†) - 15-20%, "pti=off" (เจธเจชเฉˆเจ•เจŸเจฐ v3/เจฎเฉ‡เจฒเจŸเจกเจพเจŠเจจ) เจธเฉ€เฅค - 6%, "mds=off tsx_async_abort=off" (MDS/Zombieload เจ…เจคเฉ‡ TSX เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจ…เจฌเฉ‹เจฐเจŸ) - 6%เฅค L1TF/Foreshadow (l1tf=flush), iTLB เจฎเจฒเจŸเฉ€เจนเจฟเจŸ, เจธเจชเฉ‡เจ•เฉเจฒเฉ‡เจŸเจฟเจต เจธเจŸเฉ‹เจฐ เจฌเจพเจˆเจชเจพเจธ เจ…เจคเฉ‡ SRBDS เจนเจฎเจฒเจฟเจ†เจ‚ เจคเฉ‹เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฒเจˆ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฟเจ† เจจเจนเฉ€เจ‚ เจ—เจฟเจ† เจธเฉ€, เจœเจฟเจธ เจจเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจน เจŸเฉˆเจธเจŸ เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเฉฐเจฐเจšเจจเจพ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, KVM เจฒเจˆ เจ–เจพเจธ, เจจเฉ‡เจธเจŸเจก) เจจเจพเจฒ เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเจฆเฉ‡ เจธเจจเฅค เจตเจฐเจšเฉเจ…เจฒเจพเจˆเจœเฉ‡เจธเจผเจจ เจ…เจคเฉ‡ เจนเฉ‹เจฐ CPU เจฎเจพเจกเจฒ)เฅค
  • "auditctl -a never,task" เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ†เจกเจฟเจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจฌเจฒเจพเจ•เจฟเฉฐเจ— เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจ…เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ "--security-opt seccomp=unconfined" เจตเจฟเจ•เจฒเจช เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพเฅค เจธเจฎเฉเฉฑเจšเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจตเจฟเฉฑเจš เจตเจพเจงเจพ 11% เจธเฉ€, เจ…เจคเฉ‡ เจฅเฉเจฐเฉ‹เจชเฉเฉฑเจŸ 446k เจฌเฉ‡เจจเจคเฉ€/s เจคเฉ‹เจ‚ 495k เจฌเฉ‡เจจเจคเฉ€/s เจคเฉฑเจ• เจตเจง เจ—เจˆเฅค
  • เจธเฉฐเจฌเฉฐเจงเจฟเจค เจ•เจฐเจจเจฒ เจฎเฉ‹เจกเฉ€เจŠเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจจเจฒเฉ‹เจก เจ•เจฐเจ•เฉ‡ iptables/netfilter เจจเฉ‚เฉฐ เจ…เจฏเฉ‹เจ— เจ•เจฐเจจเจพเฅค เจซเจพเจ‡เจฐเจตเจพเจฒ เจจเฉ‚เฉฐ เจ…เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจตเจฟเจšเจพเจฐ, เจœเฉ‹ เจ•เจฟ เจ‡เฉฑเจ• เจ–เจพเจธ เจธเจฐเจตเจฐ เจนเฉฑเจฒ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจตเจฐเจคเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจจเฉ‚เฉฐ เจชเจฐเฉ‹เจซเจพเจˆเจฒเจฟเฉฐเจ— เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเฉเจ†เจฐเจพ เจชเฉเฉฑเจ›เจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจœเจฟเจธ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เจฟ nf_hook_slow เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ 18% เจธเจฎเจพเจ‚ เจฒเฉฑเจ—เจฟเจ†เฅค เจ‡เจน เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ•เจฟ nftables iptables เจจเจพเจฒเฉ‹เจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจ•เฉเจธเจผเจฒเจคเจพ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจเจฎเจพเจœเจผเจพเจจ เจฒเฉ€เจจเจ•เจธ iptables เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค iptables เจจเฉ‚เฉฐ เจ…เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเฉฑเจš เจตเจพเจงเจพ 22% เจธเฉ€, เจ…เจคเฉ‡ เจฅเฉเจฐเจฐเฉ‚เจชเฉเจŸ 495k เจฌเฉ‡เจจเจคเฉ€/s เจคเฉ‹เจ‚ 603k เจฌเฉ‡เจจเจคเฉ€/s เจคเฉฑเจ• เจตเจงเจฟเจ†เฅค
  • เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจ•เฉˆเจธเจผ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ€ เจ•เฉเจธเจผเจฒเจคเจพ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจตเฉฑเจ–-เจตเฉฑเจ– CPU เจ•เฉ‹เจฐเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจนเฉˆเจ‚เจกเจฒเจฐ เจฆเฉ€ เจ˜เจŸเจพเจˆ เจ—เจˆ เจฎเจพเจˆเจ—เฉเจฐเฉ‡เจธเจผเจจเฅค เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ CPU เจ•เฉ‹เจฐ (CPU เจชเจฟเจจเจฟเฉฐเจ—) เจฒเจˆ เจฌเจพเจˆเจกเจฟเฉฐเจ— เจฒเจฟเจฌเจฐเฉ‡เจ•เจŸเจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฆเฉ‡ เจชเฉฑเจงเจฐ เจ…เจคเฉ‡ เจชเจฟเจจเจฟเฉฐเจ— เจ•เจฐเจจเจฒ เจจเฉˆเจŸเจตเจฐเจ• เจนเฉˆเจ‚เจกเจฒเจฐ (เจฐเจฟเจธเฉ€เจต เจธเจพเจˆเจก เจธเจ•เฉ‡เจฒเจฟเฉฐเจ—) เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, irqbalance เจจเฉ‚เฉฐ เจ…เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ CPU เจจเจพเจฒ เจ•เจคเจพเจฐ เจธเจฌเฉฐเจง เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ /proc/irq/$IRQ/smp_affinity_list เจตเจฟเฉฑเจš เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจฒเจฟเจฌเจฐเฉ‡เจ•เจŸเจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ…เจคเฉ‡ เจ†เจ‰เจฃ เจตเจพเจฒเฉ‡ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ€ เจจเฉˆเจŸเจตเจฐเจ• เจ•เจคเจพเจฐ เจจเฉ‚เฉฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ•เฉ‹ CPU เจ•เฉ‹เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจ•เจธเจŸเจฎ BPF เจนเฉˆเจ‚เจกเจฒเจฐ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจธเจพเจ•เจŸ เจฌเจฃเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ SO_ATTACH_REUSEPORT_CBPF เจซเจฒเฉˆเจ— เจธเฉˆเฉฑเจŸ เจ•เจฐเจ•เฉ‡ เจœเฉเฉœเจฟเจ† เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจฌเจพเจนเจฐ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจ•เจคเจพเจฐเจพเจ‚ เจจเฉ‚เฉฐ CPU เจจเจพเจฒ เจœเฉ‹เฉœเจจ เจฒเจˆ, เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ /sys/class/net/eth0/queues/tx- เจจเฉ‚เฉฐ เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค /xps_cpus. เจธเจฎเฉเฉฑเจšเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจตเจฟเฉฑเจš เจตเจพเจงเจพ 38% เจธเฉ€, เจ…เจคเฉ‡ เจฅเฉเจฐเฉ‹เจชเฉเฉฑเจŸ 603k เจฌเฉ‡เจจเจคเฉ€/s เจคเฉ‹เจ‚ 834k เจฌเฉ‡เจจเจคเฉ€/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 เจฌเฉ‡เจจเจคเฉ€/s เจคเฉ‹เจ‚ 1.12M เจฌเฉ‡เจจเจคเฉ€/s เจคเฉฑเจ• เจตเจงเจฟเจ† เจนเฉˆเฅค dhclient เจฆเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจจ เจฆเจพ เจ•เจพเจฐเจจ เจ‡เฉฑเจ• เจ•เฉฑเจšเฉ‡ เจธเจพเจ•เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจตเจฟเฉฑเจš เจนเฉˆเฅค
  • เจธเจชเจฟเจจ เจฒเจพเจ• เจจเจพเจฒ เจฒเฉœเจจเจพเฅค sysctl โ€œnet.core.default_qdisc=noqueueโ€ เจ…เจคเฉ‡ โ€œtc qdisc replace dev eth0 root mqโ€ เจฐเจพเจนเฉ€เจ‚ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจธเจŸเฉˆเจ• เจจเฉ‚เฉฐ โ€œnoqueueโ€ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃ เจจเจพเจฒ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจตเจฟเฉฑเจš 2% เจตเจพเจงเจพ เจนเฉ‹เจ‡เจ†, เจ…เจคเฉ‡ เจฅเฉเจฐเจฐเฉ‚เจชเฉเจŸ 1.12M เจฌเฉ‡เจจเจคเฉ€/s เจคเฉ‹เจ‚ เจตเจง เจ•เฉ‡ 1.15M เจนเฉ‹ เจ—เจฟเจ†เฅค เจฌเฉ‡เจจเจคเฉ€/เจธ.
  • เจ…เฉฐเจคเจฎ เจฎเจพเจฎเฉ‚เจฒเฉ€ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพเจตเจพเจ‚, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ "ethtool -K eth0 gro off" เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ GRO (เจœเจจเจฐเจฟเจ• เจฐเจฟเจธเฉ€เจต เจ†เจซเจฒเฉ‹เจก) เจจเฉ‚เฉฐ เจ…เจฏเฉ‹เจ— เจ•เจฐเจจเจพ เจ…เจคเฉ‡ sysctl "net.ipv4.tcp_congestion_control=reno" เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เจฟเจŠเจฌเจฟเจ• เจ•เฉฐเจœเฉˆเจธเจผเจจ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจจเฉ‚เฉฐ เจฐเฉ‡เจจเฉ‹ เจจเจพเจฒ เจฌเจฆเจฒเจฃเจพเฅค เจ•เฉเฉฑเจฒ เจ‰เจคเจชเจพเจฆเจ•เจคเจพ เจตเจพเจงเจพ 4% เจธเฉ€. เจฅเฉเจฐเฉ‹เจ…เจชเฉเฉฑเจŸ 1.15M เจฌเฉ‡เจจเจคเฉ€/เจธเฉˆเจ•เจฟเฉฐเจก เจคเฉ‹เจ‚ 1.2M เจฌเฉ‡เจจเจคเฉ€/เจธเฉˆเจ•เฉฐเจก เจคเฉฑเจ• เจตเจงเจฟเจ† เจนเฉˆเฅค

เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจœเฉ‹ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจฒเฉ‡เจ– เจ‰เจนเจจเจพเจ‚ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฆเฉ€ เจตเฉ€ เจšเจฐเจšเจพ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจธเฉฐเจญเจพเจตเจฟเจค เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจตเจฟเฉฑเจš เจตเจพเจงเจพ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจจเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจฌเฉ‡เจ…เจธเจฐ เจธเจพเจฌเจค เจนเฉ‹เจ:

  • เจฒเจฟเจฌเจฐเฉ‡เจ•เจŸเจฐ เจจเฉ‚เฉฐ เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจšเจฒเจพเจ‰เจฃเจพ เจ‡เจธ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจšเจฒเจพเจ‰เจฃ เจจเจพเจฒเฉ‹เจ‚ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเฉฑเจš เจตเฉฑเจ–เจฐเจพ เจจเจนเฉ€เจ‚ เจธเฉ€เฅค เจฐเจพเจˆเจŸเจต เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฃ เจจเจพเจฒ เจฌเจฆเจฒเจฃเจพ, epoll_wait เจตเจฟเฉฑเจš เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจ˜เจŸเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃเจพ, เจ…เจคเฉ‡ GCC เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจ…เจคเฉ‡ เจซเจฒเฉˆเจ—เจพเจ‚ เจจเจพเจฒ เจชเฉเจฐเจฏเฉ‹เจ— เจ•เจฐเจจ เจฆเจพ เจ•เฉ‹เจˆ เจชเฉเจฐเจญเจพเจต เจจเจนเฉ€เจ‚ เจนเฉ‹เจ‡เจ† (เจชเฉเจฐเจญเจพเจต เจธเจฟเจฐเจซ "-O3" เจ…เจคเฉ‡ "-เจฎเจพเจฐเจš-เจจเฉ‡เจŸเจฟเจต" เจซเจฒเฉˆเจ—เจพเจ‚ เจฒเจˆ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจธเฉ€)เฅค
  • เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจจเฉ‚เฉฐ เจตเจฐเจœเจจ 4.19 เจ…เจคเฉ‡ 5.4 เจตเจฟเฉฑเจš เจ…เฉฑเจชเจ—เจฐเฉ‡เจก เจ•เจฐเจจเจพ, SCHED_FIFO เจ…เจคเฉ‡ SCHED_RR เจธเจผเจกเจฟเจŠเจฒเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡, sysctl kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns, transparent_hugepages=never, tskew=tskew=1 เจ…เจคเฉ‡ ctskew=XNUMX เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพเฅค
  • 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

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