{"id":332270,"date":"2022-04-22T09:00:20","date_gmt":"2022-04-22T09:00:20","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=332270"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=332270","title":{"rendered":"<span>\u042d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 HTTP: 1,2M API RPS \u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 EC2 \u0441 4 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c\u0438 (vCPU)<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong><em>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.<\/em><\/strong><em>: \u0430\u0432\u0442\u043e\u0440 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u2014 Marc Richards, Solutions Architect \u0438 DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u2014 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0443\u044e \u043d\u0430\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0438 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u2014 \u043a\u043b\u0430\u0434\u0435\u0437\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u0440\u0443\u0433\u043e\u0437\u043e\u0440\u0430 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 \u0432 Linux \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e, \u0434\u0430\u0436\u0435 \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0430\u0432\u0442\u043e\u0440\u0430. \u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u044c\u0442\u0435\u0441\u044c \u043a \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0434\u043b\u0438\u043d\u043d\u043e\u043c\u0443 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044e \u0441 \u043e\u0431\u0438\u043b\u0438\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a.<\/em><\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0448\u0430\u0433\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043e 1,2 \u043c\u043b\u043d<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/wiki\/Project-Information-Framework-Tests-Overview#json-serialization\"> <u>JSON API-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/u><\/a> \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430<a href=\"https:\/\/aws.amazon.com\/ec2\/instance-types\/c5\/\"> <u>AWS EC2<\/u><\/a> \u0441 4 vCPU. \u0417\u0430 \u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u044d\u0442\u043e\u0433\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u0432\u0435\u0441\u0442\u0430 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u0434\u043e\u0432\u0435\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u043e\u0439\u0434\u0435\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0442\u043e\u0440\u0435\u043d\u043d\u043e\u0439 \u0434\u043e\u0440\u043e\u0433\u043e\u0439, \u043d\u0435\u0443\u043a\u043b\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u044f\u0441\u044c \u043e\u0442 224 \u0442\u044b\u0441. RPS \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 (\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0434\u043e \u0443\u043c\u043e\u043f\u043e\u043c\u0440\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 1,2 \u043c\u043b\u043d RPS \u043d\u0430 \u0444\u0438\u043d\u0438\u0448\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/543\/532\/e89\/543532e8920825f01a23e310e758f8b7.png\" width=\"1514\" height=\"702\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/543\/532\/e89\/543532e8920825f01a23e310e758f8b7.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e \u043f\u0440\u0430\u0432\u0434\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442\u044c \u043f\u043b\u0430\u043d\u043a\u0443 \u0432 1 \u043c\u043b\u043d RPS \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e. \u0412\u0441\u0435 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u043e\u0439. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u043f\u043e\u0434\u0441\u0442\u0435\u0433\u043d\u0443\u043b\u0430 \u043c\u043e\u044e \u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u043e\u0431\u0449\u0435\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043d\u0434\u0435\u043c\u0438\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u043b\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u044b\u0448\u043a\u0443 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435, \u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e-\u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0434\u0435\u0432\u044f\u0442\u044c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445 \u0438 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u0443\u044e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041f\u0440\u0438\u0440\u043e\u0441\u0442<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>RPS<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0442\u043f\u0440\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/initial.svg\"><u>initial.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u00a0 &#8212;<\/p>\n<\/td>\n<td>\n<p align=\"left\">224k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">1. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/app-optimizations.svg\"><u>app.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">55%<\/p>\n<\/td>\n<td>\n<p align=\"left\">347k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">2. \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u043a\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/speculative-execution-mitigations.svg\"><u>spec-exec.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">28%<\/p>\n<\/td>\n<td>\n<p align=\"left\">446k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">3. \u0410\u0443\u0434\u0438\u0442 \/ \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/syscall.svg\"><u>syscall.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">11%<\/p>\n<\/td>\n<td>\n<p align=\"left\">495k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">4. \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 iptables \/ netfilter<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/iptables.svg\"><u>iptables.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">22%<\/p>\n<\/td>\n<td>\n<p align=\"left\">603k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">5. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/perfect-locality.svg\"><u>perfect-locality.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">38%<\/p>\n<\/td>\n<td>\n<p align=\"left\">834k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">6. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/interrupt-optimization.svg\"><u>interrupt.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">28%<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.06M<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">7. \u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u0441\u043e\u0441\u0435\u0434\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/nosy-neighbor.svg\"><u>nosy-neighbor.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u00a0 6%<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.12M<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">8. \u0411\u043e\u0440\u044c\u0431\u0430 \u0441\u043e \u0441\u043f\u0438\u043d\u043b\u043e\u043a\u0430\u043c\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/spin-lock.svg\"><u>spin-lock.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u00a0 2%<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.15M<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">9. \u0412\u0441\u0451 \u0431\u043b\u0438\u0437\u0438\u0442\u0441\u044f \u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/final.svg\"><u>final.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u00a0 4%<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.20M<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0432 \u0432\u044b\u0431\u043e\u0440\u0435 \u0438 \u043e\u0446\u0435\u043d\u043a\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043f\u043e\u0445\u043e\u0436\u0435\u0433\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 5 \u0440\u0430\u0437 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0431\u0435\u0437\u0434\u0443\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439. \u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u043f\u0440\u0438\u043d\u0435\u0441\u0443\u0442 \u043f\u043e\u043b\u044c\u0437\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u043a\u0442\u043e \u0443\u0436\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b \u043f\u043b\u0430\u043d\u043a\u0443 \u0432\u00a0 50 \u0442\u044b\u0441. RPS. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0438 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0443\u0437\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430.<\/p>\n<p>\u0411\u044b\u043b\u0430 \u0438\u0434\u0435\u044f \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u0439, \u043d\u043e \u043e\u043d\u0430 \u043d\u0435 \u043f\u0440\u0438\u0436\u0438\u043b\u0430\u0441\u044c \u0438\u0437-\u0437\u0430 \u0441\u0442\u0440\u0430\u0445\u0430 \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 (\u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435). \u0422\u0435\u043c, \u043a\u0442\u043e \u0436\u0435\u043b\u0430\u0435\u0442 \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f<a href=\"https:\/\/gist.github.com\/talawahtech\/ce2fe1f6a3e3851d15e912e0a4e93734\"> <u>\u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c CloudFormation<\/u><\/a> \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430<\/h3>\n<p>\u042d\u0442\u043e \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043d\u0430 AWS. \u0414\u043b\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0443 \u00ab\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u00bb. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/wiki\/Project-Information-Framework-Tests-Overview#json-serialization\"> <u>\u0442\u0435\u0441\u0442 JSON-\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/u><\/a><a href=\"https:\/\/www.techempower.com\/benchmarks\/#section=intro\"><u> Techempower<\/u><\/a>. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/tree\/R20\/frameworks\/C\/libreactor\"> <u>\u043f\u0440\u043e\u0441\u0442\u043e\u0439 API-\u0441\u0435\u0440\u0432\u0435\u0440<\/u><\/a> \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435<a href=\"https:\/\/github.com\/fredrikwidlund\/libreactor\"> <u>libreactor<\/u><\/a> \u2014 event-driven-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u0421\u0438. API-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b Linux, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a<a href=\"https:\/\/man7.org\/linux\/man-pages\/man7\/epoll.7.html\"> <u>epoll<\/u><\/a>,<a href=\"https:\/\/man7.org\/linux\/man-pages\/man2\/send.2.html\"> <u>send<\/u><\/a> \u0438<a href=\"https:\/\/man7.org\/linux\/man-pages\/man2\/recv.2.html\"> <u>recv<\/u><\/a>, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0417\u0430 HTTP-\u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442<a href=\"https:\/\/github.com\/h2o\/picohttpparser\"> <u>picohttpparser<\/u><\/a>, \u0430 \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 JSON \u2014<a href=\"https:\/\/github.com\/fredrikwidlund\/libclo\"> <u>libclo<\/u><\/a>. \u041e\u043d \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0431\u044b\u0441\u0442\u0440, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e (\u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0434\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f<a href=\"https:\/\/kernel.dk\/io_uring.pdf\"> <u>io_uring<\/u><\/a>), \u0438 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<h4>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435<\/h4>\n<ul>\n<li>\n<p>\u0421\u0435\u0440\u0432\u0435\u0440: \u0438\u043d\u0441\u0442\u0430\u043d\u0441 4 vCPU c5n.xlarge.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043b\u0438\u0435\u043d\u0442: \u0438\u043d\u0441\u0442\u0430\u043d\u0441 16 vCPU c5n.4xlarge (\u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0443\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c).<\/p>\n<\/li>\n<li>\n<p>\u0421\u0435\u0442\u044c: \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u0439 \u0437\u043e\u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 (use2-az2) \u0438<a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/placement-groups.html#placement-groups-cluster\"> <u>\u0433\u0440\u0443\u043f\u043f\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/u><\/a>.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435<\/h4>\n<ul>\n<li>\n<p><strong>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430:<\/strong> Amazon Linux 2 (\u044f\u0434\u0440\u043e 4.14).<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0435\u0440\u0432\u0435\u0440:<\/strong> \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 libreactor \u043e\u0442<a href=\"https:\/\/www.techempower.com\/benchmarks\/#section=intro\"> <u>Techempower<\/u><\/a> (\u0441<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/tree\/R18\/frameworks\/C\/libreactor\"> <u>18<\/u><\/a> \u0440\u0430\u0443\u043d\u0434\u0430 \u043f\u043e<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/tree\/R20\/frameworks\/C\/libreactor\"><u> 20<\/u><\/a>-\u0439) \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435: <code>docker run -d --rm --network host --init libreactor<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u043b\u0438\u0435\u043d\u0442:<\/strong> \u0431\u044b\u043b\u043e \u0432\u043d\u0435\u0441\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432<a href=\"https:\/\/github.com\/wg\/wrk\"> <u>wrk<\/u><\/a> (\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f HTTP-\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438\u043d\u0433\u0430) \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0435\u0433\u043e \u0432<a href=\"https:\/\/github.com\/talawahtech\/wrk\/commits\/twrk\"> <u>twrk<\/u><\/a>. \u041e\u043d \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 low-latency-\u0442\u0435\u0441\u0442\u0430\u0445. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f wrk \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u043d\u043e twrk \u043b\u0443\u0447\u0448\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442<a href=\"https:\/\/engineering.linkedin.com\/performance\/who-moved-my-99th-percentile-latency\"> <u>\u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 p99<\/u><\/a> \u0438 \u0443\u043c\u0435\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 p99.99.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430<\/h4>\n<p>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u0442\u0440\u0438\u0436\u0434\u044b; <strong>\u0441\u0430\u043c\u044b\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0438 \u043d\u0438\u0437\u043a\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043b\u0438\u0441\u044c<\/strong>. Twrk \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438, \u0447\u0442\u043e \u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435, \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0431\u0435\u0437 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>256 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>16 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0451\u043d \u043a vCPU (\u043f\u043e 1 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439);<\/p>\n<\/li>\n<li>\n<p>2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0440\u0430\u0437\u043e\u0433\u0440\u0435\u0432 \u043f\u0435\u0440\u0435\u0434 \u0441\u0431\u043e\u0440\u043e\u043c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, 10 \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430 \u0441\u0430\u043c \u0442\u0435\u0441\u0442.<\/p>\n<\/li>\n<\/ul>\n<pre><code>twrk -t 16 -c 256 -D 2 -d 10 --latency --pin-cpus \"http:\/\/server.tfb:8080\/json\" -H 'Host: server.tfb' -H 'Accept: application\/json,text\/html;q=0.9,application\/xhtml+xml;q=0.9,application\/xml;q=0.8,\/;q=0.7' -H 'Connection: keep-alive'<\/code><\/pre>\n<p>\u041f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0441\u043b\u0443\u0447\u0430\u0435\u043c, \u0445\u043e\u0447\u0443 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u0432\u043e\u0441\u0445\u0438\u0449\u0435\u043d\u0438\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u0438 \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043c\u043d\u0435 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u043e\u0448\u0435\u0447\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u0447\u0435\u043a (\u043f\u043e\u0447\u0442\u0438) \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u00ab\u0436\u0435\u043b\u0435\u0437\u043d\u043e\u0433\u043e\u00bb \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u0438 \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0437\u0430 \u044d\u0442\u043e <strong>\u043f\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u043e<\/strong>. \u041a\u0430\u043a \u0431\u044b \u0432\u044b \u043d\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u043b\u0438\u0441\u044c \u043a AWS, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0435\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0442. \u0421\u043a\u0430\u0436\u0435\u043c, \u043b\u0435\u0442 15 \u043d\u0430\u0437\u0430\u0434 \u0431\u044b\u043b\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u0432\u0435\u0441\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u041e\u0442\u043f\u0440\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430<\/h3>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json \u00a0\u00a016 threads and 256 connections \u00a0\u00a0Thread Stats \u00a0 Avg \u00a0 \u00a0 Stdev \u00a0 \u00a0 \u00a0 Max \u00a0 \u00a0 \u00a0 Min \u00a0 +\/- Stdev \u00a0\u00a0\u00a0\u00a0Latency \u00a0 \u00a0 1.14ms \u00a0 58.95us\u00a0 \u00a0 1.45ms\u00a0 \u00a0 0.96ms \u00a0 61.61% \u00a0\u00a0\u00a0\u00a0Req\/Sec\u00a0 \u00a0 14.09k \u00a0 123.75 \u00a0 \u00a0 14.46k\u00a0 \u00a0 13.81k\u00a0 \u00a0 66.35% \u00a0\u00a0Latency Distribution \u00a0\u00a050.00%\u00a0 \u00a0 1.14ms \u00a0\u00a090.00%\u00a0 \u00a0 1.21ms \u00a0\u00a099.00%\u00a0 \u00a0 1.26ms \u00a0\u00a099.99%\u00a0 \u00a0 1.32ms \u00a0\u00a02243551 requests in 10.00s, 331.64MB read Requests\/sec: 224353.73 Transfer\/sec: \u00a0 \u00a0 33.16MB<\/code><\/pre>\n<p>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f libreactor \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c 224 \u0442\u044b\u0441. RPS. \u0412\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u0430\u044f \u0446\u0438\u0444\u0440\u0430: \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0442\u0430\u043a\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f. \u0412\u044b\u0432\u043e\u0434 twrk \u0432\u044b\u0448\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0434\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.<\/p>\n<p>\u041d\u0430 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0438\u0436\u0435 \u2014 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 (RPS) \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 libreactor (\u0440\u0430\u0443\u043d\u0434 18) \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432\/\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 (\u0440\u0430\u0443\u043d\u0434 20), \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 c5n.xlarge \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9c1\/83e\/418\/9c183e418a8f93c8d6546d1626363c65.png\" alt=\"* nginx.conf \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0437\u0430'hardcode'\u0435\u043d\u044b\u0435 JSON-\u043e\u0442\u0432\u0435\u0442\u044b. \u042d\u0442\u043e \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e Techempower.\" title=\"* nginx.conf \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0437\u0430'hardcode'\u0435\u043d\u044b\u0435 JSON-\u043e\u0442\u0432\u0435\u0442\u044b. \u042d\u0442\u043e \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e Techempower.\" width=\"800\" height=\"333\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9c1\/83e\/418\/9c183e418a8f93c8d6546d1626363c65.png\"\/><figcaption>* nginx.conf \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0437\u0430&#8217;hardcode&#8217;\u0435\u043d\u044b\u0435 JSON-\u043e\u0442\u0432\u0435\u0442\u044b. \u042d\u0442\u043e \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e Techempower.<\/figcaption><\/figure>\n<p>Actix, NGINX \u0438 Netty \u2014 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435, \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0438 libreactor \u043d\u0438\u0447\u0443\u0442\u044c \u0438\u043c \u043d\u0435 \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442. \u0413\u043b\u044f\u0434\u044f \u043d\u0430 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u044d\u0442\u043e \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435. \u0417\u043d\u0430\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 libreactor \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0434\u0440\u0443\u0433\u0438\u043c HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e\u043c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442.<\/p>\n<h4>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438<\/h4>\n<p><a href=\"http:\/\/www.brendangregg.com\/flamegraphs.html\"><u>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438<\/u><\/a> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 CPU \u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041e\u043d\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u043e\u0449\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u0443\u0437\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430. Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u041e\u043d\u0438 \u0441\u043b\u0443\u0436\u0430\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u043c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430 \u0438 \u043d\u0430\u043c\u0435\u043a\u0430\u044e\u0442, \u043d\u0430 \u0447\u0442\u043e \u0435\u0449\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 Flame-\u0433\u0440\u0430\u0444\u0438\u043a \u0434\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u043e\u0442\u0442\u0435\u043d\u043a\u0430\u0445 \u0441\u0438\u043d\u0435\u0433\u043e, \u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044f\u0434\u0440\u0430 \u0438\u0433\u0440\u0430\u043b\u0438 \u0432\u0441\u0435\u043c\u0438 \u043f\u0435\u0440\u0435\u043b\u0438\u0432\u0430\u043c\u0438 \u00ab\u043f\u043b\u0430\u043c\u0435\u043d\u0438\u00bb. \u0418\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u044f\u0434\u0440\u043e (\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443\/\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043f\u043e \u0441\u0435\u0442\u0438). \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e; \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0434\u0440\u043e\u043c.<\/p>\n<p>\u041a\u043e\u0434 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u043e\u0442\u0432\u0435\u0442\u0430. \u0412\u044b\u0441\u043e\u043a\u0438\u0435 \u0438 \u0442\u043e\u043d\u043a\u0438\u0435 \u00ab\u0438\u0433\u043b\u044b\u00bb, \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0443, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438. \u042d\u0442\u0438 \u00ab\u0438\u0433\u043b\u044b\u00bb \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f3c\/22c\/1c5\/f3c22c1c5d514a52f8cc83563e17ffbf.png\" width=\"800\" height=\"347\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f3c\/22c\/1c5\/f3c22c1c5d514a52f8cc83563e17ffbf.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 SVG-\u0444\u0430\u0439\u043b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e<a href=\"https:\/\/github.com\/brendangregg\/FlameGraph\"> <u>Flamegraph<\/u><\/a>. SVG-\u0444\u0430\u0439\u043b\u044b <strong>\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b<\/strong>. \u041c\u043e\u0436\u043d\u043e \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0443, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a (Ctrl + F \u0438\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0443 \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443) \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0438\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043b\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0438\u0441\u043a <code>ret_from_intr<\/code> \u043f\u043e\u043a\u0430\u0436\u0435\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 CPU \u0442\u0440\u0430\u0442\u0438\u0442 \u043d\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043a \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<h4>\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u0435<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u043a\u0432\u0435\u0441\u0442 \u0437\u0430\u0442\u0435\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0434\u0438 \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f. \u041d\u0435 \u043f\u044b\u0442\u0430\u0439\u0442\u0435\u0441\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u0434\u043e\u043c\u0430! \u0425\u043e\u0442\u044f \u0434\u043e\u043c\u0430 \u043c\u043e\u0436\u043d\u043e, \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2013 \u043d\u0435 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 (\u0435\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b \u043d\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0434\u043e\u0441\u043a\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442)! \u041b\u044e\u0431\u043e\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0421\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043c\u043d\u043e\u0439, \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438. \u0421\u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0441 \u043d\u0443\u043b\u044f \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437 \u044f \u043f\u0438\u0441\u0430\u043b \u043d\u0430 \u043d\u0435\u043c \u043b\u0435\u0442 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u043d\u0430\u0437\u0430\u0434. \u0417\u043d\u0430\u044e, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 libreactor\u2019\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 production, \u043d\u043e \u0441\u0430\u043c \u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0438\u0441\u043a\u0443\u044e.<\/p>\n<h3>1. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0417\u0430 \u0431\u0430\u0437\u0443 \u0431\u044b\u043b \u0432\u0437\u044f\u0442 \u043a\u043e\u0434 libreactor \u0438\u0437 \u0440\u0430\u0443\u043d\u0434\u0430<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/tree\/R18\/frameworks\/C\/libreactor\"><u> 18<\/u><\/a>* \u0441\u0435\u0440\u0438\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432<a href=\"https:\/\/www.techempower.com\/benchmarks\/#section=intro\"> <u>Techempower<\/u><\/a>.<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/pulls?q=is%3Apr+author%3Atalawahtech+is%3Aclosed\"> <u>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435<\/u><\/a> \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Techempower \u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u043b\u0438\u0441\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 issues \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 libreactor \u0441 \u0446\u0435\u043b\u044c\u044e \u0432\u043d\u0435\u0441\u0442\u0438<a href=\"https:\/\/github.com\/fredrikwidlund\/libreactor\/issues?q=is%3Aissue+is%3Aclosed+author%3Atalawahtech\"> <u>\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430<\/u><\/a>. \u042d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u0437\u0430\u0442\u0435\u043c \u0443\u0447\u0442\u0435\u043d\u044b \u0432 \u0432\u0435\u0442\u043a\u0435 libreactor 2.0.<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/tree\/R20\/frameworks\/C\/libreactor\"> <u>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u0437 \u0440\u0430\u0443\u043d\u0434\u0430 20<\/u><\/a> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\/ \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p><em>* \u041f\u0435\u0440\u0435\u0434 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438\u043d\u0433\u043e\u043c \u043a\u043e\u0434 \u0438\u0437 18 \u0440\u0430\u0443\u043d\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Ubuntu 20.04, gcc 10, libdynamic 1.3.0 \u0438 libreactor 1.0.1.<\/em><\/p>\n<h4>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/h4>\n<p><strong>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 vCPU<\/strong><\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u0443\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430. <code>htop<\/code> \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e libreactor \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0432\u0430 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 vCPU.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cf8\/795\/cce\/cf8795cce70098d0ba674a94127fbc22.png\" width=\"800\" height=\"333\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cf8\/795\/cce\/cf8795cce70098d0ba674a94127fbc22.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0432 libreactor \u043f\u043e \u0441\u0443\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043b\u0438\u0448\u044c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0441\u0432\u043e\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u041f\u043e\u0441\u043b\u0435<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/pull\/5678\/commits\/180570c91c025d6f92882494373cc0c854ce9396\"> <u>\u043f\u0440\u0430\u0432\u043e\u043a<\/u><\/a> \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043d\u0430 25%! \u00ab\u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430?\u00bb \u2014 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e:<\/p>\n<ol>\n<li>\n<p>\u00ab\u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u044e\u0449\u0438\u0435\u00bb \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044f\u0434\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438 \u0447\u0430\u0441\u0442\u044c IRQ*<em>;<\/em><\/p>\n<\/li>\n<li>\n<p>\u044d\u0442\u043e<a href=\"https:\/\/en.wikipedia.org\/wiki\/Hyper-threading\"> <u>\u0433\u0438\u043f\u0435\u0440\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0435 vCPU<\/u><\/a>, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 2 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044f\u0434\u0440\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0430 4-\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 4 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044f\u0434\u0435\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u043d\u043e \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0441\u043e\u043f\u0435\u0440\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0437\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<\/ol>\n<p><em>* \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 IRQ \u043d\u0430 \u00ab\u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u044e\u0449\u0438\u0445\u00bb vCPU \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u043c<\/em><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/initial-all.svg\"><em> <u>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435<\/u><\/em><\/a><em> \u043f\u043e \u0438\u0442\u043e\u0433\u0430\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430; \u043e\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 <\/em><strong><em>\u0432\u0441\u0435<\/em><\/strong><em> \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e libreactor.<\/em><\/p>\n<p><strong>GCC<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/pull\/5678\/commits\/17d54db5cf2b3c75a6a28dfc41273e5bfce15b97\"><u>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f<\/u><\/a>: <em>\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/em> \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441 GCC-\u0444\u043b\u0430\u0433\u043e\u043c <code>-O3<\/code>, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0441\u0430\u043c\u043e\u0433\u043e <em>\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430<\/em> \u0444\u043b\u0430\u0433 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0442\u043a\u0438 libreactor 2.0 \u0432 Makefile \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0444\u043b\u0430\u0433 GCC <br \/><code>-march-native<\/code>;\u00a0 \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/pull\/6219\/commits\/95c0539e19846af9b058056fbb7ff743ea741e65\"> <u>\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/u><\/a> \u0442\u0430\u043a\u0436\u0435 \u0431\u043b\u0430\u0433\u043e\u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0441<a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/Optimize-Options.html#index-flto\"> <u>Link Time Optimizations<\/u><\/a>.<\/p>\n<h4>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430<\/h4>\n<p><strong>send\/recv<\/strong><\/p>\n<p>libreactor 1.0 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<a href=\"https:\/\/man7.org\/linux\/man-pages\/man2\/read.2.html\"> <u>read<\/u><\/a> \u0438<a href=\"https:\/\/www.man7.org\/linux\/man-pages\/man2\/write.2.html\"> <u>write<\/u><\/a> Linux \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u043a\u0435\u0442\u043e\u0432. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 read\/write \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u043e\u043a\u0435\u0442\u0430\u043c\u0438 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c<a href=\"https:\/\/man7.org\/linux\/man-pages\/man2\/recv.2.html\"> <u>recv<\/u><\/a> \u0438<a href=\"https:\/\/man7.org\/linux\/man-pages\/man2\/send.2.html\"> <u>send<\/u><\/a>, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 recv\/send \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0443\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0412 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 50 \u0442\u044b\u0441. RPS \u043e\u043d\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0449\u0443\u0442\u0438\u043c\u043e\u0439. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0443\u0442\u044c \u0438\u0437<a href=\"https:\/\/github.com\/fredrikwidlund\/libreactor\/issues\/5\"> <u>issue \u043d\u0430 GitHub<\/u><\/a>. \u0422\u0430\u043c \u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u00ab\u0434\u043e\u00bb \u0438 \u00ab\u043f\u043e\u0441\u043b\u0435\u00bb. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0430 \u0432 \u0432\u0435\u0442\u043a\u0435 libreactor 2.0.<\/p>\n<p><strong>\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 pthread\u2019\u0430\u043c\u0438<\/strong><\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0445\u043e\u0442\u044f<a href=\"https:\/\/man7.org\/linux\/man-pages\/man7\/pthreads.7.html\"> <u>pthread\u2019\u044b<\/u><\/a> \u0432 Linux \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u0430\u043b\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0438\u0445 \u0432\u043a\u043b\u0430\u0434 \u0441\u0442\u0430\u043d\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u043c \u043f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e libreactor \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 HTTP-\u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 DNS-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041d\u043e \u043e\u043d \u0432\u0440\u044f\u0434 \u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u043e\u0439 \u043a \u0441\u043e\u043a\u0435\u0442\u0443. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u0430 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044c \u0443\u0441\u043a\u043e\u043b\u044c\u0437\u0430\u0435\u0442 \u043e\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0423\u0432\u044b, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0441 \u044d\u0442\u0438\u043c \u0442\u0440\u0430\u0442\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043d\u0435 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c. \u0414\u0430\u0436\u0435 \u0432 \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 overhead \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u043e\u043b\u043e 3%, \u043d\u043e \u0434\u0430\u0436\u0435 3% \u2014 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0438\u0445 \u0432\u043f\u0443\u0441\u0442\u0443\u044e.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e\u0431\u0440\u0430\u043d <strong>\u0431\u0435\u0437<\/strong> Link Time Optimization (<code>-flto<\/code>), overhead \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445 \u043a\u0430\u043a <code>__pthread_enable_asynccancel<\/code> \u0438 <code>__pthread_disable_asynccancel<\/code>. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043d \u043d\u0435 \u0432\u0438\u0434\u0435\u043d, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0441\u0435 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0435 \u0441\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c <code>-flto<\/code>. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c<a href=\"https:\/\/github.com\/fredrikwidlund\/libreactor\/issues\/7\"> <u>issue \u043d\u0430 GitHub<\/u><\/a>; \u0442\u0430\u043c \u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f Flame-\u0433\u0440\u0430\u0444\u0438\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0438\u0434\u043d\u044b <code>__pthread_enable_asynccancel<\/code> \u0438 <code>pthread_disable asynccancel<\/code>. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0430 \u0432 \u0432\u0435\u0442\u043a\u0435 libreactor 2.0.<\/p>\n<h4>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435<\/h4>\n<p>\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0432\u0441\u0435\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438 \u0438\u0445 \u0432\u043a\u043b\u0430\u0434\u0430 \u0432 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0446\u0438\u0444\u0440\u044b \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438 \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u044b \u0434\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u0438\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0432\u043a\u043b\u0430\u0434\u0435.<\/p>\n<ul>\n<li>\n<p>\u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 vCPU \u2014 25-27%.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0441 \u0444\u043b\u0430\u0433\u043e\u043c -O3 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u2014 5-10%.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>march=native<\/code> \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 5-10%.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 send\/recv \u0432\u043c\u0435\u0441\u0442\u043e <code>write<\/code>\/<code>read<\/code> \u2014 5-10%.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 overhead&#8217;\u0430 pthread\u2019\u043e\u0432 \u2014 2-3%.<\/p>\n<\/li>\n<\/ul>\n<p>\u0426\u0438\u0444\u0440\u044b \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<ol>\n<li>\n<p>\u041d\u0435 \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043d\u043e \u0431\u044b\u043b\u0438 \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0440\u0430\u0434\u0438 \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0443\u043c\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u044b\u043c \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u043c, \u043d\u043e \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u041e\u0434\u043d\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 \u043d\u0435\u043a\u043e\u0435 \u00ab\u0443\u0437\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u00bb, \u0438 \u044d\u0442\u043e \u0431\u043b\u0430\u0433\u043e\u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439, \u043f\u043e\u0432\u044b\u0448\u0430\u044f \u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c.\u00a0<\/p>\n<\/li>\n<\/ol>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u0434\u0432\u0443\u0445 vCPU \u043a \u0447\u0435\u0442\u044b\u0440\u0435\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043d\u0430 25%, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u043e\u0439, \u0438 \u043d\u0430 40+%, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430 \u0432\u0441\u0435\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438 (\u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442\u0441\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u00ab\u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u044e\u0449\u0438\u0445\u00bb vCPU).<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e libreactor \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0443 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 1.0 \u043a \u0432\u0435\u0440\u0441\u0438\u0438 2.0. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p>\u042d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u0430\u044e\u0442 \u043d\u0430\u0448\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e libreactor \u043f\u043e\u0447\u0442\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0439 \u043a\u043e\u0434\u0443 \u0432<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/commits\/R20\/frameworks\/C\/libreactor\"> <u>20 \u0440\u0430\u0443\u043d\u0434\u0435<\/u><\/a>. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u2014 <code>SO_ATTACH_REUSEPORT_CBPF<\/code> (\u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043f\u043e\u0437\u0436\u0435).<\/p>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h4>\n<p>\u0412\u0441\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u044e\u0442 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 55%. \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 224 \u0442\u044b\u0441. RPS \u0434\u043e 347 \u0442\u044b\u0441. RPS.<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency   735.43us   99.55us    4.26ms  449.00us   62.05%     Req\/Sec    21.80k   727.56     23.42k    20.32k    62.06%   Latency Distribution   50.00%  723.00us   90.00%    0.88ms   99.00%    0.94ms   99.99%    1.08ms   3470892 requests in 10.00s, 483.27MB read Requests\/sec: 347087.15 Transfer\/sec:     48.33MB<\/code><\/pre>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430<\/h4>\n<p>\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/app-optimizations.svg\"> <u>\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u043c<\/u><\/a> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0448\u0438\u0440\u0438\u043d\u044b \u0438 \u0432\u044b\u0441\u043e\u0442\u044b \u0444\u0440\u0435\u0439\u043c\u043e\u0432, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u043a\u043e\u0434 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0441\u0438\u043d\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043c),\u00a0 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0444\u043b\u0430\u0433\u0443 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 gcc -O3. \u0422\u0430\u043a\u0436\u0435 \u043e\u0442\u0447\u0435\u0442\u043b\u0438\u0432\u043e \u0432\u0438\u0434\u0435\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 <code>read<\/code>\/<code>write<\/code> \u043d\u0430 <code>recv<\/code>\/<code>send<\/code>. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 (\u043f\u0438\u043a\u043e\u0432 <code>ret_from intr<\/code> \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435). \u041f\u043e\u0438\u0441\u043a \u043f\u043e <code>ret_from_intr<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0435\u0433\u043e \u0432\u043a\u043b\u0430\u0434 \u0432\u044b\u0440\u043e\u0441 \u0441 15% \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0434\u043e 27% \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cf6\/c4c\/cea\/cf6c4ccea990ffddcdd6ae18bc7b6d6e.png\" width=\"800\" height=\"331\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cf6\/c4c\/cea\/cf6c4ccea990ffddcdd6ae18bc7b6d6e.png\"\/><figcaption><\/figcaption><\/figure>\n<h3>2. \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0441\u043f\u0435\u043a\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438 \u0441\u043f\u043e\u0440\u043d\u043e\u0439: \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0441\u043f\u0435\u043a\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0434\u0440\u0435 Linux. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0431\u0435\u0436\u0430\u0442\u044c \u0437\u0430 \u0444\u0430\u043a\u0435\u043b\u0430\u043c\u0438 \u0438 \u0432\u0438\u043b\u0430\u043c\u0438, \u043f\u0440\u043e\u0448\u0443, \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u0432\u0434\u043e\u0445 \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0441\u043e\u0441\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0434\u043e \u0434\u0435\u0441\u044f\u0442\u0438. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u2014 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435. \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u044d\u0442\u0430 \u0437\u0430\u0449\u0438\u0442\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430 \u043d\u0435\u0435 \u0432\u043b\u0438\u044f\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043e \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<p>\u041d\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043e\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u0448\u0438\u0432\u0430\u044e\u0442 \u0440\u0438\u0441\u043a\u0438 (\u0445\u043e\u0442\u044f \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043e\u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430 \u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d Linux \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, <strong>\u0441\u0442\u043e\u0438\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0438\u043b\u0435<\/strong>. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e API-\u0441\u0435\u0440\u0432\u0435\u0440 \u044d\u043a\u0441\u043a\u043b\u044e\u0437\u0438\u0432\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u0438\u043d\u0441\u0442\u0430\u043d\u0441 EC2. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u043d\u0435\u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442<a href=\"https:\/\/aws.amazon.com\/ec2\/nitro\/nitro-enclaves\/\"> <u>Nitro Enclaves<\/u><\/a> \u0434\u043b\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438. \u0412 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 <em>\u0438\u043d\u0441\u0442\u0430\u043d\u0441<\/em> \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0430 Nitro Enclave \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0449\u0438\u0442\u0443, \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u0449\u0438\u0442\u044b.<\/p>\n<p>AWS, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u00ab\u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b \u043a\u0430\u043a \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438\u00bb. \u0412\u043e\u0442 \u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 Spectre\/Meltdown:<\/p>\n<blockquote>\n<p><em>\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 AWS \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u0430 \u043e\u0442 \u0442\u0430\u043a\u0438\u0445 \u0430\u0442\u0430\u043a.<\/em><\/p>\n<p><em>\u041d\u0438 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043d\u0438 \u043e\u0434\u0438\u043d \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0430 AWS.<\/em><\/p>\n<p><em>\u0414\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u044b\u0445 \u043d\u0435\u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0436\u0435\u0441\u0442\u043a\u0438\u0435 \u043c\u0435\u0440\u044b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u043f\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438.<\/em><\/p>\n<\/blockquote>\n<p>\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f:<\/p>\n<blockquote>\n<p><em>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u0449\u0435\u0439 best practice \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0442\u0447\u0435\u0439.<\/em><\/p>\n<\/blockquote>\n<p>\u041f\u043e\u043b\u0430\u0433\u0430\u044e, \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u0435 \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u043b\u0438 \u0431\u0435\u0437\u0434\u0443\u043c\u043d\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0437\u0430\u0449\u0438\u0442\u044b, \u043d\u0435 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0432 \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.<\/p>\n<p>\u0421\u043f\u0435\u043a\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u0430\u044f \u0430\u0442\u0430\u043a\u0430, \u0430 \u0446\u0435\u043b\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0449\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\/\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u043a\u0430\u043a \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0432 \u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0438\u0433\u0440\u0430\u0435\u0442. \u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0438\u0433\u0440\u0430\u044e\u0442 \u0442\u0435, \u0443 \u043a\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430. \u0411\u044b\u043b\u043e \u0431\u044b \u043a\u0440\u0430\u0439\u043d\u0435 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c \u043c\u043d\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432 \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443. \u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445, \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0441\u0432\u043e\u0438\u043c \u043c\u043d\u0435\u043d\u0438\u0435\u043c \u043d\u0430<a href=\"https:\/\/news.ycombinator.com\/item?id=27226382\"> <u>Hacker News<\/u><\/a> \u0438\u043b\u0438<a href=\"https:\/\/www.reddit.com\/r\/aws\/comments\/nha53i\/extreme_http_performance_tuning_12m_api_reqs_on_a\/\"> <u>Reddit<\/u><\/a>. \u0422\u0430\u043a\u0436\u0435 \u0441\u043e \u043c\u043d\u043e\u0439 \u043c\u043e\u0436\u043d\u043e<a href=\"https:\/\/talawah.io\/contact\/\"> <u>\u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e<\/u><\/a>.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0434\u043b\u044f \u0446\u0435\u043b\u0435\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <code>performance=good<\/code>, <code>mitigations=off<\/code> \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0431\u044b\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b. \u0412\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044f\u0434\u0440\u0430:<\/p>\n<pre><code>nospectre_v1 nospectre_v2 pti=off mds=off tsx_async_abort=off<\/code><\/pre>\n<h4>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b<\/h4>\n<p><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/hw-vuln\/spectre.html#spectre-variant-1\"><u>Spectre v1 + SWAPGS<\/u><\/a><\/p>\n<p>\u0417\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 \u0430\u0442\u0430\u043a Spectre variant 1 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u043e\u0434\u043d\u0430\u043a\u043e \u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 SWAPGS \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u044f\u0434\u0440\u0430 <code>nospectre_v1<\/code>. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 (1\u20132%) \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/hw-vuln\/spectre.html#spectre-variant-2\"><u>Spectre v2<\/u><\/a><\/p>\n<p>\u0417\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 \u0430\u0442\u0430\u043a Spectre v2 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u044f\u0434\u0440\u0430 <code>nospectre_v2<\/code>. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u043e \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u0432\u044b\u0441\u0438\u0432 \u0435\u0435 \u043d\u0430 15\u201320%.<\/p>\n<p><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/x86\/pti.html\"><u>Spectre v3\/Meltdown<\/u><\/a><\/p>\n<p>KPTI \u0431\u044b\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>pti=off<\/code>. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0440\u043e\u0441\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 6%.<\/p>\n<p><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/hw-vuln\/mds.html\"><u>MDS\/Zombieload<\/u><\/a> \u0438<a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/hw-vuln\/tsx_async_abort.html\"> <u>\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 TSX<\/u><\/a><\/p>\n<p>MDS \u0431\u044b\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>mds=off<\/code>, TAA \u2014 <code>tsx_async_abort=off<\/code>. \u0414\u043b\u044f \u043e\u0431\u0435\u0438\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c. \u041f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0440\u043e\u0441\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 10%.<\/p>\n<h4>\u0417\u0430\u0449\u0438\u0442\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/h4>\n<p><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/hw-vuln\/l1tf.html\"><u>L1TF\/Foreshadow<\/u><\/a><\/p>\n<p>\u0418\u043d\u0432\u0435\u0440\u0441\u0438\u044f PTE \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e. <code>l1tf=flush<\/code> \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u043e\u043d \u043d\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u0435\u043d, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f. \u0415\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 (<code>l1tf=off<\/code>) \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/hw-vuln\/multihit.html\"><u>iTLB multihit<\/u><\/a><\/p>\n<p>iTLB multihit \u0430\u043a\u0442\u0443\u0430\u043b\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f KVM. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u0435\u043d, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 AWS \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a KVM \u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 EC2.<\/p>\n<p><a href=\"https:\/\/access.redhat.com\/security\/vulnerabilities\/ssbd\"><u>Speculative Store Bypass<\/u><\/a><\/p>\n<p>\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0432 \u044f\u0434\u0440\u0435 \u043d\u0435\u0442 \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u044d\u0442\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438; \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u0434\u0430 Intel. \u041f\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f\u043c AWS, \u0438\u0445 \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<a href=\"https:\/\/aws.amazon.com\/security\/security-bulletins\/AWS-2018-015\/\"> <u>\u043d\u0435 \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u0430<\/u><\/a> \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0431\u044b\u043b\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430<a href=\"https:\/\/alas.aws.amazon.com\/AL2\/ALAS-2018-1038.html\"> <u>\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f<\/u><\/a>, \u043a\u0430\u0441\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u044d\u0442\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438. <code>spec_store_bypass<\/code> \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0437\u043d\u0430\u0447\u0438\u0442\u0441\u044f \u0432 \u044f\u0434\u0440\u0435 \u043a\u0430\u043a \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u041e\u0421 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u0434.<\/p>\n<p><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/hw-vuln\/special-register-buffer-data-sampling.html\"><u>SRBDS<\/u><\/a><\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 c5, \u043d\u0435 \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u044b \u044d\u0442\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h4>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0437\u0430\u0449\u0438\u0442\u044b \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 28%. \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0441 347 \u0442\u044b\u0441. \u0434\u043e 446 \u0442\u044b\u0441. RPS.<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency   570.37us   49.60us    0.88ms  398.00us   66.72%     Req\/Sec    28.05k   546.57     29.52k    26.97k    62.63%   Latency Distribution   50.00%  562.00us   90.00%  642.00us   99.00%  693.00us   99.99%  773.00us   4466617 requests in 10.00s, 621.92MB read Requests\/sec: 446658.48 Transfer\/sec:     62.19MB<\/code><\/pre>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430<\/h4>\n<p>\u041f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u044b\u043b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0438 \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0434\u043b\u044f <code>__entry_trampoline_start<\/code> \u0438 <code>__indirect_thunk_start<\/code> \u043d\u0430<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/app-optimizations.svg\"> <u>\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c<\/u><\/a><u> <\/u>\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u0445 \u0432\u043a\u043b\u0430\u0434 \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u0447\u0435\u0437, \u043b\u0438\u0431\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u0441\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fab\/93e\/aa3\/fab93eaa35beabc9dcdf63d0623a175a.png\" width=\"800\" height=\"339\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fab\/93e\/aa3\/fab93eaa35beabc9dcdf63d0623a175a.png\"\/><figcaption><\/figcaption><\/figure>\n<h3>3. \u0410\u0443\u0434\u0438\u0442\/\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432<\/h3>\n<p>Overhead (\u0438\u0437\u043b\u0438\u0448\u0435\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432), \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u0430\u0443\u0434\u0438\u0442\u043e\u043c\/\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 Linux\/Docker, \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u0435\u043d \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439; \u043d\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043f\u043e\u0438\u0441\u043a \u043f\u043e audit|seccomp \u0432<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/speculative-execution-mitigations.svg\"> <u>\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435<\/u><\/a>, \u0432\u044b \u043f\u043e\u0439\u043c\u0435\u0442\u0435, \u043e \u0447\u0435\u043c \u0440\u0435\u0447\u044c.<\/p>\n<h4>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432<\/h4>\n<p>\u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0443\u0434\u0438\u0442\u0430 \u044f\u0434\u0440\u0430 Linux \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043f\u0440\u0438\u0447\u0438\u043d \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u043b\u0438 \u0441\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0437\u043b\u043e\u043c\u0430. \u0412 Amazon Linux 2 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0443\u0434\u0438\u0442\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432.<\/p>\n<p>\u0425\u043e\u0442\u044f \u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0443\u0434\u0438\u0442\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u00ab\u0435\u0441\u0442\u00bb \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. \u0425\u043e\u0440\u043e\u0448\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c: <code>auditctl -a never,task<\/code>. \u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439<a href=\"https:\/\/gist.github.com\/talawahtech\/ce2fe1f6a3e3851d15e912e0a4e93734#file-extreme-benchmark-environment-yaml-L259\"><u> \u043a\u043e\u043d\u0444\u0438\u0433<\/u><\/a> \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e. \u041d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0437\u0430\u0442\u0435\u044f \u0442\u0430\u043a \u0441\u0435\u0431\u0435, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0443\u0434\u0438\u0442\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043d\u043e \u044f \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e, \u0447\u0442\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a.<a href=\"https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=1117953\"> <u>Issue \u0432 Bugzilla<\/u><\/a> \u043d\u0430\u043c\u0435\u043a\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e Fedora \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e.<\/p>\n<h4>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432<\/h4>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Docker \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u043b\u0438\u043c\u0438\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e<a href=\"https:\/\/docs.docker.com\/engine\/security\/#kernel-namespaces\"> <u>\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432 \u0438\u043c\u0435\u043d<\/u><\/a>,<a href=\"https:\/\/docs.docker.com\/engine\/security\/#control-groups\"> <u>\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f<\/u><\/a> \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430<a href=\"https:\/\/docs.docker.com\/engine\/reference\/run\/#runtime-privilege-and-linux-capabilities\"> <u>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 Linux<\/u><\/a>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e,<a href=\"https:\/\/docs.docker.com\/engine\/security\/seccomp\/#significant-syscalls-blocked-by-the-default-profile\"> <u>\u0444\u0438\u043b\u044c\u0442\u0440 seccomp<\/u><\/a> \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e.<\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u044d\u0442\u0438\u043c\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 overhead. \u041e\u0434\u043d\u0430 \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u2013 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <code>--privileged<\/code>. \u042d\u0442\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439, \u0447\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>--security-opt<\/code>, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0438\u043b\u044c\u0442\u0440 seccomp. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 Docker \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code>docker run -d --rm --network host --security-opt seccomp=unconfined --init libreactor<\/code><\/pre>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h4>\n<p>\u0412 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 11%. \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u0430\u0441\u044c \u0441 446 \u0442\u044b\u0441. \u0434\u043e 495 \u0442\u044b\u0441. RPS.<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency   514.02us   39.05us    1.65ms  134.00us   67.34%     Req\/Sec    31.09k   433.78     32.27k    30.01k    65.97%   Latency Distribution   50.00%  513.00us   90.00%  565.00us   99.00%  604.00us   99.99%  696.00us   4950091 requests in 10.00s, 689.23MB read Requests\/sec: 495005.93 Transfer\/sec:     68.92MB<\/code><\/pre>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430<\/h4>\n<p>\u042d\u0442\u0438 \u043c\u0435\u0440\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u044e\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 overhead. \u041f\u043e\u0441\u043b\u0435 \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f <code>syscall_trace_enter<\/code> \u0438 <code>syscall_slow_exit_work<\/code> \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442 \u0441 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7c9\/aea\/cbc\/7c9aeacbcbddd5ac662cb86f6d466a25.png\" width=\"800\" height=\"339\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7c9\/aea\/cbc\/7c9aeacbcbddd5ac662cb86f6d466a25.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0449\u0435 \u043e\u0434\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Docker \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f,<a href=\"https:\/\/docs.docker.com\/engine\/security\/apparmor\/\"> <u>\u0447\u0442\u043e \u0432 AppArmor \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e<\/u><\/a>, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u043d, \u043f\u043e\u0445\u043e\u0436\u0435, \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u0432 Amazon Linux 2. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>--security-opt apparmor=unconfined<\/code> \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u0438\u043b\u0438 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435) \u043d\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u043e\u0441\u044c.<\/p>\n<h3>4. \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 iptables\/netfilter<\/h3>\n<p>iptables\/netfilter* \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440\u0430\u043c\u0438 Linux \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0441\u0435\u0442\u0438. \u042d\u0442\u043e \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u0438 \u0433\u0438\u0431\u043a\u0438\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043a\u0443\u0447\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 (NAT). \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0442\u0435\u0441\u0442\u0430, overhead, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 iptables, \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 iptables \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043d\u0430\u0448\u0435\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0446\u0435\u043b\u044c\u044e. \u041d\u0430<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/syscall.svg\"> <u>\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435<\/u><\/a> overhead \u043e\u0442 iptables \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438, \u0442\u0430\u043a \u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>nf_hook_slow<\/code> \u044f\u0434\u0440\u0430; \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430 \u043d\u0435\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 <strong>18%<\/strong> \u0444\u0440\u0435\u0439\u043c\u043e\u0432.<\/p>\n<p><em>* netfilter \u2014 \u0438\u043c\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u044f\u0434\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443. iptables \u2014 user-space-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b netfilter, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0445 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u044b\u0439 \u00ab\u0434\u0443\u044d\u0442\u00bb \u043e\u0431\u044b\u0447\u043d\u043e \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 iptables.<\/em><\/p>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 iptables \u043d\u0435 \u0442\u0430\u043a \u0441\u043f\u043e\u0440\u043d\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f <strong>\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<\/strong>, \u043a\u0430\u043a \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435. \u0421 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441\u043c\u0435\u0441\u0442\u0438\u043b\u0430\u0441\u044c \u0441 iptables \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b (\u0432\u0440\u043e\u0434\u0435 AWS Security Groups). \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 iptables \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f NAT, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u0445 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c iptables \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\/\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442 \u043d\u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u044f\u0442.<\/p>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 iptables \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432<a href=\"https:\/\/gist.github.com\/talawahtech\/ce2fe1f6a3e3851d15e912e0a4e93734#file-extreme-benchmark-environment-yaml-L126\"> <u>\u044f\u0434\u0440\u0435<\/u><\/a> \u0438<a href=\"https:\/\/gist.github.com\/talawahtech\/ce2fe1f6a3e3851d15e912e0a4e93734#file-extreme-benchmark-environment-yaml-L212\"> <u>\u0434\u0435\u043c\u043e\u043d\u0435 Docker<\/u><\/a>. \u042d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0445\u043e\u0441\u0442-\u0441\u0435\u0442\u0438 \u0438 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 iptables \u0432 Docker \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>--network host<\/code> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0441\u0435\u0442\u044c\u044e (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0432 <code>docker build<\/code>).<\/p>\n<p>\u042f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0435\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u044f\u0434\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043d\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u0432 \u0447\u0435\u0440\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432 iptables. \u042d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0443, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u0443\u044e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c. \u0423\u0432\u044b, \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0440\u0438\u0441\u043a \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439. \u0411\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u2014 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430<a href=\"https:\/\/netfilter.org\/projects\/nftables\/index.html\"> <u>nftables<\/u><\/a> (\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 iptables) \u0441 \u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c\u044e. \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 nftables \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0430\u0432\u0438\u043b \u043f\u0443\u0441\u0442\u0430, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 iptables \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0440\u0430\u0432\u0438\u043b.<\/p>\n<p>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c nftables \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 Linux \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. Docker \u2014<a href=\"https:\/\/github.com\/moby\/moby\/issues\/26824\"> <u>\u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440<\/u><\/a> \u044d\u0442\u043e\u0433\u043e. \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432,<a href=\"https:\/\/wiki.debian.org\/nftables\"> <u>Debian 10<\/u><\/a>,<a href=\"https:\/\/fedoraproject.org\/wiki\/Changes\/iptables-nft-default\"> <u>Fedora 32<\/u><\/a> \u0438<a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/8\/html\/configuring_and_managing_networking\/getting-started-with-nftables_configuring-and-managing-networking\"> <u>RHEL 8<\/u><\/a> \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 nftables \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0421\u043b\u043e\u0439 iptables-nft \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a (\u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e) \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 iptables \u0432 user space. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Ubuntu \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 nftables \u0432 20.04 \u0438 20.10, \u043d\u043e, \u043f\u043e\u0445\u043e\u0436\u0435, \u043e\u0431\u0430 \u0440\u0430\u0437\u0430 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438. Amazon Linux 2 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 iptables. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 nftables, \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e \u2013 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u044f\u0434\u0440\u0430 \u0432 \u043f\u043e\u043a\u043e\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 Docker. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0432 Docker \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 nftables \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u0440\u0430\u0432\u0438\u043b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h4>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 iptables \u043f\u043e\u0432\u044b\u0441\u0438\u043b\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 22%. \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u0430 \u0441 495 \u0442\u044b\u0441. \u0434\u043e 603 \u0442\u044b\u0441. RPS.<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency   420.68us   43.25us  791.00us  224.00us   63.70%     Req\/Sec    37.88k   687.33     39.54k    36.35k    62.94%   Latency Distribution   50.00%  419.00us   90.00%  479.00us   99.00%  517.00us   99.99%  575.00us   6031161 requests in 10.00s, 839.76MB read Requests\/sec: 603112.18 Transfer\/sec:     83.98MB<\/code><\/pre>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430<\/h4>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 iptables \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 overhead. <code>nf_hook_slow<\/code> \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a1c\/70f\/875\/a1c70f8754f15ffb0567e2cccdfd9f13.png\" width=\"800\" height=\"323\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a1c\/70f\/875\/a1c70f8754f15ffb0567e2cccdfd9f13.png\"\/><figcaption><\/figcaption><\/figure>\n<h3>5. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h3>\n<p>Linux \u2014 \u043a\u0440\u0443\u0442\u043e\u0435 \u043c\u043d\u043e\u0433\u043e\u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u044f\u0434\u0440\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d\u043e \u0438\u0437\u043e \u0432\u0441\u0435\u0445 \u0441\u0438\u043b \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0430\u0437\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0443 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043d\u043e \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0441 <em>\u0445\u043e\u0440\u043e\u0448\u0435\u0439<\/em> \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 <em>\u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u0443\u044e<\/em>, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0436\u0435\u0441\u0442\u043a\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<p><a href=\"https:\/\/blog.cloudflare.com\/perfect-locality-and-three-epic-systemtap-scripts\/\"><u>\u041e\u0434\u0438\u043d \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u043e\u0432<\/u><\/a>, \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0445 \u0441 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439\/\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 (\u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043d\u0430 \u0448\u0430\u0440\u0434\u044b \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445), \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u00ab\u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u0442\u0441\u044f\u00bb \u043a CPU. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0430\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u043b\u044e\u0431\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u0441\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u0440\u043e\u0439 vCPU\/\u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043a\u0430\u043a \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432\/\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0441\u0447\u0435\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u044d\u0448\u0430 CPU, \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\/\u0440\u0435\u0436\u0438\u043c\u043e\u0432, \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a.<\/p>\n<h4>\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443<\/h4>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u043a \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044e \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 libreactor \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 vCPU \u0432 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a \u044d\u0442\u043e\u043c\u0443 vCPU. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/blob\/fe99c809fc200ab5a74bd7dcbaf27af2de8530e4\/frameworks\/C\/libreactor\/src\/helpers.c#L97\"> <u>fork_workers()<\/u><\/a>. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0435 CPU \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e, \u0430 \u043e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0443\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0435\u043c\u0443 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435, \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0435\u0433\u043e \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0432 \u0434\u0435\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u044b vCPU\/\u043e\u0447\u0435\u0440\u0435\u0434\u044c.<\/p>\n<h4>Receive Side Scaling (RSS)<\/h4>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440 \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u043c\u0438 \u0438 vCPU \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e).<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/Documentation\/networking\/scaling.txt#L20\"> <u>Receive Side Scaling<\/u><\/a> \u2014 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043f\u043e \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u043c\u0443 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u043c \u043f\u0440\u0438\u0435\u043c\u0430. \u0414\u0440\u0430\u0439\u0432\u0435\u0440 AWS ENA \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 RSS, \u0438 \u0442\u043e\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0425\u0435\u0448-\u0444\u0443\u043d\u043a\u0446\u0438\u044f (Toeplitz) \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0445\u0435\u0448-\u043a\u043b\u044e\u0447 (\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435) \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b src\/dst\/ip\/port \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0435\u043a\u043e\u0435 \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435; \u0434\u0430\u043b\u0435\u0435 7 \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0445 \u0431\u0438\u0442\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u0445\u0435\u0448\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0441 RSS indirection table, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044f, \u0432 \u043a\u0430\u043a\u0443\u044e \u043f\u0440\u0438\u0435\u043c\u043d\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u0430\u043a\u0435\u0442. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f <strong>\u0432\u0441\u0435\u0433\u0434\u0430<\/strong> \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u041d\u0430 c5n.xlarge RSS indirection table \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\/\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0447\u0435\u0442\u044b\u0440\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u043f\u0440\u0438\u0435\u043c\u043d\u044b\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u043c (\u0447\u0442\u043e \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0435 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u041e\u0417\u0423, \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0440\u0438\u0435\u043c\u0430, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 (\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435) \u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 IRQ \u2013 \u043f\u043e \u0441\u0443\u0442\u0438, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0434\u043b\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439. \u0427\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 CPU \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435, \u043a\u0430\u0436\u0434\u044b\u0439 IRQ \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 CPU \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>\/proc\/irq\/$IRQ\/smp_affinity_list<\/code>. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441 <a href=\"https:\/\/github.com\/Irqbalance\/irqbalance#what-is-irqbalance\">irqbalance<\/a> \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 <code>smp_affinity_list<\/code> \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c <code>irqbalance<\/code> \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 <code>smp_affinity_list<\/code> \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b queue 0 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 CPU 0, queue 1 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 CPU 1, \u0438 \u0442. \u0434.<\/p>\n<pre><code>systemctl stop irqbalance.service  export IRQS=($(grep eth0 \/proc\/interrupts | awk '{print $1}' | tr -d :)) for i in ${!IRQS[@]}; do echo $i > \/proc\/irq\/${IRQS[i]}\/smp_affinity_list; done;<\/code><\/pre>\n<p>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0438<a href=\"https:\/\/blog.packagecloud.io\/eng\/2016\/06\/22\/monitoring-tuning-linux-networking-stack-receiving-data\/#softirqs\"> <u>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f (softirq)<\/u><\/a> \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u0434\u043b\u044f softirq. \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b, \u0430 \u0432\u0441\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433\u0443 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f softirq-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b softirq \u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u043a\u0435\u0442.<\/p>\n<h4>SO_ATTACH_REUSEPORT_CBPF<\/h4>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f libreactor \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441\u043e\u043a\u0435\u0442\u0430<a href=\"https:\/\/lwn.net\/Articles\/542629\/\"> <u>SO_REUSEPORT<\/u><\/a>, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u043f\u043e\u0440\u0442\u0443. \u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/ipv4\/inet_hashtables.c#L230\"> <u>\u0445\u0435\u0448-\u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/u><\/a>. \u041e\u043d\u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b src\/dst\/ip\/port, \u043d\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f RSS. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443. \u0412\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u0430\u043a\u0435\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u0430 CPU 2 \u0434\u043b\u044f softirq-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c\u0443 \u043d\u0430 CPU 0. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 4.6 \u044f\u0434\u0440\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u0442\u0438\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u043c\u0438. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441\u043e\u043a\u0435\u0442\u0430<a href=\"https:\/\/man7.org\/linux\/man-pages\/man7\/socket.7.html\"> <u>SO_ATTACH_REUSEPORT CBPF<\/u><\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439<a href=\"https:\/\/ebpf.io\/\"> <u>BPF<\/u><\/a><em>&#8212;<\/em>\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438 \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441 \u0441\u043e\u043a\u0435\u0442\u0430\u043c\u0438, \u00ab\u0441\u043b\u0443\u0448\u0430\u044e\u0449\u0438\u043c\u0438\u00bb \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0440\u0442; \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c BPF, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 (ID) CPU, \u043e\u0442\u0432\u0435\u0447\u0430\u0432\u0448\u0435\u0433\u043e \u0437\u0430 softirq-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u0430\u043a\u0435\u0442\u0430, \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0430\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u00ab\u0441\u043b\u0443\u0448\u0430\u044e\u0449\u0438\u0445\u00bb \u0441\u043e\u043a\u0435\u0442\u043e\u0432\/\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435.<\/p>\n<pre><code>{{BPF_LD | BPF_W | BPF_ABS, 0, 0, SKF_AD_OFF + SKF_AD_CPU}, {BPF_RET | BPF_A, 0, 0, 0}}<\/code><\/pre>\n<p><em>* C\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Classic BPF, \u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 eBPF.<\/em><\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 softirq \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 CPU 0, \u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u043a\u0435\u0442 0. \u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <code>SO_ATTACH_REUSEPORT_CBPF<\/code>. <strong>\u0421\u043e\u043a\u0435\u0442 0<\/strong> \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u043a\u0435\u0442\u043e\u043c, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 CPU 0. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043e\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0447\u0430\u043b \u00ab\u0441\u043b\u0443\u0448\u0430\u0442\u044c\u00bb \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e ip\/port \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u044b <code>SO_REUSEPORT<\/code>.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f \u043e\u0431 \u044d\u0442\u043e\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0447\u0438\u0442\u0430\u043b, \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b (\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e \u0441\u043e\u043a\u0435\u0442\u044b) \u0432 \u0442\u043e\u043c \u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u043b (pin) \u0438\u0445 \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c. \u0414\u043b\u044f <code>fork()<\/code> \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 libreactor \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/blob\/8110fd1afed47deae0919f4e3627ebe9256c9b1e\/frameworks\/C\/libreactor\/src\/helpers.c#L93\"> <u>\u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0446\u0438\u043a\u043b for<\/u><\/a>. \u0423\u0432\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>fork()<\/code> \u0432 \u0446\u0438\u043a\u043b\u0435 for, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\/\u0441\u043e\u043a\u0435\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u043d\u0430\u0440\u0443\u0448\u0430\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u043a\u0435\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c\u0438. \u041a\u043e\u0440\u043e\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>SO_ATTACH_REUSEPORT_CBPF<\/code> \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0443\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u043a\u0435\u0442\u044b. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0441\u043c.<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/pull\/6244\/commits\/9bc63d0ae3cfb65f17c50d178e7c653b9b332216\"> <u>\u043a\u043e\u043c\u043c\u0438\u0442 \u043d\u0430 GitHub<\/u><\/a> \u0441 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<h4>XPS: Transmit Packet Steering<\/h4>\n<p><a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/Documentation\/networking\/scaling.txt#L364\"><u>Transmit Packet Steering<\/u><\/a> \u043f\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443 \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e RSS \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445; \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u043f\u0430\u0440\u0443 vCPU\/queue \u043f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u043e\u0442\u0432\u0435\u0442\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>\/sys\/class\/net\/eth0\/queues\/tx-&lt;n>\/xps_cpus<\/code> (\u0433\u0434\u0435 n \u2014 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0447\u0435\u0440\u0435\u0434\u0438) \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0439 \u0431\u0438\u0442\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 CPU.<\/p>\n<pre><code>export TXQUEUES=($(ls -1qdv \/sys\/class\/net\/eth0\/queues\/tx-)) for i in ${!TXQUEUES[@]}; do printf '%x' $((2**i)) > ${TXQUEUES[i]}\/xps_cpus; done;<\/code><\/pre>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h4>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c \u043c\u044b \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2014 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 38%. \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0440\u043e\u0441\u043b\u0430 \u0441 603 \u0442\u044b\u0441. \u0434\u043e 834 \u0442\u044b\u0441. RPS.<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency   301.65us   23.43us  692.00us  115.00us   68.96%     Req\/Sec    52.41k   640.10     54.25k    50.52k    68.75%   Latency Distribution   50.00%  301.00us   90.00%  332.00us   99.00%  361.00us   99.99%  407.00us   8343567 requests in 10.00s, 1.13GB read Requests\/sec: 834350.86 Transfer\/sec:    116.17MB<\/code><\/pre>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430<\/h4>\n<p>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0430\u0448\u0435\u043c Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b. \u041f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/iptables.svg\"> <u>\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u043c<\/u><\/a> \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0431\u043b\u043e\u043a (\u0441\u0438\u043d\u0438\u0439) \u0441\u0442\u0430\u043b \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0448\u0438\u0440\u0435. \u0415\u0433\u043e \u0448\u0438\u0440\u0438\u043d\u0430 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u0430 \u0441 12% \u0434\u043e 17%. \u041f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u043e\u0439 \u043d\u0430\u0443\u043a\u043e\u0439, \u0442.\u043a. \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f \u0432 1-2%, \u043d\u043e \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u043d\u0430 \u0438 \u043e\u0449\u0443\u0442\u0438\u043c\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b\u0430 \u0438\u0434\u0435\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u043d\u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u044f. \u0411\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0432 \u043d\u0435\u043c.<\/p>\n<p>\u041c\u043e\u044f \u0442\u0435\u043e\u0440\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u044f\u0434\u0440\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044c\u0448\u0435. \u0414\u0435\u043b\u043e \u043d\u0435 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u0441\u0442\u0430\u043b \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u0434 \u044f\u0434\u0440\u0430 \u0441\u0442\u0430\u043b \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0434\u043e\u043b\u044f <code>recv<\/code>-\u0441\u0442\u0435\u043a\u0430 (<code>SYSC_recvfrom<\/code> \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435) \u0443\u043f\u0430\u043b\u0430 \u0441 17% \u0434\u043e 13%. \u042d\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 <code>recv<\/code> \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b54\/7c6\/bbd\/b547c6bbdd206b1c10f588431d16d41e.png\" width=\"800\" height=\"315\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b54\/7c6\/bbd\/b547c6bbdd206b1c10f588431d16d41e.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b, \u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438\u043c\u0435\u0435\u0442 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f; \u0435\u0433\u043e \u0441\u0430\u043c\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043b\u044e\u0441 \u2014 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u0441\u0430\u043c\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u043b\u0430\u0431\u043e\u0441\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u0432\u0430\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e: \u043d\u0435\u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 CPU\/queue 0. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 CPU \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c IRQ, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 0, \u0438 \u043d\u0438\u043a\u0430\u043a\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0432\u044f\u0437\u043a\u0430 vCPU\/queue \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0430\u043c\u0430 \u0441\u0435\u0431\u0435, \u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0435\u0439 \u0436\u0434\u0430\u0442\u044c \u043d\u0435\u043e\u0442\u043a\u0443\u0434\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b\u043c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <code>taskset<\/code> \u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 Docker <code>--cpuset-cpus<\/code>. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439 BPF, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u044f\u0432\u0438\u0442\u044c \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u044e, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u044d\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b, \u043d\u043e \u0438\u0445 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0443\u043c\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043c\u0435\u044e\u0442 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0414\u0430\u0436\u0435 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430\u043c\u0438 <code>SO_ATTACH_REUSEPORT_CBPF<\/code> \u2013 \u043c\u043e\u0449\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438, \u0438 \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0442\u0438. \u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d\u0430 \u0442\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0439, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0440\u0443\u0434\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u0442 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u044b\u043c \u043a \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044e \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441 \u0435\u0435 \u043f\u043e\u043c\u043e\u0449\u044c\u044e. \u0412<a href=\"https:\/\/mailman.nginx.org\/pipermail\/nginx-devel\/2020-September\/013461.html\"><u> \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0435 NGINX<\/u><\/a> \u0431\u044b\u043b\u0438 \u043d\u0430\u043c\u0435\u043a\u0438 \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 <code>SO_ATTACH_REUSEPORT_CBPF<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043a\u043e\u0440\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0438. \u041a\u0430\u043a \u0438 \u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 libreactor, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432 \u044d\u0442\u043e\u043c \u0442\u0435\u0441\u0442\u0435, \u0443 NGINX \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u00ab\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u044f\u0434\u0440\u043e\u00bb \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439<a href=\"https:\/\/nginx.org\/en\/docs\/ngx_core_module.html#worker_cpu_affinity\"> <u>\u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 CPU<\/u><\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <code>SO_ATTACH_REUSEPORT_CBPF<\/code> \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0438\u0434\u0435\u044f (\u0435\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u041e\u0421 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442).<\/p>\n<h3>6. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439<\/h3>\n<h4>\u041c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439<\/h4>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041e\u043d\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, (\u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f) \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u00ab\u0437\u0430\u043d\u044f\u0442\u0438\u044f\u00bb \u041e\u0421. \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0442\u0435\u0440\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0435\u0436\u0435\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043c\u044f\u0433\u0447\u0438\u0442\u044c \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u043e\u0442 \u043e\u0431\u0438\u043b\u0438\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043a\u0430\u0440\u0442\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0438\u0445 \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044e\/\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435. \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0440\u0430\u0437\u0443 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u0440\u0438\u0431\u044b\u0432\u0448\u0438\u0445 \u0437\u0430 \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0438\u043e\u0434. \u0411\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b (\u0432\u0440\u043e\u0434\u0435 AWS ENA) \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442<a href=\"https:\/\/blog.packagecloud.io\/eng\/2016\/06\/22\/monitoring-tuning-linux-networking-stack-receiving-data\/#interrupt-handler\"> <u>\u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044e<\/u><\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/master\/Documentation\/networking\/net_dim.rst\"> <u>\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c<\/u><\/a> \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u044f\u0434\u0440\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439. \u0415\u0441\u043b\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0435\u0432\u0435\u043b\u0438\u043a, \u043f\u0435\u0440\u0438\u043e\u0434 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0442\u0441\u044f \u0434\u043e \u043d\u0443\u043b\u044f, \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430 (\u0442.\u0435. \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439). \u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u0435\u0440\u0438\u043e\u0434 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f, \u043f\u043e\u043c\u043e\u0433\u0430\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b; \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0430 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435.<\/p>\n<p>\u0414\u0440\u0430\u0439\u0432\u0435\u0440 ENA \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f (\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (<code>tx-usecs<\/code>, <code>rx-usecs<\/code>) \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (<code>adaptive-rx <\/code>on \/ off). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <code>adaptive-rx<\/code> <strong>\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d<\/strong>, <code>rx-usecs<\/code> \u2014 <strong>0<\/strong>, \u0430 <code>tx-usecs<\/code> \u2014 <strong>64<\/strong>. \u041f\u043e \u0438\u0442\u043e\u0433\u0430\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0439 \u0431\u0430\u043b\u0430\u043d\u0441 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0434\u043b\u044f \u0440\u044f\u0434\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: <code>adaptive-rx<\/code> <strong>\u0432\u043a\u043b\u044e\u0447\u0435\u043d<\/strong> (on), <code>tx-usecs<\/code> \u2014 <strong>256<\/strong>.<\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 adaptive-rx \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0441 834k RPS \u0434\u043e 955k RPS (+14%). \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 adaptive-rx \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432, \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u043c\u044b\u0445 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e <strong>\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u0438 \u043c\u0430\u043b\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432<\/strong> \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0431\u043e\u043b\u0435\u0435 10 \u0442\u044b\u0441. RPS. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432.<\/p>\n<h4>Busy polling<\/h4>\n<p>Busy polling \u2014 \u044d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f (\u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f) \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 2013 \u0433\u043e\u0434\u0430 (\u044f\u0434\u0440\u043e 3.11). \u041e\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u0430 \u043d\u0438\u0437\u043a\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u043a\u0435\u0442\u0443 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0420\u0430\u0441\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0446\u0438\u043a\u043b\u0430\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u043c \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c. \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:<\/p>\n<ol>\n<li>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>sysctl net.core.busy_read<\/code> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f busy polling \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>recv<\/code>\/<code>read<\/code>, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0447\u0442\u0435\u043d\u0438\u0439. \u041d\u0430\u043c \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0430\u0441 \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0447\u0442\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>net.core.busy_read<\/code> \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u043a\u0435\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>SO_BUSY_POLL<\/code>, \u043d\u043e \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0447\u0442\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>sysctl net.core.busy_poll<\/code> \u2014 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f. \u0415\u0441\u043b\u0438 \u0441\u0443\u0434\u0438\u0442\u044c \u043f\u043e<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/Documentation\/sysctl\/net.txt#L148\"> <u>\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/u><\/a>, \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0430\u043a\u0442\u0443\u0430\u043b\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f <code>poll<\/code> \u0438 <code>select<\/code> (\u043d\u043e \u043d\u0435 \u0434\u043b\u044f epoll libreactor\u2019\u0430). \u0412 \u043d\u0435\u0439 \u044f\u0432\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0447\u0442\u043e <em>\u00ab\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u043a\u0435\u0442\u044b \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c SO_BUSY_POLL \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u00bb<\/em>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0442\u043e \u043e\u0431\u0430 \u044d\u0442\u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u044b \u0442\u043e\u0433\u0434\u0430, \u043d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 busy polling \u0431\u044b\u043b\u0430<a href=\"https:\/\/github.com\/torvalds\/linux\/commit\/bf3b9f6372c45b0fbf24d86b8794910d20170017\"> <u>\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 epoll \u0432 2017 \u0433\u043e\u0434\u0443 (\u044f\u0434\u0440\u043e 4.12)<\/u><\/a>, \u0438, \u0441\u0443\u0434\u044f \u043f\u043e \u043a\u043e\u0434\u0443 \u0438 \u0442\u0435\u0441\u0442\u0430\u043c, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c <code>SO_BUSY_POLL<\/code> \u0432 \u0441\u043e\u043a\u0435\u0442\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441 epoll, busy polling \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u043a\u0435\u0442\u0430, \u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437<a href=\"https:\/\/man7.org\/linux\/man-pages\/man2\/epoll_wait.2.html\"> <u>epoll_wait<\/u><\/a>. \u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d busy polling \u0438 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 <code>epoll_wait<\/code>, \u0442\u043e<a href=\"https:\/\/blog.packagecloud.io\/eng\/2016\/06\/22\/monitoring-tuning-linux-networking-stack-receiving-data\/#irqs\"> <u>\u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 NAPI<\/u><\/a> \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0440\u0438\u0435\u043c\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 (softIRQ). \u0412 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u043f\u0430\u0434\u0443\u0442 \u0432 \u0442\u0435 \u0436\u0435 \u0441\u043e\u043a\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043b epoll-\u0438\u043d\u0441\u0442\u0430\u043d\u0441, \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u044f\u0442 epoll \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f. \u0412\u0441\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0431\u0435\u0437 \u0443\u0447\u0430\u0441\u0442\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p>\u0421\u0430\u043c\u044b\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c busy polling \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CPU \u0438\u0437-\u0437\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u043e\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>net.core.busy_poll<\/code> \u0432\u0430\u0440\u044c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442 50\u03bcs \u0434\u043e 100\u03bcs, \u043e\u0434\u043d\u0430\u043a\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 (\u0441 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432) busy polling \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u0432 1\u03bcs. \u041f\u0440\u0438 <code>net.core.busy_poll=50<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 CPU \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u0441 8 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u043a\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 45%, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 <code>net.core.busy_poll=1<\/code> \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CPU \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e 1-2%.<\/p>\n<p>\u0412\u0430\u0436\u043d\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044c \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0432\u0437\u0430\u0438\u043c\u043d\u043e\u0433\u043e \u0431\u043b\u0430\u0433\u043e\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, busy polling\u2019\u0430 \u0438 <code>SO_ATTACH_REUSEPORT_CBPF<\/code>. \u0423\u0431\u0435\u0440\u0438\u0442\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043c\u0435\u043d\u0435\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u0432 \u043f\u043b\u0430\u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430. \u0411\u0435\u0437 \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 busy polling \u0432\u0440\u044f\u0434 \u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0430 \u0431\u0435\u0437 <code>SO_ATTACH_REUSEPORT_CBPF<\/code> (\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a) \u044d\u0444\u0444\u0435\u043a\u0442 \u043e\u0442 busy polling\u2019\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432<a href=\"https:\/\/github.com\/torvalds\/linux\/commit\/bf3b9f6372c45b0fbf24d86b8794910d20170017\"> <u>\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u043a \u043a\u043e\u043c\u043c\u0438\u0442\u0443 git<\/u><\/a>, \u0434\u043e\u0431\u0430\u0432\u0438\u0432\u0448\u0435\u043c\u0443 busy polling \u0432 epoll, \u043e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0443\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e <code>SO_ATTACH_REUSEPORT_CBPF<\/code> \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 busy polling \u0440\u0430\u0434\u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438. \u0418\u0437 <a href=\"https:\/\/netdevconf.info\/2.1\/papers\/BusyPollingNextGen.pdf\"><u>\u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430<\/u><\/a> \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 netdev 2.1 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0443\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.<\/p>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h4>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0438 busy polling \u0434\u0430\u044e\u0442 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 28%. \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 834 \u0442\u044b\u0441. \u0434\u043e 1,06 \u043c\u043b\u043d RPS, \u0430 99-\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0438\u043b\u044c (p99) \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u043d\u0438\u0436\u0430\u0435\u0442\u0441\u044f \u0441 361\u03bcs \u0434\u043e 292\u03bcs.<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency   233.13us   24.41us  636.00us   73.00us   70.59%     Req\/Sec    66.96k   675.18     68.80k    64.95k    68.37%   Latency Distribution   50.00%  233.00us   90.00%  263.00us   99.00%  292.00us   99.99%  348.00us   10660410 requests in 10.00s, 1.45GB read Requests\/sec: 1066034.60 Transfer\/sec:    148.43MB<\/code><\/pre>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430<\/h4>\n<p>\u041d\u0430 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0437\u0430\u043c\u0435\u0442\u043d\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u044b \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/perfect-locality.svg\"> <u>\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c<\/u><\/a>, \u043d\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043e\u043d\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 IRQ. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0438 busy polling \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 softirq \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0430\u043a\u0442\u0438\u0432\u043d\u043e, \u0430 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3bf\/b3f\/c3c\/3bfb3fc3ce55d267c92f936e9d72e3b8.png\" width=\"800\" height=\"315\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3bf\/b3f\/c3c\/3bfb3fc3ce55d267c92f936e9d72e3b8.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c <code>ena_io_poll<\/code>, <code>ret_from_intr<\/code> \u0438 <code>napi_busy_loop<\/code> \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445, \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u0431\u0449\u0430\u044f \u0434\u043e\u043b\u044f softirq (\u043d\u0430 \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>ena_io_poll<\/code>) \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043d\u043e \u0434\u043e\u043b\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 (\u0432\u0441\u0435 \u0442\u043e\u043d\u043a\u0438\u0435 \u00ab\u0448\u0438\u043f\u044b\u00bb) \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 25% \u0434\u043e \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 6%, \u0430 \u0434\u043e\u043b\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f busy_poll, \u043f\u043e\u0434\u0441\u043a\u0430\u043a\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0434\u043e 22%.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0414\u043e<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041f\u043e\u0441\u043b\u0435<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">ena_io_poll<\/p>\n<\/td>\n<td>\n<p align=\"left\">29.6%<\/p>\n<\/td>\n<td>\n<p align=\"left\">30.2%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">ret_from_intr<\/p>\n<\/td>\n<td>\n<p align=\"left\">24.6%<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u00a0 6.3%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">napi_busy_loop<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u00a0 0.0%<\/p>\n<\/td>\n<td>\n<p align=\"left\">21.9%<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432\u0438\u0434\u043d\u0430 \u0435\u0449\u0451 \u043b\u0443\u0447\u0448\u0435, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u0443\u044e <code>dstat<\/code>:<\/p>\n<pre><code>dstat -y -i -I 27,28,29,30 --net-packets<\/code><\/pre>\n<p><strong>\u0414\u043e<\/strong><\/p>\n<pre><code>---system-- -------interrupts------ -pkt\/total-  int   csw |  27    28    29    30 |#recv #send  183k 6063 |  47k   48k   49k   37k| 834k  834k  183k 6084 |  48k   48k   48k   37k| 833k  833k  183k 6101 |  47k   49k   48k   37k| 834k  834k<\/code><\/pre>\n<p><strong>\u041f\u043e\u0441\u043b\u0435<\/strong><\/p>\n<pre><code>---system-- -------interrupts------ -pkt\/total-  int   csw |  27    28    29    30 |#recv #send   16k  967 |3843  3848  3849  3830 |1061k 1061k   16k  953 |3842  3847  3851  3826 |1061k 1061k   16k  999 |3842  3852  3852  3827 |1061k 1061k<\/code><\/pre>\n<p>\u041e\u0431\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0441\u043d\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u0441 183 \u0442\u044b\u0441. \u0434\u043e 16 \u0442\u044b\u0441. \u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0443\u043f\u0430\u043b\u043e \u0441 6000 \u0434\u043e \u043c\u0435\u043d\u0435\u0435 1000 \u2014 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0435 \u043d\u0438\u0437\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 1 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<h3>7. \u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0441\u043e\u0441\u0435\u0434<\/h3>\n<p>\u041f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 RPS \u0441\u0442\u0430\u043b\u043e \u0432\u0430\u0436\u043d\u043e\u0439 \u0432\u0435\u0445\u043e\u0439. \u042f \u0434\u0430\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u043b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0448\u0430\u043c\u043f\u0430\u043d\u0441\u043a\u043e\u0435 \u0432 \u0447\u0430\u0442\u0435 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u043d\u0446\u0435\u0432\u0430\u043b. \u041e\u0434\u043d\u0430\u043a\u043e \u0447\u0443\u0432\u0441\u0442\u0432\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e, \u043d\u0435 \u043f\u043e\u043a\u0438\u0434\u0430\u043b\u043e, \u0438, \u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044f \u0441\u0442\u0430\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0434\u0435\u0440\u0436\u0438\u043c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u043b Flame-\u0433\u0440\u0430\u0444\u0438\u043a, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0442\u0443\u0447\u0438 \u0441\u0433\u0443\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u043d\u0430\u0434 <code>_raw_spin_lock<\/code> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438\u00a0 \u0441\u0442\u0435\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 <code>sendto<\/code>. \u0423\u0432\u044b, \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0431\u0435\u0437\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043d\u044b. \u0420\u0430\u0437\u043e\u0447\u0430\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c, \u044f \u0434\u0432\u0438\u043d\u0443\u043b\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 (\u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430, \u0441\u0443\u0434\u044c\u0431\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0441\u0435 \u0436\u0435 \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0434\u0440\u0435\u0448\u0435\u043d\u0430).<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0446\u0435\u043b\u044c\u044e \u0441\u0442\u0430\u043b\u0430 <code>dev_queue_xmit_nit<\/code> (3,5% \u043d\u0430 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435).<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/core\/dev.c#L2974\"> <u>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434<\/u><\/a> <code>dev_queue_xmit_nit<\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 <code>!list_empty(&amp;ptype_all) || !list_empty(&amp;dev->ptype_all)<\/code>, \u0447\u0442\u043e \u043d\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0442\u0430\u043a: \u00ab\u0447\u0442\u043e-\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043f\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430\u00bb. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/core\/dev.c#L4337\"> <u>\u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/u><\/a> \u0432\u043d\u0443\u0442\u0440\u0438 <code>__netif_receive_skb_core<\/code>. \u041f\u043e\u0438\u0441\u043a \u043d\u0430<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/interrupt-optimization.svg\"> <u>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435<\/u><\/a> \u043f\u043e <code>dev_queue_xmit_nit|packet_rcv<\/code>, \u0434\u0430\u0435\u0442 <code>packet_rcv<\/code> \u0432\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0442\u0435\u043a\u0430\u0445 softirq, \u0430 \u0438\u0445 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u0430\u044f \u0434\u043e\u043b\u044f \u0432\u044b\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0434\u043e 4,5%.<\/p>\n<p>\u041f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0436\u0438\u0434\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u043b\u0430 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (\u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>tcpdump<\/code>), \u043d\u043e \u043e\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u043b\u0430. \u0412\u044b\u0437\u043e\u0432<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/packet\/af_packet.c#L2055\"> <u>packet_rcv<\/u><\/a> \u043e\u0437\u043d\u0430\u0447\u0430\u043b, \u0447\u0442\u043e \u043a\u0442\u043e-\u0442\u043e \u0433\u0434\u0435-\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u043b raw-\u0441\u043e\u043a\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e<a href=\"https:\/\/man7.org\/linux\/man-pages\/man7\/packet.7.html\"> <u>AF_PACKET<\/u><\/a>, \u0438 \u044d\u0442\u043e \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0443. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432\u0438\u043d\u043e\u0432\u043d\u0438\u043a\u0430 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e<a href=\"https:\/\/man7.org\/linux\/man-pages\/man8\/ss.8.html\"> <u>ss<\/u><\/a>. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>ss --raw<\/code>, \u043d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0441\u043e\u043a\u0435\u0442\u0430\u043c AF_INET\/SOCK_RAW, \u0430 \u043c\u044b \u0438\u0449\u0435\u043c AF_PACKET\/SOCK_RAW (\u043d\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435, \u044f \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u043a\u043e\u043f\u0430\u043b\u0441\u044f \u0432 \u044d\u0442\u043e\u043c). \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>sudo ss --packet --processes<\/code> \u043d\u0430\u0445\u043e\u0434\u0438\u0442 raw-\u0441\u043e\u043a\u0435\u0442 AF_PACKET, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u043c\u044f \u0441\u043b\u0443\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u0418\u0442\u0430\u043a, \u043d\u0430\u0448 \u0432\u0438\u043d\u043e\u0432\u043d\u0438\u043a \u043d\u0430\u0439\u0434\u0435\u043d: <code>((\"dhclient\",pid=3191,fd=5))<\/code>. \u042d\u0442\u043e DHCP-\u043a\u043b\u0438\u0435\u043d\u0442 \u0441 raw-\u0441\u043e\u043a\u0435\u0442\u043e\u043c.<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0434\u0435\u043b\u0430, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0435\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c. \u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u0437\u0430\u0447\u0435\u043c DHCP-\u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0432\u043e\u043e\u0431\u0449\u0435 \u00ab\u0432\u0438\u0441\u0435\u0442\u044c\u00bb \u043d\u0430 raw-\u0441\u043e\u043a\u0435\u0442\u0435? \u041e\u0442\u0432\u0435\u0442 \u0438\u0437<a href=\"https:\/\/kb.isc.org\/docs\/aa-00378\"> <u>\u0431\u0430\u0437\u044b \u0437\u043d\u0430\u043d\u0438\u0439 ISC<\/u><\/a> \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435. \u041f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043c \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u043e \u0442\u0430 \u0436\u0435 \u043b\u043e\u0433\u0438\u043a\u0430, \u0443\u0432\u0435\u0440\u0435\u043d, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u0430 \u0438 \u043a \u043a\u043b\u0438\u0435\u043d\u0442\u0443:<\/p>\n<blockquote>\n<p>[\u0421\u043e\u043a\u0435\u0442] \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u044b\u0435 (\u0431\u0435\u0437 ARP) \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 RFC 2131. \u041e\u043d\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 (\u043a\u043e\u0433\u0434\u0430 \u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0435\u0449\u0435 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0430\u0434\u0440\u0435\u0441).<\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043b\u0438\u0435\u043d\u0442 DHCP \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d IP-\u0430\u0434\u0440\u0435\u0441. \u0412 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u0437 \u0431\u0430\u0437\u044b \u0437\u043d\u0430\u043d\u0438\u0439 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0441\u043e\u043a\u0435\u0442 UDP \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043e\u0434\u043d\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 DHCP. \u042f \u043d\u0430\u0434\u0435\u044f\u043b\u0441\u044f, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c <code>dhclient<\/code> \u0437\u0430\u043a\u0440\u044b\u0442\u044c raw-\u0441\u043e\u043a\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043a\u0435\u0442 UDP \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439, \u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0442 <code>dhclient<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u0441\u043e\u043a\u0435\u0442\u0435 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 BPF, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u044b, \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a DHCP, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0442\u0435 \u043f\u043e\u043a\u0438\u043d\u0443\u0442 \u044f\u0434\u0440\u043e. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0442\u0430\u043a\u0430\u044f \u00ab\u043f\u0443\u0441\u0442\u0430\u044f\u00bb \u0440\u0430\u0431\u043e\u0442\u0430 \u044f\u0434\u0440\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043e\u0442\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0430 \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0441\u0435\u0431\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c.<\/p>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/using-instance-addressing.html#concepts-private-addresses\"><u>\u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/u><\/a>, \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0433\u043e IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0443 \u0442\u043e\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u043d\u0435\u043c\u0443 \u043d\u0430 \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b (\u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u0445 \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\u0445). \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f DHCP \u043d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f IP-\u0430\u0434\u0440\u0435\u0441\u0430, \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c <code>dhclient<\/code> \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u041f\u043e\u043c\u0438\u043c\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 <code>dhclient<\/code>\u2019\u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0447\u0430\u0441\u0442\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (<code>eth0<\/code>), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f<a href=\"https:\/\/man7.org\/linux\/man-pages\/man8\/ip-address.8.html\"> <u>ip address<\/u><\/a>. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 1 \u0447\u0430\u0441 (\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f IPv4 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u043a\u0430\u0436\u0434\u044b\u0435 30 \u043c\u0438\u043d\u0443\u0442), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043d\u0430 forever.<\/p>\n<pre><code>sudo dhclient -x -pf \/var\/run\/dhclient-eth0.pid sudo ip addr change $( ip -4 addr show dev eth0 | grep 'inet' | awk '{ print $2 \" brd \" $4 \" scope global\"}') dev eth0 valid_lft forever preferred_lft forever<\/code><\/pre>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h4>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <code>dhclient<\/code> \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u043d\u0430 6%. \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u0430 \u0441 1,06 \u043c\u043b\u043d \u0434\u043e 1,12 \u043c\u043b\u043d RPS.<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency   219.38us   26.49us  598.00us   56.00us   68.29%     Req\/Sec    70.84k   535.35     72.42k    69.38k    67.55%   Latency Distribution   50.00%  218.00us   90.00%  254.00us   99.00%  285.00us   99.99%  341.00us   11279049 requests in 10.00s, 1.53GB read Requests\/sec: 1127894.86 Transfer\/sec:    157.04MB<\/code><\/pre>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430<\/h4>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 <code>dev_queue_xmit_nit<\/code> \u0438 <code>packet_rcv<\/code> \u0431\u044b\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u0430\u043b\u0435\u043d\u044b. \u00ab\u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430\u00bb \u0432\u044b\u0441\u0435\u043b\u0438\u043b\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ea5\/717\/576\/ea57175768aa1f91b0c950b991d88a00.png\" width=\"800\" height=\"315\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ea5\/717\/576\/ea57175768aa1f91b0c950b991d88a00.png\"\/><figcaption><\/figcaption><\/figure>\n<p><strong>\u041f\u0420\u0418\u041c\u0415\u0427\u0410\u041d\u0418\u0415<\/strong>. \u0425\u043e\u0447\u0443 \u043f\u0440\u043e\u044f\u0441\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u044d\u0442\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043d\u0430 production-\u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u0445 \u0438\u043b\u0438 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <code>dhclient<\/code> \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f\u043c. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u043d\u0435\u0432\u0440 \u00ab\u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435\u00bb; \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0441\u0435\u043b\u0438\u0442\u044c <code>dhclient<\/code> \u0441 raw-\u0441\u043e\u043a\u0435\u0442\u0430, \u0434\u0430\u0439\u0442\u0435 \u043c\u043d\u0435 \u0437\u043d\u0430\u0442\u044c:<a href=\"https:\/\/news.ycombinator.com\/item?id=27226382\"> <u>Hacker News<\/u><\/a> |<a href=\"https:\/\/www.reddit.com\/r\/aws\/comments\/nha53i\/extreme_http_performance_tuning_12m_api_reqs_on_a\/\"> <u>Reddit<\/u><\/a> |<a href=\"https:\/\/talawah.io\/contact\/\"> <u>Direct<\/u><\/a>.<\/p>\n<h3>8. \u0411\u043e\u0440\u044c\u0431\u0430 \u0441\u043e Spin Lock<\/h3>\n<p>\u042f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0444\u0440\u0435\u0439\u043c\u043e\u043c <code>_raw_spin_lock<\/code> \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0435\u043a\u0430 <code>sendto<\/code> (\u0441\u043c. \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 Flame-\u0433\u0440\u0430\u0444\u0438\u043a). \u042f\u0434\u0440\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0438\u043d\u043b\u043e\u043a\u043e\u0432 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438, \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c<a href=\"https:\/\/man7.org\/linux\/man-pages\/man8\/tc.8.html#QDISCS\"> <u>qdiscs<\/u><\/a> (\u0438\u043b\u0438 \u0432 \u043e\u0431\u0445\u043e\u0434 \u0435\u0433\u043e) \u043f\u043e \u043f\u0443\u0442\u0438 \u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0435. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u044f \u0443\u0436\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u043b \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443, \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0433\u0440\u0430\u0444\u0438\u043a, \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u042f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c.<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u043e\u0439, \u0438 \u043d\u0430 \u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0443\u0448\u043b\u0438 \u0434\u043d\u0438 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0435\u0434\u0435\u043b\u0438). \u042f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u043e\u0442\u0432\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0435\u0439\u0441\u0438\u043d\u0433\u0430. \u042f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b <code>bpftrace<\/code>, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c<a href=\"https:\/\/github.com\/iovisor\/bpftrace\/blob\/v0.11.4\/src\/attached_probe.cpp#L38\"><u> _raw_spin_lock \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e kretprobe<\/u><\/a>. \u042f \u0448\u0435\u043b \u0441\u043f\u0430\u0442\u044c, \u0434\u0443\u043c\u0430\u044f \u043e \u043d\u0435\u0439. \u042f \u0441\u043f\u0430\u043b, \u0434\u0443\u043c\u0430\u044f \u043e \u043d\u0435\u0439. \u042f \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043b\u0441\u044f \u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u00ab\u0441\u0432\u0435\u0442\u043b\u043e\u0439\u00bb \u0438\u0434\u0435\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0442\u0443\u043f\u0438\u043a\u043e\u0432\u043e\u0439. \u041f\u043e\u0438\u0441\u043a \u043e\u0442\u0432\u0435\u0442\u0430 \u0441\u0442\u0430\u043b \u043c\u043e\u0435\u0439 \u0438\u0434\u0435\u0435\u0439 \u0444\u0438\u043a\u0441. \u0412 \u0445\u043e\u0434 \u0448\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0440\u0430\u0437\u043d\u044b\u0435 qdisc\u2019\u0438, \u0440\u0430\u0437\u043d\u044b\u0435 \u044f\u0434\u0440\u0430 (\u0434\u0430\u0436\u0435 \u0445\u0430\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f qdisc). \u0412 \u0438\u0442\u043e\u0433\u0435 \u0432\u0441\u0435 \u0441\u0442\u0430\u0440\u0430\u043d\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430.<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u0441 \u0442\u044f\u0436\u0435\u043b\u044b\u043c \u0441\u0435\u0440\u0434\u0446\u0435\u043c, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u0441\u0434\u0430\u0442\u044c\u0441\u044f. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0434\u0440\u043e \u0432\u0435\u043b\u043e \u0441\u0435\u0431\u044f \u0442\u0430\u043a, \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c. \u0421\u043f\u0438\u043d\u043b\u043e\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 qdisc, \u2014 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u044f\u0434\u0440\u0430 \u0440\u0435\u0448\u0438\u0442\u044c \u0435\u0435 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0443\u0432\u0435\u043d\u0447\u0430\u043b\u0438\u0441\u044c \u0443\u0441\u043f\u0435\u0445\u043e\u043c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430<a href=\"https:\/\/lwn.net\/Articles\/738974\/\"> <u>lockless qdisc<\/u><\/a> \u0431\u044b\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u044f\u0434\u0440\u043e 4.16, \u043d\u043e \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0437\u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u0445\u043e\u0434\u0430 \u043f\u0443\u0441\u0442\u043e\u0433\u043e qdisc (<code>TCQ_F_CAN_BYPASS<\/code>). \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u043b\u044f \u043c\u043e\u0435\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f (\u043d\u0435\u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430\/\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430) \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043c\u0435\u0441\u0442\u0438\u0442\u0441\u044f \u0441 <code>_raw_spin_lock<\/code> \u043d\u0430 <code>__qdisc_run<\/code> \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0443\u0441\u0442\u043e\u043c qdisc.<\/p>\n<p>\u042f \u0431\u044b\u043b \u0432 \u0432\u043e\u0441\u0442\u043e\u0440\u0433\u0435, \u0443\u0437\u043d\u0430\u0432, \u0447\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 <strong>\u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <code>TCQ_F_CAN_BYPASS<\/code> \u0438 lockless qdiscs \u0431\u044b\u043b\u0430<a href=\"https:\/\/github.com\/torvalds\/linux\/commit\/ba27b4cdaaa66561aaedb2101876e563738d36fe\"> <u>\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0435 \u044f\u0434\u0440\u0430<\/u><\/a>. \u0423\u0432\u044b, \u0440\u0430\u0434\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u043d\u0435\u0434\u043e\u043b\u0433\u043e\u0439. \u041f\u0430\u0442\u0447 \u043f\u0440\u0438\u0432\u0435\u043b \u043a \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f\u043c, \u0438<a href=\"https:\/\/github.com\/torvalds\/linux\/commit\/379349e9bc3b42b8b2f8f7a03f64a97623fff323\"> <u>\u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c<\/u><\/a>.<\/p>\n<h4>Noqueue \u0441\u043f\u0435\u0448\u0438\u0442 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c<\/h4>\n<p>\u0417\u0430\u0431\u0440\u043e\u0441\u0438\u0432 \u0431\u043e\u0440\u044c\u0431\u0443 \u0441\u043e \u0441\u043f\u0438\u043d\u043b\u043e\u043a\u0430\u043c\u0438, \u044f \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u043c, \u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b \u00ab\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438\u00bb (\u0441\u043c. \u043d\u0438\u0436\u0435). \u0418\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0438\u0434\u0435\u044f\u0445 \u0438 \u043d\u0430\u0445\u043e\u0434\u043a\u0430\u0445 \u2014 \u0432\u0434\u0440\u0443\u0433 \u043a\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0443\u043b\u043e\u0432\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e \u044f \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b. \u0412 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0445\u0430\u043a\u043e\u0432 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0442\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u00ab\u0443\u0431\u0438\u043b\u00bb \u0438\u043d\u0441\u0442\u0430\u043d\u0441), \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0442\u043e, \u043d\u0430 \u0447\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u043b \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f: <strong>noqueue<\/strong> qdisc.<\/p>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e noqueue qdisc \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043a\u0443\u0434\u043d\u0430, \u043d\u043e \u043c\u043d\u0435 \u043f\u043e\u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u0438\u043b\u043e\u0441\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c<a href=\"http:\/\/linux-tc-notes.sourceforge.net\/tc\/doc\/sch_noqueue.txt\"> <u>\u043d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 tc-\u0437\u0430\u043c\u0435\u0442\u043a\u0438<\/u><\/a> \u0441 \u0442\u043e\u043b\u043a\u043e\u0432\u044b\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c. \u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u044d\u0442\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043e\u0431\u0445\u043e\u0434 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439. \u041e\u043d \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a loopback-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (localhost) \u0438\u043b\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0433\u0443\u0442 \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u0440\u0438\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0432\u0441\u0435, \u0447\u0442\u043e \u0438\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e, \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442<a href=\"https:\/\/www.reactivemanifesto.org\/glossary#Back-Pressure\"> <u>back-pressure<\/u><\/a> (\u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435). \u041f\u0430\u043a\u0435\u0442 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c qdisc \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437-\u0437\u0430 back-pressure, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0442 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f = \u043d\u0435\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u041e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f noqueue \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0435: \u0435\u0441\u043b\u0438 qdisc \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0418\u0434\u0435\u044f \u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0432\u0441\u0435\u0445 \u0441\u043f\u0438\u043d\u043b\u043e\u043a\u043e\u0432! \u0412\u043e\u043f\u0440\u043e\u0441 \u0431\u044b\u043b \u0432 \u0442\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043b\u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c?<\/p>\n<p><em>* \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441 EC2 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439, \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Nitro \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u0430\u044f \u043a PCIe.<\/em><\/p>\n<p>\u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442 \u2014 \u0434\u0430, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c <code>pfifo_fast<\/code> \u043d\u0430 <code>noqueue<\/code> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 qdisc \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<pre><code>sudo sysctl net.core.default_qdisc=noqueue sudo tc qdisc replace dev eth0 root mq<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>sudo tc qdisc show dev eth0<\/code> \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u043a\u043e\u043c\u0430\u043d\u0434, \u0432\u043e\u0442 \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0434\u043b\u044f c5n.xlarge. \u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 (multi-queue), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 qdisc.<\/p>\n<pre><code>qdisc mq 8001: root qdisc noqueue 0: parent 8001:4 qdisc noqueue 0: parent 8001:3 qdisc noqueue 0: parent 8001:2 qdisc noqueue 0: parent 8001:1<\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c: \u044d\u0442\u0430 \u0438\u0434\u0435\u044f \u043f\u0440\u043e\u0441\u0442\u043e <em>\u043d\u0435 \u043e\u0447\u0435\u043d\u044c<\/em> \u0443\u0434\u0430\u0447\u043d\u0430\u044f \u0438\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c-\u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043b\u043e\u0445\u0430\u044f?<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 noqueue. \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/sched\/sch_generic.c#L442\"> <u>noqueue_init<\/u><\/a> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>enqueue<\/code> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 <code>NULL<\/code>. \u041f\u043e \u0441\u0443\u0442\u0438, \u0442\u0430\u043a noqueue \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0441\u0435\u0431\u044f; \u043e\u043d\u043e \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0438\u0433\u0440\u0443 \u043f\u043e\u0437\u0436\u0435, \u043a\u043e\u0433\u0434\u0430 <code>enqueue<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/core\/dev.c#L3443\"> <u>__dev_queue_xmit<\/u><\/a>. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>enqueue<\/code> \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043e\u0442 NULL, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 qdisc-\u043f\u0443\u0442\u044c (\u0441\u043e \u0441\u043f\u0438\u043d\u043b\u043e\u043a\u0430\u043c\u0438). \u0415\u0441\u043b\u0438 enqueue \u0440\u0430\u0432\u0435\u043d NULL, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u044c noqueue: \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <code>dev_hard_start_xmit<\/code> \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 qdisc \u0443 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 (\u043e\u0431\u044b\u0447\u043d\u043e \u043a\u043e\u043b\u044c\u0446\u0435\u0432\u043e\u0439 \u0431\u0443\u0444\u0435\u0440). \u0412 \u043d\u0435\u0439 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0436\u0438\u0434\u0430\u044e\u0442\u0441\u044f, \u043f\u043e\u043a\u0430 \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0438\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442. \u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 qdiscs,<a href=\"https:\/\/man7.org\/linux\/man-pages\/man8\/tc-pfifo_fast.8.html\"> <u>\u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a pfifo_fast<\/u><\/a>, \u0441\u043b\u0443\u0436\u0430\u0442 <strong>\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c<\/strong> \u0431\u0443\u0444\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0437\u0430\u043d\u044f\u0442\u043e. \u0411\u043e\u043b\u0435\u0435 \u043d\u0430\u0432\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 qdiscs, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a<a href=\"https:\/\/man7.org\/linux\/man-pages\/man8\/sfq.8.html\"> <u>sfq<\/u><\/a>, \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0431\u0430\u0437\u0438\u0440\u0443\u044f\u0441\u044c \u043d\u0430 \u0442.\u043d. \u043f\u043e\u0442\u043e\u043a\u0430\u0445. \u0426\u0435\u043b\u044c \u2014 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0438\u043c\u0435\u043b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 qdisc \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b. \u0412\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0434\u0432\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0430: (1) \u0415\u0441\u0442\u044c \u043b\u0438 \u0440\u0438\u0441\u043a \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438? (2) \u041a\u0430\u043a\u043e\u0432\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u044d\u0442\u043e\u0433\u043e?<\/p>\n<p>\u042f \u0431\u044b\u043b \u0432\u043f\u043e\u043b\u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0433\u0443 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u0432\u043e\u0438\u043c \u0442\u0435\u0441\u0442\u043e\u043c. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u043e\u0432, (\u0430) \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e 256 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, (\u0431) \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u043f\u0430\u043a\u0435\u0442 \u0438 (\u0432) \u044d\u0442\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430\/\u043e\u0442\u0432\u0435\u0442\u0430. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0435\u0441\u0442\u044c \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 256 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u043f\u0430\u0440\u044b CPU\/queue \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 64 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438. \u0415\u043c\u043a\u043e\u0441\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 ENA \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 1024 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u043f\u0430\u0441 \u0443 \u043d\u0430\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u0423\u0432\u044b, \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043d\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u041e\u0421 \u0438\u043b\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c ENA. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0441\u043a\u0440\u0438\u043f\u0442<a href=\"https:\/\/gist.github.com\/talawahtech\/42ab199cd4bb9f2e1b802af0091d08d8\"> <u>bpftrace<\/u><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b \u0434\u043b\u044f \u0434\u043b\u0438\u043d\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/blob\/ena_linux_2.4.0\/kernel\/linux\/common\/ena_com\/ena_eth_com.c\"> <u>ena_com_prepare_tx<\/u><\/a>. \u0414\u0430\u043b\u0435\u0435, \u0441\u043a\u0440\u0438\u043f\u0442 <code>bpftrace<\/code> \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 qdisc, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430 <code>pfifo_fast<\/code>, \u0430 \u0437\u0430\u0442\u0435\u043c \u2014 \u0441 <code>noqueue<\/code>. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438; \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0434\u043b\u0438\u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0440\u0435\u0434\u043a\u043e \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 64. \u0412\u043e\u0442 \u043e\u043d\u0438:<\/p>\n<p><strong>pfifo_fast<\/strong><\/p>\n<pre><code>@txq[4593, 1]: [0, 8)            313971 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                       | [8, 16)           558405 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| [16, 24)          516077 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    | [24, 32)          382012 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                 | [32, 40)          301520 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@                        | [40, 48)          281715 |@@@@@@@@@@@@@@@@@@@@@@@@@@                          | [48, 56)          137744 |@@@@@@@@@@@@                                        | [56, 64)            9669 |                                                    | [65, ...)             37 |                                                    |<\/code><\/pre>\n<p><strong>noqueue<\/strong><\/p>\n<pre><code>@txq[4593, 1]: [0, 8)            338451 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                     | [8, 16)           564032 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| [16, 24)          514819 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     | [24, 32)          380872 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                 | [32, 40)          300524 |@@@@@@@@@@@@@@@@@@@@@@@@@@@                         | [40, 48)          281562 |@@@@@@@@@@@@@@@@@@@@@@@@@                           | [48, 56)          141918 |@@@@@@@@@@@@@                                       | [56, 64)           11999 |@                                                   | [65, ...)            112 |                                                    |<\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0442 \u0440\u0438\u0441\u043a\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u0435\u043d\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435 \u0436\u0435 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/Documentation\/networking\/driver.txt\"> <u>\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443<\/u><\/a>, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 <code>ndo_start_xmit<\/code> \u0432 \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <code>NETDEV_TX_OK<\/code> \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430 \u0438 <code>NETDEV_TX_BUSY<\/code> \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043e\u0442\u0432\u0435\u0442 <code>NETDEV_TX_BUSY<\/code> \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e qdisc (\u0432\u0440\u043e\u0434\u0435 <code>pfifo_fast<\/code>) \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/sched\/sch_generic.c#L199\"> <u>\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c qdisc<\/u><\/a>. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0436\u0435 noqueue<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/core\/dev.c#L3484\"> <u>\u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430<\/u><\/a>, \u0438 \u043f\u0430\u043a\u0435\u0442 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0442\u0435\u043e\u0440\u0438\u044e \u0444\u0430\u043a\u0442\u0430\u043c\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/tree\/ena_linux_2.4.0\/kernel\/linux\/ena\"> <u>\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434<\/u><\/a> \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 ENA. \u0423\u0432\u044b, \u0432\u0441\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c. <code>ena_start_xmit()<\/code> \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438, \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044f \u043f\u0430\u043a\u0435\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f <code>NETDEV_TX_OK<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>NETDEV_TX_BUSY<\/code>. \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>ena_com_prepare_tx<\/code> \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/blob\/ena_linux_2.4.0\/kernel\/linux\/common\/ena_com\/ena_eth_com.c#L395\"> <u>\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438<\/u><\/a>. \u0415\u0441\u043b\u0438 \u043e\u043d\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0430,<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/blob\/ena_linux_2.4.0\/kernel\/linux\/ena\/ena_netdev.c#L199\"> <u>\u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430<\/u><\/a> \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u0432\u0435\u0440\u0445<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/blob\/ena_linux_2.4.0\/kernel\/linux\/ena\/ena_netdev.c#L3571\"><u> \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435<\/u><\/a>, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0441\u043d\u0438\u043c\u0430\u0435\u0442 (unmap)<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/blob\/ena_linux_2.4.0\/kernel\/linux\/ena\/ena_netdev.c#L3624\"><u> DMA, \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 NETDEV_TX_OK<\/u><\/a>. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 <code>NETDEV_TX_BUSY<\/code> \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0438 <code>pfifo_fast<\/code>, \u043d\u0438 noqueue \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 back-pressure. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u0431\u043e\u0442\u0430 \u043e \u043f\u0430\u043a\u0435\u0442\u0435 \u0432\u043e\u0437\u043b\u043e\u0436\u0435\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0432\u0440\u043e\u0434\u0435 TCP. \u041e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0430\u043a\u0435\u0442 \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433 \u043f\u0443\u043d\u043a\u0442\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e.<\/p>\n<p>\u0427\u0442\u043e \u0436, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043c \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u0441\u0442\u0430. \u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f iPerf \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441: <code>iperf3 -c 10.XXX.XXX.XXX -P 10 -t 5 -M 88 -p 5200<\/code>. iPerf \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u044b \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e, \u0447\u0442\u043e \u0440\u0435\u0437\u043a\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438. \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 <code>bpftrace<\/code> \u043f\u043e\u043c\u043e\u0433 \u043c\u043d\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0431\u044b\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e (1024 \u0437\u0430\u043f\u0438\u0441\u0438) \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 <code>dmesg<\/code>, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u043e\u0442 \u044f\u0434\u0440\u0430, \u044f \u0441 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u044d\u0442\u043e: <code>Virtual device eth0 asks to queue packet!<\/code>\u00a0.<\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043a\u043e\u0434 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 ENA \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442, \u043a\u0430\u043a \u0441\u0447\u0438\u0442\u0430\u043b\u043e\u0441\u044c. <strong>\u0421\u0440\u0430\u0437\u0443<\/strong> \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/blob\/ena_linux_2.4.0\/kernel\/linux\/ena\/ena_netdev.c#L3578\"> <u>\u0442\u0435\u0441\u0442, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043b\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c<\/u><\/a> \u0432 <strong>\u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442<\/strong>. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0430\u043a,<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/blob\/ena_linux_2.4.0\/kernel\/linux\/ena\/ena_netdev.c#L3583\"> <u>\u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f<\/u><\/a>, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0430\u043a\u043e\u043f\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u0430\u043a\u0435\u0442<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/core\/dev.c#L3474\"> <u>\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c<\/u><\/a>. \u041a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 qdisc, \u044f\u0434\u0440\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e, \u0432\u043e\u0437\u043b\u0430\u0433\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043e\u0442\u0441\u044b\u043b\u043a\u0435 \u043d\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f.<\/p>\n<p>\u041a \u0441\u043b\u043e\u0432\u0443, \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430, \u0438 \u0434\u0430\u0436\u0435 \u0432 \u043d\u0435\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043e \u0432\u0441\u0435\u0433\u043e 500-1000 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438\u0437 9 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0445\u043e\u0434\u0435 \u0442\u0435\u0441\u0442\u0430. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0431\u043e\u0447\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 <code>noqueue<\/code>. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u0415\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443: \u043d\u0435 \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u044d\u0442\u043e\u0433\u043e \u0432 production!<\/p>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 noqueue \u0434\u0430\u043b \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 2%. \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u0430\u0441\u044c \u0441 1.12M RPS \u0434\u043e 1.15M RPS.<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency   213.19us   25.10us  801.00us   77.00us   68.52%     Req\/Sec    72.56k   744.45     74.36k    70.37k    65.09%   Latency Distribution   50.00%  212.00us   90.00%  246.00us   99.00%  276.00us   99.99%  338.00us   11551707 requests in 10.00s, 1.57GB read Requests\/sec: 1155162.15 Transfer\/sec:    160.84MB<\/code><\/pre>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430<\/h4>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>_raw_spin_lock<\/code> \u0441\u0442\u0435\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 <code>sendto<\/code>, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u0431\u0435\u0436\u0434\u0435\u043d\u0430. \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 <code>_raw_spin_lock<\/code> \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 <code>__dev_queue_xmit<\/code>, \u043d\u043e \u043e\u043d \u0432\u0435\u0441\u0438\u0442 \u0432\u0441\u0435\u0433\u043e 0,3% \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0447\u0443\u0434\u043e\u0432\u0438\u0449\u043d\u044b\u043c\u0438 5,4% \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/071\/be0\/07a\/071be007a00e820488e16cab4aba2d03.png\" width=\"800\" height=\"331\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/071\/be0\/07a\/071be007a00e820488e16cab4aba2d03.png\"\/><figcaption><\/figcaption><\/figure>\n<h4>\u041d\u0430\u0432\u044f\u0437\u0447\u0438\u0432\u0430\u044f \u0438\u0434\u0435\u044f \u043e\u0431\u0440\u0435\u0442\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0444\u043e\u0440\u043c\u0443<\/h4>\n<p>\u042f \u0431\u044b\u043b \u0440\u0430\u0434 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 <code>_raw_spin_lock<\/code>, \u043d\u043e \u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0431\u044b\u043b\u043e \u0440\u0430\u043d\u043e. \u041a\u043e\u0435-\u0447\u0442\u043e \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0435 \u0434\u0430\u0432\u0430\u043b\u043e \u043c\u043d\u0435 \u043f\u043e\u043a\u043e\u044f. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0436\u0435 \u043f\u0440\u0438\u0440\u043e\u0441\u0442\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0441\u0442\u043e\u043b\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0441\u0435 \u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043d\u0430 2%. \u041f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0442\u0430\u0438\u043b\u043e \u0432 \u0441\u0435\u0431\u0435 \u0441\u044e\u0440\u043f\u0440\u0438\u0437: \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432\u043a\u043b\u0430\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>tcp_event_new_data_sent<\/code> \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0432\u044b\u0440\u043e\u0441 \u0441 1,1% \u0434\u043e 5,1%. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u043f\u043e\u0431\u0435\u0434\u0438\u043b, \u00ab\u0432\u0440\u0430\u0433\u00bb \u043f\u0440\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<p>\u041f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u0432 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u043e\u0447\u0430\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0433\u043e, \u044f \u0441 \u0443\u0434\u0432\u043e\u0435\u043d\u043d\u043e\u0439 \u044d\u043d\u0435\u0440\u0433\u0438\u0435\u0439 \u043d\u0430\u0447\u0430\u043b \u0430\u0442\u0430\u043a\u043e\u0432\u0430\u0442\u044c <code>tcp_event_new_data_sent<\/code>. \u0411\u044b\u043b \u0434\u043e\u0441\u043a\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0435\u043d<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/ipv4\/tcp_output.c#L69\"> <u>\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434<\/u><\/a> (\u0443\u0432\u044b, \u0431\u0435\u0437\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043d\u043e). \u0411\u044b\u043b \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d \u0430\u043d\u0430\u043b\u0438\u0437 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>bpftrace<\/code>: \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437 \u0438 \u043f\u0440\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445. \u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u043d\u0435 \u0443\u0432\u0435\u043d\u0447\u0430\u043b\u0438\u0441\u044c \u0443\u0441\u043f\u0435\u0445\u043e\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u043d\u0438\u043c\u0430\u043b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u0435\u043d\u044f \u043f\u043e\u0441\u0435\u0442\u0438\u043b\u0430 \u0438\u0434\u0435\u044f: \u0432\u0434\u0440\u0443\u0433 \u044d\u0442\u043e \u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442 \u043e\u0442 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 perf\u2019\u043e\u043c? \u0421\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u043b\u043e\u0441\u044c \u043d\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 (99 \u0413\u0446), \u043d\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435. 49 \u0413\u0446, 173 \u0413\u0446, 263 \u0413\u0446 \u2013 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0438\u0434\u0435\u044f: \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0433\u0438\u043f\u0435\u0440\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e? \u041e\u043a\u0435\u0439, \u043c\u0435\u043d\u044f\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e\u0439 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0432\u044f\u0437\u043a\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\/CPU 0 \u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\/CPU 1 (\u0432 \u044d\u0442\u043e\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 0 \u0438 1 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u044f\u0434\u0440\u0430\u043c), \u0438 \u043f\u0440\u043e\u0431\u0443\u0435\u043c. \u041a \u043c\u043e\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e, \u044d\u0442\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u0434\u043e\u043b\u044f <code>tcp_event_new_data_sent<\/code> \u0443\u043f\u0430\u043b\u0430 \u043f\u043e\u0447\u0442\u0438 \u0434\u043e 1%. \u041a \u043c\u043e\u0435\u043c\u0443 \u0443\u0436\u0430\u0441\u0443, \u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u044f\u043b \u043d\u043e\u0432\u044b\u0439 \u0437\u0432\u0435\u0440\u044c: <code>release_sock<\/code> \u043f\u043e\u0434\u0441\u043a\u043e\u0447\u0438\u043b \u0441 1% \u0434\u043e \u043f\u043e\u0447\u0442\u0438<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/release_sock.svg\"> <u>7%<\/u><\/a>. \u041e\u0442\u0431\u0440\u043e\u0441\u0438\u0432 \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u0445\u0438 \u0438 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f, \u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043b. \u0422\u0435\u043f\u0435\u0440\u044c \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0442\u0435\u0441\u0442\u044b \u0441 <em>\u0433\u0438\u043f\u0435\u0440\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e<\/em>, \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u0421\u043a\u0430\u0437\u0430\u043d\u043e \u2013 \u0441\u0434\u0435\u043b\u0430\u043d\u043e: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0441 1 \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u043d\u0430 \u044f\u0434\u0440\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e<a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/instance-optimize-cpu.html\"> <u>\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 CPU<\/u><\/a>, \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0442\u0435\u0441\u0442\u044b, \u0440\u0438\u0441\u0443\u0435\u043c Flame-\u0433\u0440\u0430\u0444\u0438\u043a. <code>tcp_event_new_data_sent<\/code> \u0438 <code>release_sock<\/code> \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u0441\u044c \u0432 \u043d\u043e\u0440\u043c\u0443, \u043d\u043e \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 <code>tcp_schedule_loss_probe<\/code> \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0441\u043a\u043e\u0447\u0438\u043b \u0434\u043e<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/tcp_schedule_loss_probe.svg\"> <u>11%<\/u><\/a>. \u0427\u0442\u043e \u0437\u0430\u2026?!<\/p>\n<p>\u041a \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u0438\u043d\u0443\u0442\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0430 \u043f\u0440\u0438\u0447\u0443\u0434\u043b\u0438\u0432\u0443\u044e \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0443\u044e \u0442\u0440\u0430\u0433\u0435\u0434\u0438\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0433\u0435\u0440\u043e\u0439 \u043e\u0431\u0440\u0435\u0447\u0435\u043d \u0432\u0435\u0447\u043d\u043e \u0441\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0441 \u0433\u0438\u0434\u0440\u043e\u0439, \u0433\u043e\u043b\u043e\u0432\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043d\u043e\u0432\u043e \u043e\u0442\u0440\u0430\u0441\u0442\u0430\u044e\u0442 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u044f. \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0442\u044c \u043c\u043d\u0435 \u0443\u0440\u043e\u043a. \u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0438 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0438\u0447\u044c, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0443\u0441\u043a\u043e\u043b\u044c\u0437\u0430\u044e\u0449\u0438\u0445 \u00ab5 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445\u00bb. \u041f\u043e\u0440\u0430 \u0431\u044b\u043b\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0430 \u0431\u043e\u0440\u044c\u0431\u0443 \u0441 \u0433\u0438\u0434\u0440\u043e\u0439 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043f\u043e\u0442\u043e\u043c.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u0432 \u0447\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438 \u043a\u0430\u043a \u0435\u0435 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u044c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0434\u0430\u0439\u0442\u0435 \u043c\u043d\u0435 \u0437\u043d\u0430\u0442\u044c:<a href=\"https:\/\/news.ycombinator.com\/item?id=27226382\"> <u>Hacker News<\/u><\/a> |<a href=\"https:\/\/www.reddit.com\/r\/aws\/comments\/nha53i\/extreme_http_performance_tuning_12m_api_reqs_on_a\/\"> <u>Reddit<\/u><\/a> |<a href=\"https:\/\/talawah.io\/contact\/\"> <u>Direct<\/u><\/a>.<\/p>\n<h3>9. \u0412\u0441\u0451 \u0431\u043b\u0438\u0437\u0438\u0442\u0441\u044f \u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e<\/h3>\n<p>\u042f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0442\u0440\u0438\u043e \u043a\u0430\u043a \u043c\u0435\u043b\u043a\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0449\u0438\u0435 \u00ab\u0432\u044b\u0436\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043a\u0430\u043f\u043b\u044e\u00bb \u0438\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043e\u043d\u0438 <strong>\u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f (\u0438 \u044d\u0442\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e)<\/strong>.<\/p>\n<h4>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Generic Receive Offload (GRO)<\/h4>\n<p><a href=\"https:\/\/lwn.net\/Articles\/358910\/\"><u>GRO<\/u><\/a> \u2014 \u044d\u0442\u043e \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430\u044f \u0433\u0438\u0431\u043a\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u044f\u0434\u0440\u0430. \u0421\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f userland-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445. \u0418\u0434\u0435\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0430 \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u044f\u0434\u0440\u0430, \u043f\u043e\u0432\u044b\u0448\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043b\u0443\u0447\u0448\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c (\u0438 \u043e\u043d \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 Amazon Linux 2). \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u0430 \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u043e\u0442\u0432\u0435\u0442\u044b, \u043a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u043f\u0430\u043a\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0442\u0430\u043a\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442. \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 GRO \u0432\u044b\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 <code>dev_gro_receive<\/code>.<\/p>\n<pre><code>sudo ethtool -K eth0 gro off<\/code><\/pre>\n<h4>\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043e\u043a TCP<\/h4>\n<p>Linux \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0434\u043b\u044f<a href=\"https:\/\/en.wikipedia.org\/wiki\/TCP_congestion_control\"> <u>\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0437\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e TCP<\/u><\/a>. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0432\u043e\u044e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0435\u0442\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0432\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438 \u0438 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0435\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 (Wi-Fi, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435, \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u043e\u0432\u044b\u0435), \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u0412 \u0441\u0435\u0442\u0438 \u0441 \u043d\u0438\u0437\u043a\u0438\u043c\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u0438 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043e\u043a (\u0432\u0440\u043e\u0434\u0435 \u0441\u0435\u0442\u0438 \u0432 AWS cluster placement group, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0432 \u044d\u0442\u043e\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435) \u0438\u0445 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430.<\/p>\n<p>\u0421\u043f\u0435\u0440\u0432\u0430 \u044f \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043e\u043a \u043a\u0430\u043a \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 \u043d\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e, \u043d\u043e \u043f\u043e\u0442\u043e\u043c \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0438\u0434\u0435\u044f: \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 \u0441\u0435\u0442\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043a\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430\u043c\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0442\u043e\u0442, \u0447\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043e\u043a?<\/p>\n<p>Amazon Linux 2 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0434\u0432\u0443\u043c\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430\u043c\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u043e\u0439: <em>reno<\/em> \u0438 <em>cubic<\/em>. Reno (\u043e\u043d \u0436\u0435 NewReno) \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432 \u044f\u0434\u0440\u043e; \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b. Reno \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a Reno.<a href=\"https:\/\/en.wikipedia.org\/wiki\/CUBIC_TCP\"> <u>Cubic<\/u><\/a> \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0432\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c. \u0412 Amazon Linux 2 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0446\u0438\u0439 <code>tcp_congestion_ops<\/code> \u0434\u043b\u044f<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/ipv4\/tcp_cong.c#L472\"> <u>reno<\/u><\/a> \u0438<a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/v4.14\/net\/ipv4\/tcp_cubic.c#L457\"> <u>cubic<\/u><\/a>, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e reno \u043f\u0440\u043e\u0449\u0435. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0441 cubic \u043d\u0430 reno \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443, \u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<pre><code>sudo sysctl net.ipv4.tcp_congestion_control=reno<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u043e\u0439, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 <em>vegas<\/em>, <em>highspeed<\/em> \u0438 <em>bbr<\/em>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u044f\u0434\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>modprobe tcp_bbr<\/code>. \u041d\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u043d\u0435 \u0441\u043c\u043e\u0433 \u043e\u043f\u0435\u0440\u0435\u0434\u0438\u0442\u044c Reno.<\/p>\n<h4>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439<\/h4>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 adaptive-rx \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u0435\u043d, \u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 overhead \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u0432\u0441\u0435\u0433\u043e 256 usecs. \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 adaptive-rx \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438. \u041c\u0435\u0442\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0431 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u044f \u043d\u0430\u0448\u0435\u043b \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u2014 300 usecs (\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430).<\/p>\n<p>\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 rx-usecs \u043e\u043a\u0430\u0436\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u043f\u0440\u0438 \u0431\u043e\u043b\u0435\u0435 \u043b\u0435\u0433\u043a\u0438\u0445 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ping-\u0442\u0435\u0441\u0442\u0430\u0445). \u0422\u0430\u043a\u0436\u0435 \u043e\u043d\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 BPF \u0438\u043b\u0438 busy polling\u2019\u0430 (\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u0440\u0435\u0448\u0438\u0442\u0435 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u043c). \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u044d\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d CloudFormation.<\/p>\n<pre><code>sudo ethtool -C eth0 adaptive-rx off sudo ethtool -C eth0 rx-usecs 300 sudo ethtool -C eth0 tx-usecs 300<\/code><\/pre>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h4>\n<p>\u0417\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043d\u0430 4%. \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u0430 \u0441 1,15 \u043c\u043b\u043d \u0434\u043e 1,2 \u043c\u043b\u043d RPS.<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency   204.24us   23.94us  626.00us   70.00us   68.70%     Req\/Sec    75.56k   587.59     77.05k    73.92k    66.22%   Latency Distribution   50.00%  203.00us   90.00%  236.00us   99.00%  265.00us   99.99%  317.00us   12031718 requests in 10.00s, 1.64GB read Requests\/sec: 1203164.22 Transfer\/sec:    167.52MB<\/code><\/pre>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0430<\/h4>\n<p>\u041d\u0430 \u043d\u0435\u043c \u0432\u044b \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. <code>dev_gro_receive<\/code> \u043f\u0440\u043e\u0441\u0435\u043b\u0430 \u0441 1,4% \u0434\u043e 0,1%. <code>bictcp_acked<\/code> (\u043e\u0434\u043d\u0430 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c cubic) \u0440\u0430\u043d\u044c\u0448\u0435 \u00ab\u0441\u044a\u0435\u0434\u0430\u043b\u0430\u00bb 0,3%, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u0447\u0435\u0437\u043b\u0430 \u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/90a\/a05\/0aa\/90aa050aae8115f489740df5b88b6d9a.png\" width=\"800\" height=\"315\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/90a\/a05\/0aa\/90aa050aae8115f489740df5b88b6d9a.png\"\/><figcaption><\/figcaption><\/figure>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0418\u0442\u0430\u043a, \u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u043c\u044b \u043f\u0440\u0438\u0431\u044b\u043b\u0438 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u043b\u0433\u043e\u0435, \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u043e\u0435 \u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435, \u043d\u043e \u043e\u043d\u043e \u0442\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u043b\u043e. \u041f\u043e \u043f\u0443\u0442\u0438 \u044f \u043c\u043d\u043e\u0433\u043e\u043c\u0443 \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u0438 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u0435\u043d \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c. \u0427\u0438\u0441\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0432\u044b\u0440\u043e\u0441\u043b\u043e \u043d\u0430 436%, \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 p99 \u0441\u043d\u0438\u0437\u0438\u043b\u0430\u0441\u044c \u043d\u0430 79% \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0442\u0430\u043a \u0431\u044b\u043b \u0431\u044b\u0441\u0442\u0440\u044b\u043c.<\/p>\n<p>\u0421 \u0447\u0435\u0433\u043e \u0432\u0441\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c:<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency     1.14ms   58.95us    1.45ms    0.96ms   61.61%     Req\/Sec    14.09k   123.75     14.46k    13.81k    66.35%   Latency Distribution   50.00%    1.14ms   90.00%    1.21ms   99.00%    1.26ms   99.99%    1.32ms   2243551 requests in 10.00s, 331.64MB read Requests\/sec: 224353.73 Transfer\/sec:     33.16MB<\/code><\/pre>\n<p>\u041a \u0447\u0435\u043c\u0443 \u044f \u043f\u0440\u0438\u0448\u0435\u043b:<\/p>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json   16 threads and 256 connections   Thread Stats   Avg     Stdev       Max       Min   +\/- Stdev     Latency   204.24us   23.94us  626.00us   70.00us   68.70%     Req\/Sec    75.56k   587.59     77.05k    73.92k    66.22%   Latency Distribution   50.00%  203.00us   90.00%  236.00us   99.00%  265.00us   99.99%  317.00us   12031718 requests in 10.00s, 1.64GB read Requests\/sec: 1203164.22 Transfer\/sec:    167.52MB<\/code><\/pre>\n<h4>libreactor vs \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0438\u0440<\/h4>\n<p>\u041d\u0430 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u043d\u0438\u0436\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f (\u0440\u0430\u0443\u043d\u0434 18) \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f (\u0440\u0430\u0443\u043d\u0434 20) \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 libreactor \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 (\u0438\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445) \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 Techempower JSON \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043d\u0430 \u0440\u0430\u0443\u043d\u0434 20.<\/p>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 11 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0430 c5n.xlarge \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e AMI Amazon Linux 2 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u041e\u0421\/\u0441\u0435\u0442\u0438. \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 18 \u0438 20 \u0440\u0430\u0443\u043d\u0434\u0430\u043c\u0438, \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0432\u0435\u0441\u0442\u0438 libreactor \u0432 \u043b\u0438\u0434\u0435\u0440\u044b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b1f\/60f\/752\/b1f60f752a0eb41bbfd797a83c724d2f.png\" width=\"800\" height=\"417\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b1f\/60f\/752\/b1f60f752a0eb41bbfd797a83c724d2f.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u041e\u0421\/\u0441\u0435\u0442\u0438 \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u0438 \u043d\u0430 \u0432\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u0432\u0438\u0434\u043d\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u044d\u0442\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0447\u0435\u0442\u0430\u044e\u0442\u0441\u044f \u0441 libreactor&#8217;\u043e\u043c 20 \u0440\u0430\u0443\u043d\u0434\u0430, \u0435\u0449\u0435 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044f \u0435\u0433\u043e \u043e\u0442\u0440\u044b\u0432 \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432. \u041d\u0438\u0436\u043d\u0438\u0439 (\u0442\u0435\u043c\u043d\u044b\u0439) \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u00a0 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0434\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u041e\u0421\/\u0441\u0435\u0442\u0438 (\u0442.\u0435. \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0443\u043d\u043a\u0442\u0435).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b34\/a2d\/8bc\/b34a2d8bccebc992141ea5c38e4f2d78.png\" alt=\"* \u041e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u043a \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c \u0438\u0437-\u0437\u0430 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f.\" title=\"* \u041e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u043a \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c \u0438\u0437-\u0437\u0430 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f.\" width=\"800\" height=\"417\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b34\/a2d\/8bc\/b34a2d8bccebc992141ea5c38e4f2d78.png\"\/><figcaption>* \u041e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u043a \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c \u0438\u0437-\u0437\u0430 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f.<\/figcaption><\/figure>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442<a href=\"https:\/\/www.techempower.com\/benchmarks\/#section=data-r20&amp;hw=ph&amp;test=json\"> <u>\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/u><\/a> 20-\u0433\u043e \u0440\u0430\u0443\u043d\u0434\u0430 Techempower JSON \u0438\u0437-\u0437\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0412 \u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0441\u0442\u0435\u043d\u0434\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u0447\u0442\u043e \u0438 \u0441\u0435\u0440\u0432\u0435\u0440, \u0438 \u0434\u043b\u044f JSON-\u0442\u0435\u0441\u0442\u0430<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/issues\/5207\"> <u>\u043e\u043d \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0443\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c<\/u><\/a>. \u0412\u0441\u0435 \u0434\u0435\u0441\u044f\u0442\u044c \u0442\u043e\u043f-\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u00ab\u0441\u0440\u0435\u0437\u0430\u044e\u0442\u0441\u044f\u00bb \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 1,6 \u043c\u043b\u043d RPS. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0432 \u043d\u0430<a href=\"https:\/\/ajdust.github.io\/tfbvis\/?testrun=Citrine_started2020-12-29_f78282e3-ed37-4e7c-9862-3163de23b23b&amp;testtype=json&amp;round=false\"> <u>\u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 CPU \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/u><\/a> \u0432 20-\u043c \u0440\u0430\u0443\u043d\u0434\u0435. Libreactor \u00ab\u0441\u044a\u0435\u043b\u00bb \u0432\u0441\u0435\u0433\u043e 47% \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a ulib-json_fit \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b 75%, \u0430 pico.v \u2014 90%.<\/p>\n<p>Techempower \u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f JSON-\u0442\u0435\u0441\u0442\u043e\u0432. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0424\u0440\u0435\u0434\u0440\u0438\u043a \u0412\u0438\u0434\u043b\u0443\u043d\u0434 (Fredrik Widlund) \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 wrk \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c<a href=\"https:\/\/github.com\/fredrikwidlund\/pounce\"> <u>pounce<\/u><\/a> \u043d\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 libreactor. \u041c\u043e\u0438 \u0433\u0440\u0443\u0431\u044b\u0435 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043e\u043d \u043d\u0430 20-30% \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c wrk, \u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Techempower.<\/p>\n<h4>\u0421\u043e\u0432\u0435\u0442 \u043e\u0442 \u0443\u0441\u0442\u0430\u043b\u043e\u0433\u043e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u0430<\/h4>\n<p>\u042d\u0442\u043e \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u043c\u043e\u0438\u043c \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u043e\u043c, \u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0435\u0443\u0442\u043e\u043c\u0438\u043c\u043e\u0439 \u043d\u0430\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c\u044e; \u043d\u043e \u044f \u0434\u043e\u0431\u0438\u043b\u0441\u044f \u0443\u0441\u043f\u0435\u0445\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u043b \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f, \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u042f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 (\u0438 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0438\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c). \u041a\u043e\u0433\u0434\u0430 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0441\u0440\u0430\u0441\u0442\u0430\u043b\u043e\u0441\u044c, <code>bpftrace<\/code> \u043f\u043e\u043c\u043e\u0433\u0430\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u044b \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0422\u0435\u043c, \u043a\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u0438\u0434\u0435\u0439 \u043f\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0430\u0443\u0434\u0438\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438\u043b\u0438 seccomp, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 Flame-\u0433\u0440\u0430\u0444\u0438\u043a \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0430\u043a\u043e\u0432 \u0432\u043a\u043b\u0430\u0434 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043e\u043d \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0435\u043d. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c Flame-\u0433\u0440\u0430\u0444\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435 \u0443\u0437\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0438\u043b\u0438 \u0434\u0430\u0441\u0442 \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u041e\u0421 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c.<\/p>\n<h4>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435?<\/h4>\n<p>\u041a\u0430\u043a \u0431\u044b \u044f \u043d\u0438 \u0431\u044b\u043b \u0434\u043e\u0432\u043e\u043b\u0435\u043d \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c, \u043c\u0435\u043d\u044f \u0442\u0435\u0440\u0437\u0430\u044e\u0442 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f: \u0432\u0434\u0440\u0443\u0433 \u044f \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b? \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435 \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u0445 (\u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b. \u041d\u043e \u0441\u043f\u0435\u0440\u0432\u0430 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 (\u0441\u043c. \u043d\u0438\u0436\u0435).<\/p>\n<p>\u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434, \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u043b\u0430\u043d\u044b \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c ARM \u0438 Intel, \u00ab\u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0432 \u043b\u0431\u0430\u043c\u0438\u00bb<a href=\"https:\/\/aws.amazon.com\/ec2\/instance-types\/c6\/\"> <u>c6gn \u043d\u0430 \u0431\u0430\u0437\u0435 Graviton2<\/u><\/a> \u0438 c5n (\u0438 \u043d\u043e\u0432\u044b\u0439<a href=\"https:\/\/aws.amazon.com\/about-aws\/whats-new\/2020\/12\/introducing-amazon-ec2-m5zn-instances\/\"> <u>m5zn<\/u><\/a>). \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0430<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/issues\/159\"> <u>\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0441\u0435\u0442\u044c\u044e c6gn<\/u><\/a>. \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u044b\u0441\u043b\u044c \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u0441\u044f \u043a io_uring \u043a\u0430\u043a \u043a \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435 epoll.<a href=\"https:\/\/talawah.io\/contact\/\"> <u>\u0414\u0430\u0439\u0442\u0435 \u043c\u043d\u0435 \u0437\u043d\u0430\u0442\u044c<\/u><\/a>, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0434\u0435\u0438 \u043e \u0442\u043e\u043c, \u0447\u0435\u043c \u043c\u043d\u0435 \u0435\u0449\u0435 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<h4>\u041c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f!<\/h4>\n<p>\u041a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u043d\u0435\u0435, 15 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0431\u044b\u043b\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0430\u0445\u0430. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0431\u044b \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u043c\u0443 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043c\u043e\u0439 \u043e\u043f\u044b\u0442 \u0431\u044b\u043b\u043e \u0431\u044b \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0412\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c.<\/p>\n<p>\u041a\u0430\u043a\u0438\u043c\u0438 \u0431\u044b \u0444\u0430\u043d\u0442\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043d\u0438 \u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u043e\u0440\u0438\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u0430\u044f \u043d\u0430 \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c, \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439, \u0443 \u043a\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0434\u0435\u043d\u0435\u0433, \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/#cloudformation-template\"> <u>\u044d\u0442\u0438\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c<\/u><\/a> \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043c\u043e\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438. \u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043e\u043f\u044b\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 AWS\/CloudFormation \u044d\u0442\u043e \u0437\u0430\u0439\u043c\u0435\u0442 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u043e\u0438\u0442 \u043e\u043a\u043e\u043b\u043e \u0434\u043e\u043b\u043b\u0430\u0440\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u043b\u0430\u0447\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c, \u043f\u043e\u0438\u0441\u0442\u0438\u043d\u0435 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0442.<\/p>\n<h4>\u041e\u0441\u043e\u0431\u0430\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c<\/h4>\n<p>\u042f \u0445\u043e\u0447\u0443 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0430\u043c \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0432 \u0431\u043b\u043e\u0433\u0430\u0445, \u0441\u0442\u0430\u0442\u0435\u0439, \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0439 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0438\u0437\u0443\u0447\u0438\u043b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430. \u041d\u0438\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c, \u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043e\u0441\u043e\u0431\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435\u043c\u0447\u0443\u0436\u0438\u043d:<\/p>\n<ol>\n<li>\n<p>\u0421\u0435\u0440\u0434\u0435\u0447\u043d\u0430\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u043d\u044f\u043c \u0438\u0437<a href=\"http:\/\/packagecloud.io\/\"> <u>packagecloud.io<\/u><\/a>, \u0447\u0435\u0439<a href=\"https:\/\/blog.packagecloud.io\/eng\/2016\/06\/22\/monitoring-tuning-linux-networking-stack-receiving-data\"> <u>\u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 Linux<\/u><\/a> \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u0435\u043d. \u0421\u043f\u0435\u0440\u0432\u0430 \u043e\u043d \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043c\u043d\u0435 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0439 \u0433\u0440\u0430\u043c\u043e\u0442\u043e\u0439, \u043d\u043e \u043f\u043e\u0442\u043e\u043c, \u0432\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0441\u044c, \u044f \u043e\u0446\u0435\u043d\u0438\u043b \u0435\u0433\u043e \u043f\u043e \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0443. \u0425\u043e\u0442\u044f \u0440\u0430\u0437\u0431\u043e\u0440 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0434\u043b\u044f \u044f\u0434\u0440\u0430 3.13, \u043e\u043d \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0430\u043a\u0442\u0443\u0430\u043b\u0435\u043d \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u0435\u043d (\u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 UDP \u0432\u043c\u0435\u0441\u0442\u043e TCP, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e).<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0443\u044e \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044e<a href=\"https:\/\/events.static.linuxfound.org\/sites\/events\/files\/slides\/LinuxConJapan2016_makita_160712.pdf\"> <u>Boost UDP Transaction Performance<\/u><\/a> \u043e\u0442 \u0422\u043e\u0448\u0438\u0430\u043a\u0438 \u041c\u0430\u043a\u0438\u0442\u044b (Toshiaki Makita). \u041e\u043d\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0443\u0437\u043a\u0438\u0445 \u043c\u0435\u0441\u0442 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0438 \u0441\u0442\u0430\u043b\u0430 \u0441\u0442\u0438\u043c\u0443\u043b\u043e\u043c \u0432 \u043c\u043e\u0435\u043c \u0441\u0442\u0440\u0435\u043c\u043b\u0435\u043d\u0438\u0438 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043e\u0442\u043c\u0435\u0442\u043a\u0438 \u0432 1 \u043c\u043b\u043d RPS, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b \u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0442\u0443\u043c\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/brendangregg\/FlameGraph\"><u>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/u><\/a> Flamegraph<a href=\"http:\/\/www.brendangregg.com\/flamegraphs.html\"> <u>\u0411\u0440\u0435\u043d\u0434\u0430\u043d\u0430 \u0413\u0440\u0435\u0433\u0433\u0430 (Brendan Gregg)<\/u><\/a> \u0438 \u0435\u0433\u043e \u043a\u043d\u0438\u0433\u0430<a href=\"http:\/\/www.brendangregg.com\/bpf-performance-tools-book.html\"> <u>BPF Performance Tools<\/u><\/a> \u0441\u044b\u0433\u0440\u0430\u043b\u0438 \u0432\u0430\u0436\u043d\u0443\u044e \u0440\u043e\u043b\u044c. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b FlameGraph \u0438 <code>bcc<\/code>\/<code>bpftrace<\/code> \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u043c\u0441\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u0435\u0434\u0448\u0435\u0435 \u0432\u0442\u043e\u0440\u043e\u0435 \u0438\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043d\u0438\u0433\u0438 \u0411\u0440\u0435\u043d\u0434\u0430\u043d\u0430<a href=\"http:\/\/www.brendangregg.com\/systems-performance-2nd-edition-book.html\"> <u>Systems Performance: Enterprise and the Cloud<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e<a href=\"https:\/\/github.com\/fredrikwidlund\"> <u>Fredrik Widlund<\/u><\/a> \u0438<a href=\"https:\/\/glozer.net\/\"> <u>Will Glozer<\/u><\/a> \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435<a href=\"https:\/\/github.com\/fredrikwidlund\/libreactor\"> <u>libreactor<\/u><\/a> \u0438<a href=\"https:\/\/github.com\/wg\"> <u>wrk<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u044f\u0434\u0440\u0430 Linux, \u0447\u044c\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u043e\u043c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0441\u0451 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0431\u044b \u043a\u0442\u043e-\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u043b \u043c\u043d\u0435 \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434, \u0447\u0442\u043e \u044f \u0431\u0443\u0434\u0443 \u0447\u0430\u0441\u0430\u043c\u0438 \u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u044f\u0434\u0440\u0430, \u044f \u0431\u044b, \u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043d\u0435 \u043f\u043e\u0432\u0435\u0440\u0438\u043b \u0435\u043c\u0443.<\/p>\n<\/li>\n<\/ol>\n<p>\u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u043d\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e\u0435: \u043e\u0441\u043e\u0431\u0430\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0438\u043c \u0440\u0435\u0446\u0435\u043d\u0437\u0435\u043d\u0442\u0430\u043c Kenia, Nesta, Andre, Crafton, Kaiton, Dionne, Kwaku \u0438 Monique.<\/p>\n<h3>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438<\/h3>\n<p>\u0412\u043e\u0442 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b, \u043d\u043e \u043e\u043d\u0438 \u043d\u0435\u00a0 \u043f\u0440\u0438\u043d\u0435\u0441\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>libreactor:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a libreactor \u0431\u0435\u0437 Docker&#8217;\u0430 (\u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b);<\/p>\n<\/li>\n<li>\n<p>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>writev<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>send<\/code> (\u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442);<\/p>\n<\/li>\n<li>\n<p>\u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f <code>maxevents<\/code> \u0441 <code>epoll_wait<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 <code>gcc<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 <code>march<\/code>\/<code>mtune<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0444\u043b\u0430\u0433\u0438 gcc;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u042f\u0434\u0440\u043e:<\/p>\n<ul>\n<li>\n<p>\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e 4.19 (Amazon Linux 2);<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e 5.4 (Amazon Linux 2 \u0438 Ubuntu 20.04);<\/p>\n<\/li>\n<li>\n<p>\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438 <code>SCHED_FIFO<\/code> \u0438 <code>SCHED_RR<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>kernel.sched_min_granularity_ns<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>kernel.sched_wakeup_granularity_ns<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>transparent_hugepages=never<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>skew_tick=1<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>clocksource=tsc<\/code>;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0421\u0435\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0434\u0440\u0430\u0439\u0432\u0435\u0440 ENA:<\/p>\n<ul>\n<li>\n<p>\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u0440\u0430\u0437\u0431\u0440\u043e\u0441-\u0441\u0431\u043e\u0440 (scatter-gather), \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 rx\/tx);<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f <code>ena<\/code> \u0441 <code>-O3<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b ENA:<\/p>\n<ul>\n<li>\n<p><code>ena.rx_queue_size<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>ena.force_large_llq_header<\/code>;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 IPv6: <code>ipv6.disable=1<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 VLAN: <code>sudo modprobe -rv 8021q<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430:<\/p>\n<ul>\n<li>\n<p><code>net.ipv4.conf.all.rp_filter=0<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>net.ipv4.conf.eth0.rp_filter=0<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>net.ipv4.conf.all.accept_local=1<\/code> (\u0443\u0445\u0443\u0434\u0448\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u0443 perf);<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><code>net.ipv4.tcp_sack=0<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>net.ipv4.tcp_dsack=0<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>net.ipv4.tcp_mem<\/code>\/<code>tcp_wmem<\/code>\/<code>tcp_rmem<\/code> (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e);<\/p>\n<\/li>\n<li>\n<p><code>net.core.netdev_budget<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>net.core.dev_weight<\/code> (\u043d\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 RPS);<\/p>\n<\/li>\n<li>\n<p><code>net.core.netdev_max_backlog<\/code> (\u043d\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 RPS);<\/p>\n<\/li>\n<li>\n<p><code>net.ipv4.tcp_slow_start_after_idle=0<\/code> (\u043d\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e);<\/p>\n<\/li>\n<li>\n<p><code>net.ipv4.tcp_moderate_rcvbuf=0<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>net.ipv4.tcp_timestamps=0<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>net.ipv4.tcp_low_latency=1<\/code> (legacy-\u043e\u043f\u0446\u0438\u044f);<\/p>\n<\/li>\n<li>\n<p><code>SO_PRIORITY<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>TCP_NODELAY<\/code>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430<\/h3>\n<h4>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f<\/h4>\n<p>\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u043d\u0438\u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u00ab\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u00bb.<\/p>\n<p><strong>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435<\/strong><\/p>\n<ul>\n<li>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 (\u043a\u043b\u0438\u0435\u043d\u0442 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440):<\/p>\n<ul>\n<li>\n<p>EC2 AMI: <code>amzn2-ami-hvm-2.0.20210126.0-x86_64-gp2<\/code>;<\/p>\n<\/li>\n<li>\n<p>Linux sysctls:<\/p>\n<ul>\n<li>\n<p><code>vm.swappiness=0<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>vm.dirty_ratio=80<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>net.core.somaxconn=2048<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>net.ipv4.tcp_max_syn_backlog=10000<\/code>;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>amazon-ssm-agent \u0431\u044b\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u0435\u0442\u044c<\/strong><\/p>\n<ul>\n<li>\n<p>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\/\u0434\u0440\u0430\u0439\u0432\u0435\u0440: \u0438 \u043a\u043b\u0438\u0435\u043d\u0442, \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c \u043a \u0441\u0435\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0440\u0442\u0443 Amazon<a href=\"https:\/\/aws.amazon.com\/ec2\/nitro\/\"> <u>Nitro \u0434\u043b\u044f VPC<\/u><\/a> \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u0438 2.4.0 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/tree\/master\/kernel\/linux\/ena#linux-kernel-driver-for-elastic-network-adapter-ena-family\"> <u>Elastic Network Adapter (ENA)<\/u><\/a>. \u0421\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 (\u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 vCPU), \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 (Receive side scaling, RSS) \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0436\u0438\u043c, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e \u0441 \u043d\u0438\u0437\u043a\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 (Low-latency Queue, LLQ).<\/p>\n<\/li>\n<li>\n<p>IP-\u0430\u0434\u0440\u0435\u0441\u0430: \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0430\u0434\u0440\u0435\u0441\u0430 IPv4.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0435\u0434\u0435\u043b\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438: AWS \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u043a\u0440\u0443\u0447\u0435 4xlarge. c5n.xlarge \u043c\u043e\u0436\u0435\u0442 \u043a\u0440\u0430\u0442\u043a\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e 25 \u0413\u0431\u0438\u0442\/\u0441 \u0441 1,8 \u043c\u043b\u043d \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043d\u0438\u0436\u0435. \u0418\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u0443\u0441\u043a\u0430 \u043f\u043e \u043f\u0430\u043a\u0435\u0442\u0430\u043c. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 ENA \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0431\u044b\u043b\u043e \u043b\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e \u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f<a href=\"https:\/\/aws.amazon.com\/blogs\/networking-and-content-delivery\/amazon-ec2-instance-level-network-performance-metrics-uncover-new-insights\/\"> <u>\u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438<\/u><\/a> (\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ethtool, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>ethtool -S eth0 | grep exceeded<\/code>).<\/p>\n<\/li>\n<\/ul>\n<h4>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432<\/h4>\n<p>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0432 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043f\u0443\u0442\u0435\u043c \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430<a href=\"https:\/\/man7.org\/linux\/man-pages\/man1\/perf-record.1.html\"> <u>perf record<\/u><\/a> \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430. \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0432\u0441\u0435\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c, \u043f\u0440\u0438 \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0432\u0435\u0440\u0441\u0438\u044f libreactor <em>\u0447\u0443\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0430\u044f\u0441\u044f<\/em> \u043e\u0442 \u0442\u043e\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438. \u0412\u0435\u0440\u0441\u0438\u0438 libreactor \u0434\u043b\u044f Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0431\u044b\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0441 \u043e\u043f\u0446\u0438\u044f\u043c\u0438 GCC <code>-fno-inline<\/code>, <br \/><code>-fomit-frame-pointer<\/code> \u0438\u00a0 <code>-flto<\/code>. Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 (\u0432\u043c\u0435\u0441\u0442\u0435 \u0441<a href=\"https:\/\/gist.github.com\/talawahtech\/b043e2dbf12af746de06b9b86c1a8b80\"> <u>\u044d\u0442\u043e\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0439<\/u><\/a> \u043f\u0430\u043b\u0438\u0442\u0440\u043e\u0439):<\/p>\n<pre><code>sudo perf record -F 99 --call-graph dwarf --pid $(pgrep -d ',' 'libreactor') sudo perf script | .\/stackcollapse-perf.pl --kernel | .\/flamegraph.pl --width 1600 --bgcolors grey --cp > output.svg<\/code><\/pre>\n<h4>\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 \u0441\u0442\u0435\u043d\u0434<\/h4>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0441\u0442\u0435\u043d\u0434 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u0438\u0445 \u0432\u043b\u0438\u044f\u043d\u0438\u044f, \u043d\u043e \u0434\u043b\u044f \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0435\u043d\u0434, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0432\u0435\u0441\u0442\u0438 \u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0443 \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b\/\u041e\u0421\/\u0441\u0435\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u0438 \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u043c.<\/p>\n<p>\u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0437\u0430\u0432\u0435\u0442\u043d\u044b\u0445 1.2M RPS \u0438 \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0438\u0436\u0435 \u0448\u0430\u0433\u043e\u0432, \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u0432 \u0437\u0430 \u044d\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0438\u0437\u043c\u0435\u043d\u0447\u0438\u0432\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432\u0430\u0440\u0438\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u0432 \u0432\u0435\u0440\u0445\u043d\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0438\u043b\u044f\u0445 (p99 \u0438 p99.99).<\/p>\n<h3>\u0418\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u0432\u0440\u0435\u0434\u043d\u044b\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u0438 \u043d\u0435\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u0441\u0442\u0432\u0430 Intel Turbo Boost<\/h3>\n<p>\u0417\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0441\u044f \u043d\u0430 c5n.9xlarge, \u0447\u0438\u0441\u043b\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u0441\u043d\u0438\u0436\u0435\u043d\u043e \u0434\u043e 4 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438<a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/instance-optimize-cpu.html\"> <u>\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 EC2<\/u><\/a>. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u0434\u0432\u0435 \u0432\u0435\u0449\u0438:<\/p>\n<ul>\n<li>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u044b\u043b \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439 \u043d\u0430 \u0443\u0437\u043b\u0435 NUMA.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/processor_state_control.html#turbo-perf\"><u>Intel Turbo Boost<\/u><\/a> \u0431\u044b\u043b <em>\u0432\u0441\u0435\u0433\u0434\u0430<\/em> \u0432\u043a\u043b\u044e\u0447\u0435\u043d.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e Turbo Boost \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u043b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043f\u0440\u0438 stress-ng-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 (<code>stress-ng --matrix 0 --metrics-brief -t 7<\/code>) \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 2%. \u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044f, \u0447\u0442\u043e Turbo Boost \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u044f \u0437\u0430\u0449\u0438\u0449\u0430\u043b\u0441\u044f \u043e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0438 \u043d\u0430 \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 2%, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0433\u043b\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438, \u0435\u0441\u043b\u0438 \u0431\u044b \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0431\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c CPU \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.<\/p>\n<p>\u0411\u044b\u043b\u0430 \u0438\u0434\u0435\u044f \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0442\u0435\u0441\u0442 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043d\u0430 \u043e\u0434\u043d\u043e\u043c<a href=\"https:\/\/aws.amazon.com\/ec2\/dedicated-hosts\/\"> <u>\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435<\/u><\/a>, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0432\u0440\u0435\u0434\u043d\u044b\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 <em>\u0438<\/em> \u0432\u0430\u0440\u0438\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a, \u043d\u043e \u043f\u043e\u043c\u0435\u0448\u0430\u043b\u0430<a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/issues\/148\"> <u>\u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/u><\/a>. \u041f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0430\u0434\u0430\u043b\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435.<\/p>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438<\/h3>\n<p>\u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 \u0432<a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/placement-groups.html#placement-groups-cluster\"> <u>\u0433\u0440\u0443\u043f\u043f\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/u><\/a> \u043e\u0431\u044b\u0447\u043d\u043e \u0433\u0443\u043b\u044f\u0435\u0442 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 40\u03bcs \u0434\u043e 60\u03bcs \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0435\u0435 \u0438\u0437\u043c\u0435\u0440\u044f\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>ICMP (<code>ping -U<\/code>): 35\u201360\u03bcs;<\/p>\n<\/li>\n<li>\n<p>TCP (<code>sockperf ping-pong<\/code>): 40\u201365\u03bcs.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\/\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u0441\u0432\u043e\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043d\u0435 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0438\u0436\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0439. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u0432 \u0442\u0435\u0441\u0442\u0435 \u043d\u0438\u0436\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u043c\u0438 (\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2013 \u043e\u043a\u043e\u043b\u043e 50\u03bcs):<\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430: <code>sudo ping -U -q -i 0 -s 18 -w 10 10.XXX.XXX.XXX<\/code><\/p>\n<p><strong>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: 39\u03bcs<\/strong><\/p>\n<pre><code>249138 packets transmitted, 249137 received, 0% packet loss, time 10000ms rtt min\/avg\/max\/mdev = 0.035\/0.039\/0.155\/0.008 ms, ipg\/ewma 0.040\/0.040 ms<\/code><\/pre>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430: <code>sockperf ping-pong --tcp --full-rtt -m 14 -i 10.XXX.XXX.XXX -t 10<\/code><\/p>\n<p><strong>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: 44\u03bcs<\/strong><\/p>\n<pre><code>sockperf: Summary: Round trip is 44.804 usec sockperf: Total 212861 observations; each percentile contains 2128.61 observations sockperf: ---> &lt;MAX> observation =  143.388 sockperf: ---> percentile 99.999 =   67.481 sockperf: ---> percentile 99.990 =   65.303 sockperf: ---> percentile 99.900 =   60.829 sockperf: ---> percentile 99.000 =   50.901 sockperf: ---> percentile 90.000 =   46.082 sockperf: ---> percentile 75.000 =   45.163 sockperf: ---> percentile 50.000 =   44.556 sockperf: ---> percentile 25.000 =   44.014 sockperf: ---> &lt;MIN> observation =   38.849<\/code><\/pre>\n<p><strong>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0435\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/strong><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u044b\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u043d\u0435\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u0440\u0442\u0438\u043b\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443. \u0412\u044b \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u0441\u044c, \u0443\u0437\u043d\u0430\u0432, \u0447\u0442\u043e \u0432 \u0438\u0445 \u0447\u0438\u0441\u043b\u043e \u0432\u043e\u0448\u043b\u0438 <code>dockerd<\/code> \u0438 <code>containerd<\/code>. \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u044b libreactor \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 dockerd\/containerd \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438<a href=\"https:\/\/docs.docker.com\/config\/containers\/live-restore\/\"> <u>live restore<\/u><\/a> Docker\u2019\u0430 (\u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 Linux, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0432 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0435\u043d).<\/p>\n<p>\u0412\u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0435\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u0441\u043b\u0443\u0436\u0431:<\/p>\n<pre><code>sudo systemctl stop containerd sudo systemctl stop docker sudo systemctl stop rsyslog sudo systemctl stop postfix sudo systemctl stop crond sudo systemctl stop chronyd sudo systemctl stop libstoragemgmt sudo systemctl stop systemd-journald.socket sudo systemctl stop systemd-journald sudo systemctl stop rpcbind.socket sudo systemctl stop rpcbind sudo service auditd stop<\/code><\/pre>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u043c \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u0448\u0430\u0431\u043b\u043e\u043d CloudFormation. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, htop) \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430.<\/p>\n<p><strong>\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 ARP<\/strong><\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e sysctl \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c<a href=\"https:\/\/man7.org\/linux\/man-pages\/man7\/arp.7.html\"> <u>\u0437\u0430\u043f\u0438\u0441\u0438 ARP<\/u><\/a> \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043a\u044d\u0448\u0430.<\/p>\n<pre><code>sudo sysctl -w net.ipv4.neigh.default.gc_thresh1=128 sudo sysctl -w net.ipv4.neigh.default.gc_interval=300 sudo sysctl -w net.ipv4.neigh.eth0.gc_stale_time=300<\/code><\/pre>\n<p>\u042d\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 CloudFormation.<\/p>\n<p><strong>\u0421\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u0438 EC2<\/strong><\/p>\n<p>\u0414\u0430\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0448\u0430\u0433\u043e\u0432 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u043c\u0438 EC2 \u043c\u043e\u0433\u043b\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c 5\u201310%. \u0411\u044b\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b:<\/p>\n<ul>\n<li>\n<p>\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0432 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u0445 TCP (<code>sockperf<\/code>);<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 (<code>stress-ng<\/code>);<\/p>\n<\/li>\n<li>\n<p>\u00ab\u0432\u0440\u0435\u0434\u043d\u044b\u0435 \u0441\u043e\u0441\u0435\u0434\u0438\u00bb \/ \u043a\u0440\u0430\u0436\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (9xlarge + <code>sar<\/code>);<\/p>\n<\/li>\n<li>\n<p>Intel Turbo Boost (<code>turbostat<\/code>);<\/p>\n<\/li>\n<li>\n<p>\u043c\u043e\u0434\u0435\u043b\u044c CPU (<code>lscpu<\/code>).<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0445\u043e\u0436\u0435, \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 \u0438\u043b\u0438 \u0436\u0435\u043b\u0435\u0437\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043d\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0434\u0435\u0438 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443, \u0434\u0430\u0439\u0442\u0435 \u043c\u043d\u0435 \u0437\u043d\u0430\u0442\u044c:<a href=\"https:\/\/news.ycombinator.com\/item?id=27226382\"> <u>Hacker News<\/u><\/a> |<a href=\"https:\/\/www.reddit.com\/r\/aws\/comments\/nha53i\/extreme_http_performance_tuning_12m_api_reqs_on_a\/\"> <u>Reddit<\/u><\/a> |<a href=\"https:\/\/talawah.io\/contact\/\"> <u>Direct<\/u><\/a>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438 \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u044f \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0433\u043e\u043d\u0430\u0445. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0442\u0435\u0441\u0442, \u044f \u043a\u0440\u043e\u043f\u043e\u0442\u043b\u0438\u0432\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\/\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u0442\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0431\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0445.<\/p>\n<h3>\u0428\u0430\u0431\u043b\u043e\u043d CloudFormation<\/h3>\n<p><a href=\"https:\/\/gist.github.com\/talawahtech\/ce2fe1f6a3e3851d15e912e0a4e93734\"><u>\u0428\u0430\u0431\u043b\u043e\u043d AWS CloudFormation<\/u><\/a> \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438, \u043a\u0440\u043e\u043c\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 (\u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u0432\u044b\u0448\u0435). \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u043d\u0438\u0436\u0435, \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439; \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 ping-\u0442\u0435\u0441\u0442\u044b, \u0438\u043d\u0430\u0447\u0435 \u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u044b.<\/p>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ec2-key-pairs.html\"><u>\u041f\u0430\u0440\u0430 \u043a\u043b\u044e\u0447\u0435\u0439<\/u><\/a> \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 EC2.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0441\u0435\u0442\u044c VPC (\u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043b\u044e\u0431\u0430\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u044c \u0432<a href=\"https:\/\/docs.aws.amazon.com\/vpc\/latest\/userguide\/default-vpc.html\"> <u>VPC \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e<\/u><\/a>).<\/p>\n<\/li>\n<li>\n<p>\u0413\u0440\u0443\u043f\u043f\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 VPC (\u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f VPC \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).<\/p>\n<\/li>\n<\/ul>\n<h4>\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415!<\/h4>\n<ol>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 AWS, \u0432\u0441\u0435\u0433\u0434\u0430, \u0432\u0441\u0435\u0433\u0434\u0430 \u2014 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e, \u0432\u0441\u0435\u0433\u0434\u0430! \u2014<a href=\"https:\/\/docs.aws.amazon.com\/AmazonCloudWatch\/latest\/monitoring\/monitor_estimated_charges_with_cloudwatch.html\"> <u>\u0432\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u0431\u0438\u043b\u043b\u0438\u043d\u0433-\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/u><\/a>, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f; \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0435\u043a CloudFormation, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0435. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 <strong>1 \u0434\u043e\u043b\u043b\u0430\u0440 \u0432 \u0447\u0430\u0441<\/strong> \u0432 \u0440\u0435\u0433\u0438\u043e\u043d\u0435 us-east-2. \u0414\u0435\u0448\u0435\u0432\u043e, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u043d\u0430 \u0447\u0430\u0441, \u043d\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u0431\u044b\u0442\u044c \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0446\u0435\u043b\u044b\u0439 \u043c\u0435\u0441\u044f\u0446, \u0442\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u043a\u0440\u0443\u0433\u043b\u0443\u044e \u0441\u0443\u043c\u043c\u0443.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0437\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b \u0432\u0437\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0442\u0430 \u0437\u0430 EBS. \u041f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e 0,05 \u0434\u043e\u043b\u043b\u0430\u0440\u0430 \u0432 \u0434\u0435\u043d\u044c \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<\/li>\n<\/ol>\n<h4>\u041d\u0430 \u0437\u0430\u043c\u0435\u0442\u043a\u0443<\/h4>\n<ol>\n<li>\n<p>\u0418\u043d\u0441\u0442\u0430\u043d\u0441\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 twrk \u0438 libreactor \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435. \u041e\u043d\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u044f\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044f\u0434\u0440\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0432\u044b\u043c \u0432\u0445\u043e\u0434\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c 3-4 \u043c\u0438\u043d\u0443\u0442\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0428\u0430\u0431\u043b\u043e\u043d CloudFormation \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Amazon Linux 2. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e <code>amzn2-ami-hvm-2.0.20210427.0-x86_64-gp2<\/code>, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043e\u043d\u0430 \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e (\u0438\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e) \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0447\u0430\u0441\u0442\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 (\u0438\u043b\u0438 \u0435\u0433\u043e \u0434\u043e\u043b\u0433\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435), \u0435\u0441\u0442\u044c \u0440\u0438\u0441\u043a \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442\u044c \u043b\u0438\u043c\u0438\u0442\u044b \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 \u043f\u043e \u043f\u0438\u043a\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (burst). \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: <code>ethtool -S eth0 | grep exceeded<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u0430\u0440\u044c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 1,1M RPS \u0434\u043e 1,2M RPS \u0438\u0437-\u0437\u0430<a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/#ec2-x-factor\"> <u>\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/u><\/a> \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u043c\u0438 EC2 (\u0441\u043c. \u00ab\u0421\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u0438 EC2\u00bb).<\/p>\n<\/li>\n<\/ol>\n<h4>\u0417\u0430\u043f\u0443\u0441\u043a \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430<\/h4>\n<ol>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e SSH <strong>\u0442\u043e\u043b\u044c\u043a\u043e<\/strong> \u0441 \u0432\u0430\u0448\u0435\u0433\u043e IP-\u0430\u0434\u0440\u0435\u0441\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e\u0439\u0434\u0438\u0442\u0435 \u043f\u043e SSH \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0445 <strong>\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435<\/strong> IP-\u0430\u0434\u0440\u0435\u0441\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u043f\u0438\u043d\u0433\u0443\u0439\u0442\u0435 <strong>\u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439<\/strong> IP-\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 (40\u201360\u03bcs):<\/p>\n<\/li>\n<\/ol>\n<pre><code>sudo ping -U -q -i 0 -s 18 -w 10 172.31.XX.XX<\/code><\/pre>\n<ul>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 twrk \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0432 \u0432 URL <strong>\u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439<\/strong> IP-\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:\u00a0<\/p>\n<\/li>\n<\/ul>\n<pre><code>docker run -d --rm --security-opt seccomp=unconfined --network host --init libreactor<\/code><\/pre>\n<ul>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 twrk \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0432 \u0432 URL \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<\/li>\n<\/ul>\n<pre><code>twrk -t 16 -c 256 -D 2 -d 10 --latency --pin-cpus \"http:\/\/172.31.XX.XX:8080\/json\" -H 'Host: server.tfb' -H 'Accept: application\/json,text\/html;q=0.9,application\/xhtml+xml;q=0.9,application\/xml;q=0.8,\/;q=0.7' -H 'Connection: keep-alive'<\/code><\/pre>\n<h4>\u041d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/h4>\n<p>\u0417\u0434\u0435\u0441\u044c \u043e\u0431\u0438\u0442\u0430\u044e\u0442 \u0434\u0440\u0430\u043a\u043e\u043d\u044b. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0434\u0435\u043b \u00ab\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 \u0441\u0442\u0435\u043d\u0434\u00bb. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u0435\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f.<\/p>\n<ol>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439:<\/p>\n<\/li>\n<\/ol>\n<pre><code>sudo ethtool -C eth0 adaptive-rx off sudo ethtool -C eth0 rx-usecs 300 sudo ethtool -C eth0 tx-usecs 300<\/code><\/pre>\n<ul>\n<li>\n<p>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0435\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u0441\u043b\u0443\u0436\u0431:<\/p>\n<\/li>\n<\/ul>\n<pre><code>  sudo systemctl stop containerd   sudo systemctl stop docker   sudo systemctl stop rsyslog   sudo systemctl stop postfix   sudo systemctl stop crond   sudo systemctl stop chronyd   sudo systemctl stop libstoragemgmt   sudo systemctl stop systemd-journald.socket   sudo systemctl stop systemd-journald   sudo systemctl stop rpcbind.socket   sudo systemctl stop rpcbind   sudo service auditd stop<\/code><\/pre>\n<ul>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f ARP-\u0437\u0430\u043f\u0438\u0441\u0435\u0439:<\/p>\n<\/li>\n<\/ul>\n<pre><code>sudo sysctl -w net.ipv4.neigh.default.gc_thresh1=128 sudo sysctl -w net.ipv4.neigh.default.gc_interval=300 sudo sysctl -w net.ipv4.neigh.eth0.gc_stale_time=300<\/code><\/pre>\n<h3>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/h3>\n<h4>\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u043e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445 \u044f\u0434\u0440\u0430 Linux<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.kernel.org\/doc\/Documentation\/networking\/scaling.txt\"><u>Scaling in the Linux Networking Stack (RSS\/RPS\/RFS\/XPS)<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.kernel.org\/doc\/Documentation\/IRQ-affinity.txt\"><u>Linux kernel SMP IRQ affinity<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/garycplin.blogspot.com\/2017\/06\/linux-network-scaling-receives-packets.html\"><u>Linux Network Scaling: Receiving Packets<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/people.redhat.com\/pladd\/MHVLUG_2017-04_Network_Receive_Stack.pdf\"><u>Linux Network Receive Stack: Monitoring and Tuning Deep Dive<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.linuxjournal.com\/content\/queueing-linux-network-stack\"><u>Queueing in the Linux Network Stack<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0441\u0435\u0440\u0438\u044f \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445 \u044f\u0434\u0440\u0430 \u043e\u0442<a href=\"https:\/\/packagecloud.io\/\"> <u>packagecloud<\/u><\/a><u>:<\/u><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/blog.packagecloud.io\/eng\/2016\/06\/22\/monitoring-tuning-linux-networking-stack-receiving-data\/\"><u>Monitoring and Tuning the Linux Networking Stack: Receiving Data<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/blog.packagecloud.io\/eng\/2016\/10\/11\/monitoring-tuning-linux-networking-stack-receiving-data-illustrated\/\"><u>Illustrated Guide to Monitoring and Tuning the Linux Networking Stack: Receiving Data<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/blog.packagecloud.io\/eng\/2017\/02\/06\/monitoring-tuning-linux-networking-stack-sending-data\/\"><u>Monitoring and Tuning the Linux Networking Stack: Sending Data<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Busy polling:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/netdevconf.info\/2.1\/papers\/BusyPollingNextGen.pdf\"><u>Busy Polling: Past, Present, Future<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/torvalds\/linux\/commit\/bf3b9f6372c45b0fbf24d86b8794910d20170017\"><u>Linux kernel commit: Add busy poll support to epoll with socket fds<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/lore.kernel.org\/netdev\/a4eef6a6-6f44-996f-6b5f-aaa710405aab@intel.com\/t\/\"><u>Busy Poll clarifications on netdev mailing list<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/events.static.linuxfound.org\/sites\/events\/files\/slides\/LinuxConJapan2016_makita_160712.pdf\"><u>Toshiaki Makita&#8217;s LinuxCon presentation: Boost UDP Transaction Performance<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/blog.cloudflare.com\/perfect-locality-and-three-epic-systemtap-scripts\/\"><u>Perfect locality and three epic SystemTap scripts<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/redhat-performance\/tuned\/\"><u>Tuned: Daemon for monitoring and adaptive tuning of system devices<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/beej.us\/guide\/bgnet\/\"><u>Beej&#8217;s Guide to Network Programming<\/u><\/a>.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/brendangregg\/Misc\/blob\/master\/perf_events\/perf.md\"><u>Linux perf<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/iovisor\/bcc\"><u>BPF Compiler Collection (BCC)<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/iovisor\/bpftrace\"><u>bpftrace<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438:<\/p>\n<ul>\n<li>\n<p><a href=\"http:\/\/www.brendangregg.com\/FlameGraphs\/cpuflamegraphs.html\"><u>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 CPU<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/brendangregg\/FlameGraph\"><u>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 FlameGraph<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/Mellanox\/sockperf\"><u>sockperf<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/wg\/wrk\"><u>wrk: \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438\u043d\u0433\u0430 HTTP<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/fredrikwidlund\/libreactor\"><u>libreactor: \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a<\/u><\/a><u>;<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/amzn\/amzn-drivers\/tree\/master\/kernel\/linux\/ena\"><u>Linux kernel driver for Elastic Network Adapter (ENA) family<\/u><\/a><u>.<\/u><\/p>\n<\/li>\n<\/ul>\n<h4>\u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043f\u0435\u043a\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/hw-vuln\/index.html\"><u>\u0421\u043f\u0438\u0441\u043e\u043a \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 CPU \u0438 \u043c\u0435\u0440 \u043f\u043e \u0441\u043c\u044f\u0433\u0447\u0435\u043d\u0438\u044e \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0432 \u044f\u0434\u0440\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/google\/safeside\/blob\/master\/docs\/README.md\"><u>\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0441\u043f\u0435\u043a\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/aws.amazon.com\/security\/security-bulletins\/AWS-2018-015\/\"><u>\u0411\u044e\u043b\u043b\u0435\u0442\u0435\u043d\u044c AWS Bulletin \u043e\u0431 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u0445 \u043a\u043b\u0430\u0441\u0441\u0430 Spectre\/Meltdown<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p>AWS re:Invent 2019: Speculation &amp; leakage: Timing side channels &amp; multi-tenant computing (SEC355):<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=kQ4H6XO-iao\"><u>\u0432\u0438\u0434\u0435\u043e<\/u><\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/d1.awsstatic.com\/events\/reinvent\/2019\/Speculation_&amp;_leakage_Timing_side_channels_&amp;_multi-tenant_computing_SEC355.pdf\"><u>\u0441\u043b\u0430\u0439\u0434\u044b<\/u><\/a>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>P.S.<\/h3>\n<p>\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/553318\/\">\u00ab<u>HTTPWTF. \u041d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435<\/u>\u00bb<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/547526\/\">\u00ab<u>\u0422\u0435\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 PostgreSQL \u043d\u0430 AWS EC2-\u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u0445 \u043d\u0430 ARM<\/u>\u00bb<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/569600\/\">\u00ab<u>\u041f\u043e\u043d\u0438\u043c\u0430\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0443\u043b\u044b<\/u>\u00bb<\/a>.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/651867\/\"> https:\/\/habr.com\/ru\/company\/flant\/blog\/651867\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong><em>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.<\/em><\/strong><em>: \u0430\u0432\u0442\u043e\u0440 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u2014 Marc Richards, Solutions Architect \u0438 DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u2014 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0443\u044e \u043d\u0430\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0438 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u2014 \u043a\u043b\u0430\u0434\u0435\u0437\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u0440\u0443\u0433\u043e\u0437\u043e\u0440\u0430 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 \u0432 Linux \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e, \u0434\u0430\u0436\u0435 \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0430\u0432\u0442\u043e\u0440\u0430. \u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u044c\u0442\u0435\u0441\u044c \u043a \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0434\u043b\u0438\u043d\u043d\u043e\u043c\u0443 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044e \u0441 \u043e\u0431\u0438\u043b\u0438\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a.<\/em><\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0448\u0430\u0433\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043e 1,2 \u043c\u043b\u043d<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/wiki\/Project-Information-Framework-Tests-Overview#json-serialization\"> <u>JSON API-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/u><\/a> \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430<a href=\"https:\/\/aws.amazon.com\/ec2\/instance-types\/c5\/\"> <u>AWS EC2<\/u><\/a> \u0441 4 vCPU. \u0417\u0430 \u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u044d\u0442\u043e\u0433\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u0432\u0435\u0441\u0442\u0430 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u0434\u043e\u0432\u0435\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u043e\u0439\u0434\u0435\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0442\u043e\u0440\u0435\u043d\u043d\u043e\u0439 \u0434\u043e\u0440\u043e\u0433\u043e\u0439, \u043d\u0435\u0443\u043a\u043b\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u044f\u0441\u044c \u043e\u0442 224 \u0442\u044b\u0441. RPS \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 (\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0434\u043e \u0443\u043c\u043e\u043f\u043e\u043c\u0440\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 1,2 \u043c\u043b\u043d RPS \u043d\u0430 \u0444\u0438\u043d\u0438\u0448\u0435.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e \u043f\u0440\u0430\u0432\u0434\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442\u044c \u043f\u043b\u0430\u043d\u043a\u0443 \u0432 1 \u043c\u043b\u043d RPS \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e. \u0412\u0441\u0435 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u043e\u0439. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u043f\u043e\u0434\u0441\u0442\u0435\u0433\u043d\u0443\u043b\u0430 \u043c\u043e\u044e \u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u043e\u0431\u0449\u0435\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043d\u0434\u0435\u043c\u0438\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u043b\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u044b\u0448\u043a\u0443 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435, \u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e-\u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0434\u0435\u0432\u044f\u0442\u044c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445 \u0438 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u0443\u044e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041f\u0440\u0438\u0440\u043e\u0441\u0442<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>RPS<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0442\u043f\u0440\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/initial.svg\"><u>initial.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u00a0 &#8212;<\/p>\n<\/td>\n<td>\n<p align=\"left\">224k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">1. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/app-optimizations.svg\"><u>app.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">55%<\/p>\n<\/td>\n<td>\n<p align=\"left\">347k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">2. \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u043a\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/speculative-execution-mitigations.svg\"><u>spec-exec.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">28%<\/p>\n<\/td>\n<td>\n<p align=\"left\">446k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">3. \u0410\u0443\u0434\u0438\u0442 \/ \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/syscall.svg\"><u>syscall.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">11%<\/p>\n<\/td>\n<td>\n<p align=\"left\">495k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">4. \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 iptables \/ netfilter<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/iptables.svg\"><u>iptables.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">22%<\/p>\n<\/td>\n<td>\n<p align=\"left\">603k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">5. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/perfect-locality.svg\"><u>perfect-locality.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">38%<\/p>\n<\/td>\n<td>\n<p align=\"left\">834k<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">6. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/interrupt-optimization.svg\"><u>interrupt.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">28%<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.06M<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">7. \u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u0441\u043e\u0441\u0435\u0434\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/nosy-neighbor.svg\"><u>nosy-neighbor.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u00a0 6%<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.12M<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">8. \u0411\u043e\u0440\u044c\u0431\u0430 \u0441\u043e \u0441\u043f\u0438\u043d\u043b\u043e\u043a\u0430\u043c\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/spin-lock.svg\"><u>spin-lock.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u00a0 2%<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.15M<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">9. \u0412\u0441\u0451 \u0431\u043b\u0438\u0437\u0438\u0442\u0441\u044f \u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/talawah.io\/blog\/extreme-http-performance-tuning-one-point-two-million\/final.svg\"><u>final.svg<\/u><\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u00a0 4%<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.20M<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0432 \u0432\u044b\u0431\u043e\u0440\u0435 \u0438 \u043e\u0446\u0435\u043d\u043a\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043f\u043e\u0445\u043e\u0436\u0435\u0433\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 5 \u0440\u0430\u0437 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0431\u0435\u0437\u0434\u0443\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439. \u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u043f\u0440\u0438\u043d\u0435\u0441\u0443\u0442 \u043f\u043e\u043b\u044c\u0437\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u043a\u0442\u043e \u0443\u0436\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b \u043f\u043b\u0430\u043d\u043a\u0443 \u0432\u00a0 50 \u0442\u044b\u0441. RPS. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0438 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0443\u0437\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430.<\/p>\n<p>\u0411\u044b\u043b\u0430 \u0438\u0434\u0435\u044f \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u0439, \u043d\u043e \u043e\u043d\u0430 \u043d\u0435 \u043f\u0440\u0438\u0436\u0438\u043b\u0430\u0441\u044c \u0438\u0437-\u0437\u0430 \u0441\u0442\u0440\u0430\u0445\u0430 \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 (\u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435). \u0422\u0435\u043c, \u043a\u0442\u043e \u0436\u0435\u043b\u0430\u0435\u0442 \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f<a href=\"https:\/\/gist.github.com\/talawahtech\/ce2fe1f6a3e3851d15e912e0a4e93734\"> <u>\u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c CloudFormation<\/u><\/a> \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430<\/h3>\n<p>\u042d\u0442\u043e \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043d\u0430 AWS. \u0414\u043b\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0443 \u00ab\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u00bb. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/wiki\/Project-Information-Framework-Tests-Overview#json-serialization\"> <u>\u0442\u0435\u0441\u0442 JSON-\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/u><\/a><a href=\"https:\/\/www.techempower.com\/benchmarks\/#section=intro\"><u> Techempower<\/u><\/a>. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/tree\/R20\/frameworks\/C\/libreactor\"> <u>\u043f\u0440\u043e\u0441\u0442\u043e\u0439 API-\u0441\u0435\u0440\u0432\u0435\u0440<\/u><\/a> \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435<a href=\"https:\/\/github.com\/fredrikwidlund\/libreactor\"> <u>libreactor<\/u><\/a> \u2014 event-driven-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u0421\u0438. API-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b Linux, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a<a href=\"https:\/\/man7.org\/linux\/man-pages\/man7\/epoll.7.html\"> <u>epoll<\/u><\/a>,<a href=\"https:\/\/man7.org\/linux\/man-pages\/man2\/send.2.html\"> <u>send<\/u><\/a> \u0438<a href=\"https:\/\/man7.org\/linux\/man-pages\/man2\/recv.2.html\"> <u>recv<\/u><\/a>, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0417\u0430 HTTP-\u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442<a href=\"https:\/\/github.com\/h2o\/picohttpparser\"> <u>picohttpparser<\/u><\/a>, \u0430 \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 JSON \u2014<a href=\"https:\/\/github.com\/fredrikwidlund\/libclo\"> <u>libclo<\/u><\/a>. \u041e\u043d \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0431\u044b\u0441\u0442\u0440, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e (\u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0434\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f<a href=\"https:\/\/kernel.dk\/io_uring.pdf\"> <u>io_uring<\/u><\/a>), \u0438 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<h4>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435<\/h4>\n<ul>\n<li>\n<p>\u0421\u0435\u0440\u0432\u0435\u0440: \u0438\u043d\u0441\u0442\u0430\u043d\u0441 4 vCPU c5n.xlarge.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043b\u0438\u0435\u043d\u0442: \u0438\u043d\u0441\u0442\u0430\u043d\u0441 16 vCPU c5n.4xlarge (\u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0443\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c).<\/p>\n<\/li>\n<li>\n<p>\u0421\u0435\u0442\u044c: \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u0439 \u0437\u043e\u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 (use2-az2) \u0438<a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/placement-groups.html#placement-groups-cluster\"> <u>\u0433\u0440\u0443\u043f\u043f\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/u><\/a>.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435<\/h4>\n<ul>\n<li>\n<p><strong>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430:<\/strong> Amazon Linux 2 (\u044f\u0434\u0440\u043e 4.14).<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0435\u0440\u0432\u0435\u0440:<\/strong> \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 libreactor \u043e\u0442<a href=\"https:\/\/www.techempower.com\/benchmarks\/#section=intro\"> <u>Techempower<\/u><\/a> (\u0441<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/tree\/R18\/frameworks\/C\/libreactor\"> <u>18<\/u><\/a> \u0440\u0430\u0443\u043d\u0434\u0430 \u043f\u043e<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/tree\/R20\/frameworks\/C\/libreactor\"><u> 20<\/u><\/a>-\u0439) \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435: <code>docker run -d --rm --network host --init libreactor<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u043b\u0438\u0435\u043d\u0442:<\/strong> \u0431\u044b\u043b\u043e \u0432\u043d\u0435\u0441\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432<a href=\"https:\/\/github.com\/wg\/wrk\"> <u>wrk<\/u><\/a> (\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f HTTP-\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438\u043d\u0433\u0430) \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0435\u0433\u043e \u0432<a href=\"https:\/\/github.com\/talawahtech\/wrk\/commits\/twrk\"> <u>twrk<\/u><\/a>. \u041e\u043d \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 low-latency-\u0442\u0435\u0441\u0442\u0430\u0445. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f wrk \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u043d\u043e twrk \u043b\u0443\u0447\u0448\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442<a href=\"https:\/\/engineering.linkedin.com\/performance\/who-moved-my-99th-percentile-latency\"> <u>\u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 p99<\/u><\/a> \u0438 \u0443\u043c\u0435\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 p99.99.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430<\/h4>\n<p>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u0442\u0440\u0438\u0436\u0434\u044b; <strong>\u0441\u0430\u043c\u044b\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0438 \u043d\u0438\u0437\u043a\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043b\u0438\u0441\u044c<\/strong>. Twrk \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438, \u0447\u0442\u043e \u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435, \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0431\u0435\u0437 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>256 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>16 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0451\u043d \u043a vCPU (\u043f\u043e 1 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439);<\/p>\n<\/li>\n<li>\n<p>2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0440\u0430\u0437\u043e\u0433\u0440\u0435\u0432 \u043f\u0435\u0440\u0435\u0434 \u0441\u0431\u043e\u0440\u043e\u043c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, 10 \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430 \u0441\u0430\u043c \u0442\u0435\u0441\u0442.<\/p>\n<\/li>\n<\/ul>\n<pre><code>twrk -t 16 -c 256 -D 2 -d 10 --latency --pin-cpus \"http:\/\/server.tfb:8080\/json\" -H 'Host: server.tfb' -H 'Accept: application\/json,text\/html;q=0.9,application\/xhtml+xml;q=0.9,application\/xml;q=0.8,\/;q=0.7' -H 'Connection: keep-alive'<\/code><\/pre>\n<p>\u041f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0441\u043b\u0443\u0447\u0430\u0435\u043c, \u0445\u043e\u0447\u0443 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u0432\u043e\u0441\u0445\u0438\u0449\u0435\u043d\u0438\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u0438 \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043c\u043d\u0435 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u043e\u0448\u0435\u0447\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u0447\u0435\u043a (\u043f\u043e\u0447\u0442\u0438) \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u00ab\u0436\u0435\u043b\u0435\u0437\u043d\u043e\u0433\u043e\u00bb \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u0438 \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0437\u0430 \u044d\u0442\u043e <strong>\u043f\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u043e<\/strong>. \u041a\u0430\u043a \u0431\u044b \u0432\u044b \u043d\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u043b\u0438\u0441\u044c \u043a AWS, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0435\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0442. \u0421\u043a\u0430\u0436\u0435\u043c, \u043b\u0435\u0442 15 \u043d\u0430\u0437\u0430\u0434 \u0431\u044b\u043b\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u0432\u0435\u0441\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u041e\u0442\u043f\u0440\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430<\/h3>\n<pre><code>Running 10s test @ http:\/\/server.tfb:8080\/json \u00a0\u00a016 threads and 256 connections \u00a0\u00a0Thread Stats \u00a0 Avg \u00a0 \u00a0 Stdev \u00a0 \u00a0 \u00a0 Max \u00a0 \u00a0 \u00a0 Min \u00a0 +\/- Stdev \u00a0\u00a0\u00a0\u00a0Latency \u00a0 \u00a0 1.14ms \u00a0 58.95us\u00a0 \u00a0 1.45ms\u00a0 \u00a0 0.96ms \u00a0 61.61% \u00a0\u00a0\u00a0\u00a0Req\/Sec\u00a0 \u00a0 14.09k \u00a0 123.75 \u00a0 \u00a0 14.46k\u00a0 \u00a0 13.81k\u00a0 \u00a0 66.35% \u00a0\u00a0Latency Distribution \u00a0\u00a050.00%\u00a0 \u00a0 1.14ms \u00a0\u00a090.00%\u00a0 \u00a0 1.21ms \u00a0\u00a099.00%\u00a0 \u00a0 1.26ms \u00a0\u00a099.99%\u00a0 \u00a0 1.32ms \u00a0\u00a02243551 requests in 10.00s, 331.64MB read Requests\/sec: 224353.73 Transfer\/sec: \u00a0 \u00a0 33.16MB<\/code><\/pre>\n<p>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f libreactor \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c 224 \u0442\u044b\u0441. RPS. \u0412\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u0430\u044f \u0446\u0438\u0444\u0440\u0430: \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0442\u0430\u043a\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f. \u0412\u044b\u0432\u043e\u0434 twrk \u0432\u044b\u0448\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0434\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.<\/p>\n<p>\u041d\u0430 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0438\u0436\u0435 \u2014 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 (RPS) \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 libreactor (\u0440\u0430\u0443\u043d\u0434 18) \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432\/\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 (\u0440\u0430\u0443\u043d\u0434 20), \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 c5n.xlarge \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<figure class=\"full-width\"><figcaption>* nginx.conf \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0437\u0430&#8217;hardcode&#8217;\u0435\u043d\u044b\u0435 JSON-\u043e\u0442\u0432\u0435\u0442\u044b. \u042d\u0442\u043e \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e Techempower.<\/figcaption><\/figure>\n<p>Actix, NGINX \u0438 Netty \u2014 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435, \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0438 libreactor \u043d\u0438\u0447\u0443\u0442\u044c \u0438\u043c \u043d\u0435 \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442. \u0413\u043b\u044f\u0434\u044f \u043d\u0430 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u044d\u0442\u043e \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435. \u0417\u043d\u0430\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 libreactor \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0434\u0440\u0443\u0433\u0438\u043c HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e\u043c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442.<\/p>\n<h4>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438<\/h4>\n<p><a href=\"http:\/\/www.brendangregg.com\/flamegraphs.html\"><u>Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438<\/u><\/a> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 CPU \u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041e\u043d\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u043e\u0449\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u0443\u0437\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430. Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u041e\u043d\u0438 \u0441\u043b\u0443\u0436\u0430\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u043c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430 \u0438 \u043d\u0430\u043c\u0435\u043a\u0430\u044e\u0442, \u043d\u0430 \u0447\u0442\u043e \u0435\u0449\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 Flame-\u0433\u0440\u0430\u0444\u0438\u043a \u0434\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u043e\u0442\u0442\u0435\u043d\u043a\u0430\u0445 \u0441\u0438\u043d\u0435\u0433\u043e, \u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044f\u0434\u0440\u0430 \u0438\u0433\u0440\u0430\u043b\u0438 \u0432\u0441\u0435\u043c\u0438 \u043f\u0435\u0440\u0435\u043b\u0438\u0432\u0430\u043c\u0438 \u00ab\u043f\u043b\u0430\u043c\u0435\u043d\u0438\u00bb. \u0418\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u044f\u0434\u0440\u043e (\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443\/\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043f\u043e \u0441\u0435\u0442\u0438). \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e; \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0434\u0440\u043e\u043c.<\/p>\n<p>\u041a\u043e\u0434 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u043e\u0442\u0432\u0435\u0442\u0430. \u0412\u044b\u0441\u043e\u043a\u0438\u0435 \u0438 \u0442\u043e\u043d\u043a\u0438\u0435 \u00ab\u0438\u0433\u043b\u044b\u00bb, \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0443, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438. \u042d\u0442\u0438 \u00ab\u0438\u0433\u043b\u044b\u00bb \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 SVG-\u0444\u0430\u0439\u043b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e<a href=\"https:\/\/github.com\/brendangregg\/FlameGraph\"> <u>Flamegraph<\/u><\/a>. SVG-\u0444\u0430\u0439\u043b\u044b <strong>\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b<\/strong>. \u041c\u043e\u0436\u043d\u043e \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0443, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a (Ctrl + F \u0438\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0443 \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443) \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0438\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043b\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0438\u0441\u043a <code>ret_from_intr<\/code> \u043f\u043e\u043a\u0430\u0436\u0435\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 CPU \u0442\u0440\u0430\u0442\u0438\u0442 \u043d\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Flame-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043a \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<h4>\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u0435<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u043a\u0432\u0435\u0441\u0442 \u0437\u0430\u0442\u0435\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0434\u0438 \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f. \u041d\u0435 \u043f\u044b\u0442\u0430\u0439\u0442\u0435\u0441\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0435\u0433\u043e \u0434\u043e\u043c\u0430! \u0425\u043e\u0442\u044f \u0434\u043e\u043c\u0430 \u043c\u043e\u0436\u043d\u043e, \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2013 \u043d\u0435 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 (\u0435\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b \u043d\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0434\u043e\u0441\u043a\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442)! \u041b\u044e\u0431\u043e\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0421\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043c\u043d\u043e\u0439, \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438. \u0421\u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0441 \u043d\u0443\u043b\u044f \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437 \u044f \u043f\u0438\u0441\u0430\u043b \u043d\u0430 \u043d\u0435\u043c \u043b\u0435\u0442 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u043d\u0430\u0437\u0430\u0434. \u0417\u043d\u0430\u044e, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 libreactor\u2019\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 production, \u043d\u043e \u0441\u0430\u043c \u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0438\u0441\u043a\u0443\u044e.<\/p>\n<h3>1. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0417\u0430 \u0431\u0430\u0437\u0443 \u0431\u044b\u043b \u0432\u0437\u044f\u0442 \u043a\u043e\u0434 libreactor \u0438\u0437 \u0440\u0430\u0443\u043d\u0434\u0430<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/tree\/R18\/frameworks\/C\/libreactor\"><u> 18<\/u><\/a>* \u0441\u0435\u0440\u0438\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432<a href=\"https:\/\/www.techempower.com\/benchmarks\/#section=intro\"> <u>Techempower<\/u><\/a>.<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/pulls?q=is%3Apr+author%3Atalawahtech+is%3Aclosed\"> <u>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435<\/u><\/a> \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Techempower \u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u043b\u0438\u0441\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 issues \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 libreactor \u0441 \u0446\u0435\u043b\u044c\u044e \u0432\u043d\u0435\u0441\u0442\u0438<a href=\"https:\/\/github.com\/fredrikwidlund\/libreactor\/issues?q=is%3Aissue+is%3Aclosed+author%3Atalawahtech\"> <u>\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430<\/u><\/a>. \u042d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u0437\u0430\u0442\u0435\u043c \u0443\u0447\u0442\u0435\u043d\u044b \u0432 \u0432\u0435\u0442\u043a\u0435 libreactor 2.0.<a href=\"https:\/\/github.com\/TechEmpower\/FrameworkBenchmarks\/tree\/R20\/frameworks\/C\/libreactor\"> <u>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u0437 \u0440\u0430\u0443\u043d\u0434\u0430 20<\/u><\/a> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\/ \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p><em>* \u041f\u0435\u0440\u0435\u0434 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438\u043d\u0433\u043e\u043c \u043a\u043e\u0434 \u0438\u0437 18 \u0440\u0430\u0443\u043d\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Ubuntu 20.04, gcc 10, libdynamic 1.3.0 \u0438 libreactor 1.0.1.<\/em><\/p>\n<h4>\u041e\u043f\u0442\u0438\u043c\u0438<\/h><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-332270","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/332270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=332270"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/332270\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=332270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=332270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=332270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}