HTTP āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻ āĻ°ā§āĻāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ Linux āĻāĻ¨āĻāĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§āĻ¨ā§āĻ āĻāĻŋāĻāĻ¨ āĻāĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž āĻĒā§āĻ°āĻāĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ ā§āĻ¯āĻžāĻŽāĻžāĻāĻ¨ EC2 āĻĒāĻ°āĻŋāĻŦā§āĻļā§ (4 vCPU) āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻā§āĻāĻ° āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻāĻāĻŋ JSON āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ°ā§āĻ° āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§ āĻ¸āĻŽā§āĻāĻŦ āĻāĻ°ā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 224 āĻšāĻžāĻāĻžāĻ° API āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĨā§āĻā§ Amazon Linux 2-āĻāĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻ¸āĻš āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛ 4.14 āĻĨā§āĻā§ 1.2 āĻŽāĻŋāĻ˛āĻŋāĻ¯āĻŧāĻ¨ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§āĨ¤ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨ā§āĻ° āĻĒāĻ°ā§ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ (436% āĻŦā§āĻĻā§āĻ§āĻŋ), āĻāĻŦāĻ āĻāĻāĻžāĻĄāĻŧāĻžāĻ 79% āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ā§ āĻŦāĻŋāĻ˛āĻŽā§āĻŦ āĻšā§āĻ°āĻžāĻ¸ā§āĻ° āĻĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻāĻ°ā§āĨ¤ nginx, Actix, Netty āĻāĻŦāĻ Node.js āĻ¸āĻš āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ HTTP āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ libreactor āĻāĻŦāĻ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¨āĻ¯āĻŧ (āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ¯āĻŧ libreactor āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻžāĻ°āĻŖ āĻāĻāĻŋāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻžāĻ˛ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻĻā§āĻāĻžāĻ¯āĻŧ)āĨ¤
āĻŽā§āĻ˛āĻŋāĻ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨:
- libreactor āĻā§āĻĄ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāĻ°āĻž. āĻā§āĻāĻŽāĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻŋāĻ āĻĨā§āĻā§ R18 āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž CPU āĻā§āĻ°ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻ¸ā§āĻŽāĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻĄ āĻ āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻ°ā§ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ (āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻ¨ 25-27% āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻžāĻāĻā§ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ), "-O3" āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ GCC-āĻ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ (5-10% āĻŦā§āĻĻā§āĻ§āĻŋ) āĻāĻŦāĻ "-march-native" (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" (āĻ¸ā§āĻĒā§āĻā§āĻāĻžāĻ° v1 + SWAPGS āĻĨā§āĻā§ āĻ¸ā§āĻ°āĻā§āĻˇāĻž) āĻĨā§āĻā§ āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻŋāĻ˛ 1-2%, "nospectre_v2" (āĻ¸ā§āĻĒā§āĻā§āĻāĻžāĻ° 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-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ, āĻ¨ā§āĻ¸ā§āĻā§āĻĄ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ CPU āĻŽāĻĄā§āĻ˛)āĨ¤
- "auditctl -a never,task" āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ āĻĄāĻŋāĻāĻŋāĻ āĻāĻŦāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ˛ āĻŦā§āĻ˛āĻāĻŋāĻ āĻŽā§āĻāĻžāĻ¨āĻŋāĻāĻŽ āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻāĻŦāĻ āĻĄāĻāĻžāĻ° āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ "--security-opt seccomp=unconfined" āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻžāĨ¤ āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻŋāĻ˛ 11%, āĻāĻŦāĻ āĻĨā§āĻ°ā§āĻĒā§āĻ 446k āĻ āĻ¨ā§āĻ°ā§āĻ§/s āĻĨā§āĻā§ 495k āĻ āĻ¨ā§āĻ°ā§āĻ§/āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒā§āĻ¯āĻŧā§āĻā§āĨ¤
- āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛ āĻŽāĻĄāĻŋāĻāĻ˛ āĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§ iptables/netfilter āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻāĻ¯āĻŧāĻžāĻ˛ āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž, āĻ¯āĻž āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ, āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛āĻŋāĻ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻŽā§āĻĒāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯āĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž nf_hook_slow āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻ¤ā§ 18% āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§āĻ¯āĻŧāĨ¤ āĻāĻāĻž āĻāĻ˛ā§āĻ˛ā§āĻā§āĻ¯ āĻ¯ā§ nftables iptables āĻāĻ° āĻā§āĻ¯āĻŧā§ āĻŦā§āĻļāĻŋ āĻĻāĻā§āĻˇāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ Amazon Linux iptables āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ˛ā§āĻā§āĨ¤ iptables āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻŋāĻ˛ 22%, āĻāĻŦāĻ āĻĨā§āĻ°ā§āĻĒā§āĻ 495k req/s āĻĨā§āĻā§ 603k req/s āĻšāĻ¯āĻŧā§āĻā§āĨ¤
- āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ° āĻā§āĻ¯āĻžāĻļā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻĻāĻā§āĻˇāĻ¤āĻž āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻ¤ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ CPU āĻā§āĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°ā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻšā§āĻ°āĻžāĻ¸āĨ¤ āĻ¸āĻŋāĻĒāĻŋāĻāĻ āĻā§āĻ° (āĻ¸āĻŋāĻĒāĻŋāĻāĻ āĻĒāĻŋāĻ¨āĻŋāĻ) āĻāĻŦāĻ āĻĒāĻŋāĻ¨āĻŋāĻ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ (āĻĒāĻžāĻ°ā§āĻļā§āĻŦ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ āĻā§āĻ°āĻšāĻŖ) āĻāĻāĻ¯āĻŧ āĻ¸ā§āĻ¤āĻ°ā§ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨ āĻ˛āĻŋāĻŦā§āĻ°ā§āĻā§āĻāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¸ āĻŦāĻžāĻāĻ§āĻžāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, irqbalance āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ CPU-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ /proc/irq/$IRQ/smp_affinity_list-āĻ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ˛āĻŋāĻŦā§āĻ°ā§āĻā§āĻāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻŦāĻ āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¸āĻžāĻ°āĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ CPU āĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§, āĻāĻāĻāĻŋ āĻāĻžāĻ¸ā§āĻāĻŽ BPF āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¸āĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ SO_ATTACH_REUSEPORT_CBPF āĻĒāĻ¤āĻžāĻāĻž āĻ¸ā§āĻ āĻāĻ°ā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¸āĻŋāĻĒāĻŋāĻāĻāĻ¤ā§ āĻŦāĻšāĻŋāĻ°ā§āĻāĻžāĻŽā§ āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻ¸āĻžāĻ°āĻŋ āĻŦāĻžāĻāĻ§āĻ¤ā§, /sys/class/net/eth0/queues/tx- āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ /xps_cpusāĨ¤ āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻŋāĻ˛ 38%, āĻāĻŦāĻ āĻĨā§āĻ°ā§āĻĒā§āĻ 603k āĻ āĻ¨ā§āĻ°ā§āĻ§/āĻ¸ā§āĻā§āĻ¨ā§āĻĄ āĻĨā§āĻā§ 834k āĻ āĻ¨ā§āĻ°ā§āĻ§/āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒā§āĻ¯āĻŧā§āĻā§āĨ¤
- āĻāĻ¨ā§āĻāĻžāĻ°āĻžāĻĒā§āĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻŋāĻ āĻāĻŦāĻ āĻĒā§āĻ˛āĻŋāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻ¨āĨ¤ ENA āĻĄā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻ ā§āĻ¯āĻžāĻĄāĻžāĻĒā§āĻāĻŋāĻ-āĻāĻ°āĻāĻā§āĻ¸ āĻŽā§āĻĄ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻāĻŦāĻ 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 āĻ āĻ¨ā§āĻ°ā§āĻ§/āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒā§āĻ¯āĻŧā§āĻā§āĨ¤ dhclient āĻ¯ā§ āĻāĻžāĻ°āĻŖā§ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°ā§ āĻ¤āĻž āĻšāĻ˛ āĻāĻāĻāĻŋ āĻāĻžāĻāĻāĻž āĻ¸āĻā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻ°āĻžāĻĢāĻŋāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĨ¤
- āĻ¸ā§āĻĒāĻŋāĻ¨ āĻ˛āĻ āĻ¯ā§āĻĻā§āĻ§. sysctl ânet.core.default_qdisc=noqueueâ āĻāĻŦāĻ âtc qdisc āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ dev eth0 root mqâ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻāĻŋāĻā§ ânoqueueâ āĻŽā§āĻĄā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°āĻžāĻ° āĻĢāĻ˛ā§ āĻāĻžāĻ°ā§āĻ¯āĻā§āĻˇāĻŽāĻ¤āĻž 2% āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒā§āĻ¯āĻŧā§āĻā§, āĻāĻŦāĻ āĻĨā§āĻ°ā§āĻĒā§āĻ 1.12M req/s āĻĨā§āĻā§ āĻŦā§āĻĄāĻŧā§ 1.15M āĻšāĻ¯āĻŧā§āĻā§ āĻ āĻ¨ā§āĻ°ā§āĻ§
- āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻā§āĻāĻāĻžāĻ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨, āĻ¯ā§āĻŽāĻ¨ "ethtool -K eth0 gro off" āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ GRO (āĻā§āĻ¨āĻžāĻ°āĻŋāĻ āĻ°āĻŋāĻ¸āĻŋāĻ āĻ āĻĢāĻ˛ā§āĻĄ) āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻāĻŦāĻ sysctl "net.ipv4.tcp_congestion_control=reno" āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŋāĻāĻŦāĻŋāĻ āĻāĻ¨āĻā§āĻļāĻ¨ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽāĻā§ āĻ°ā§āĻ¨ā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĨ¤ āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨āĻļā§āĻ˛āĻ¤āĻž āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻŋāĻ˛ 4%āĨ¤ āĻĨā§āĻ°ā§āĻĒā§āĻ 1.15M req/s āĻĨā§āĻā§ 1.2M req/s āĻšāĻ¯āĻŧā§āĻā§ā§ˇ
āĻ¯ā§ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻžāĻ āĻāĻ°ā§āĻā§ āĻ¤āĻž āĻāĻžāĻĄāĻŧāĻžāĻ, āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻŽāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ¯āĻŧā§āĻ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°ā§ āĻ¯āĻž āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻŦā§āĻĻā§āĻ§āĻŋāĻ° āĻĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻāĻ°ā§āĻ¨āĻŋā§ˇ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤āĻā§āĻ˛āĻŋ āĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻŦāĻ˛ā§ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§:
- āĻ˛āĻŋāĻŦā§āĻ°ā§āĻā§āĻāĻ°āĻā§ āĻāĻ˛āĻžāĻĻāĻžāĻāĻžāĻŦā§ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻĒāĻžāĻ¤ā§āĻ°ā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻĨā§āĻā§ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻŋāĻ˛ āĻ¨āĻžāĨ¤ Writv-āĻā§ send āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž, epoll_wait-āĻ āĻŽā§āĻ¯āĻžāĻā§āĻ¸ āĻāĻā§āĻ¨ā§āĻ āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§, āĻāĻŦāĻ GCC āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻāĻŦāĻ āĻĒāĻ¤āĻžāĻāĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž-āĻ¨āĻŋāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻā§āĻ¨ā§ āĻĒā§āĻ°āĻāĻžāĻŦ āĻāĻŋāĻ˛ āĻ¨āĻž (āĻĒā§āĻ°āĻāĻžāĻŦāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° â-O3â āĻāĻŦāĻ â-march-nativeâ āĻĒāĻ¤āĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ˛āĻā§āĻˇāĻŖā§āĻ¯āĻŧ āĻāĻŋāĻ˛)āĨ¤
- āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛āĻā§ 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 āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°ā§āĻ¨āĻŋāĨ¤
- 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 (āĻ¨ā§āĻ¤āĻŋāĻŦāĻžāĻāĻ āĻĒā§āĻ°āĻāĻžāĻŦ)
- āĻ¨ā§āĻ.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
- āĻ¨ā§āĻ.ipv4.tcp_low_latency = 1
- SO_PRIORITY
- TCP_NODELAY
āĻāĻ¤ā§āĻ¸: opennet.ru