<html><head>            <style type="text/css" title="rt_noDelete">
    blockquote.rt {
    margin: 0 0 15px;
    border-left: 4px solid #81c784;
    padding: 0 0 0 12px;
    display: block;
    }
    p { margin: 0 0 0 0 }
.email-signature {font-family:"Arial"; font-size: 8pt; font-style: italic; font-weight: normal; text-decoration: none; }
    </style></head><body><p class="norm">Добрый вечер, Илья.</p><p class="norm"> </p><p class="norm">Замерил тесты на физическом сервере, пока без без поддержки kTLS.</p><p>Оказывается в тестах на виртуальной машине я неправильно интерпретировал интерпретировал скорости,</p><p>которые выводила утилита curl. Вместо МБит/сек там идёт МБайт/сек.</p><p> </p><p>Результаты тестов при скачивании файла с самого сервера:</p><p> - HTTP/1.1 - ~3 504,14 МБит/сек (CPU load 100%)</p><p> - HTTP/2 - ~3 568,57 МБит/сек (CPU load 100%)</p><p> - HTTP/3 - ~2 872,09 МБит/сек (CPU load 58-62%)</p><p> </p><p>Результаты тестов при скачивании файла по локальной сети:</p><p> - HTTP/1.1 - ~2 325,03 МБит/сек (CPU load 45-50%)</p><p> - HTTP/2 - ~2 333,56 МБит/сек (CPU load 45-50%)</p><p> - HTTP/3 - ~1 350,26 МБит/сек (CPU load 50-55%)</p><p class="norm"><br/></p><p>Анализ профиля для протокола HTTP/3 при скачивании файла с самого сервера:</p><p>     482  27.1%  27.1%      482  27.1% __sendmsg</p><p>     473  26.6%  53.7%      473  26.6% __libc_pread64</p><p>     367  20.6%  74.4%      367  20.6% _aesni_ctr32_ghash_6x</p><p>     151   8.5%  82.8%      151   8.5% __memmove_avx_unaligned_erms</p><p>      58   3.3%  86.1%       58   3.3% epoll_wait</p><p>      31   1.7%  87.9%       31   1.7% __recvmsg</p><p>      10   0.6%  88.4%       93   5.2% ngx_quic_write_buffer</p><p>       8   0.4%  88.9%      100   5.6% ngx_quic_recvmsg</p><p>       7   0.4%  89.3%        7   0.4% __strcmp_avx2</p><p>       7   0.4%  89.7%        7   0.4% ngx_quic_read_buffer</p><p>       6   0.3%  90.0%      115   6.5% ngx_http_charset_body_filter</p><p>       6   0.3%  90.3%      108   6.1% ngx_http_write_filter</p><p>       6   0.3%  90.7%       82   4.6% ngx_quic_create_frame</p><p>       6   0.3%  91.0%        8   0.4% ossl_gcm_set_ctx_params</p><p>       5   0.3%  91.3%       19   1.1% EVP_CIPHER_CTX_ctrl</p><p>       5   0.3%  91.6%        5   0.3% aesni_ctr32_encrypt_blocks</p><p>       5   0.3%  91.8%        5   0.3% ngx_quic_alloc_buf</p><p>       5   0.3%  92.1%       15   0.8% ngx_quic_handle_ack_frame_range</p><p>       5   0.3%  92.4%       59   3.3% ngx_quic_handle_datagram</p><p>       4   0.2%  92.6%       10   0.6% CRYPTO_gcm128_encrypt_ctr32</p><p> </p><p>Анализ профиля для протокола HTTP/3 при скачивании файла по локальной сети:</p><p>     953  33.5%  33.5%      953  33.5% __sendmsg</p><p>     516  18.1%  51.6%      516  18.1% __libc_pread64</p><p>     388  13.6%  65.2%      388  13.6% _aesni_ctr32_ghash_6x</p><p>     128   4.5%  69.7%      128   4.5% __memmove_avx_unaligned_erms</p><p>     128   4.5%  74.2%      128   4.5% epoll_wait</p><p>     101   3.5%  77.7%      101   3.5% __recvmsg</p><p>      24   0.8%  78.6%      306  10.7% ngx_quic_recvmsg</p><p>      21   0.7%  79.3%       21   0.7% __strcmp_avx2</p><p>      20   0.7%  80.0%       76   2.7% ngx_quic_create_frame</p><p>      19   0.7%  80.7%      122   4.3% ngx_http_write_filter</p><p>      18   0.6%  81.3%       18   0.6% aesni_encrypt</p><p>      15   0.5%  81.8%      413  14.5% aesni_gcm_encrypt</p><p>      14   0.5%  82.3%       56   2.0% EVP_CIPHER_CTX_ctrl</p><p>      14   0.5%  82.8%     1690  59.3% ngx_quic_output</p><p>      13   0.5%  83.3%       23   0.8% ossl_gcm_set_ctx_params</p><p>      12   0.4%  83.7%       13   0.5% aesni_ctr32_encrypt_blocks</p><p>      12   0.4%  84.1%      627  22.0% ngx_quic_crypto_common</p><p>      12   0.4%  84.6%       16   0.6% ngx_quic_read_buffer</p><p>      11   0.4%  84.9%      678  23.8% ngx_output_chain</p><p>      11   0.4%  85.3%      695  24.4% ngx_quic_output_packet</p><p> </p><p>По итогу результаты значительно отличаются от тестов на виртуальной машине. На виртуальной машине при обработке</p><p>протокола QUIC процесс упирался в 100% и выдавал скорость больше, чем при обработке протокола HTTP 1.1, а на</p><p>реальном физическом месте держится в районе 60%, и просадка скорости значительная.</p><p>Может быть где-то быть узкое место в обработке QUIC, из-за которого проявляется более низкая скорость?</p><p> </p><p> </p><p class="norm">Вы писали 4 января 2024 г., 15:40:06:</p><p class="norm"><br/></p><p class="norm"></p><blockquote class="rt"><div dir="ltr"><div>на вашей виртуальной машине производительность уперлась в особенности реализации QUIC, вы просто выгребли 100% процессора.</div><div>скажем, вы замеряли "сколько можно получить байт в сек на данном цпу для разных реализаций"</div><div><br/></div><div>в QUIC Interop тесты весьма и весьма ресурсоемкие, там кроме передачи шифрованного трафика еще дешифруется трафик, захваченный через tshark.</div><div>в тестах, где меньше, чем 9700 - уперлись в особенности реализации, а 9700 - это выглядит как потолок для того железа<br/></div><div><br/></div><div>чем замечательны http/2 и http/3 - это протоколы и реализации очень качественно покрытые тестами, что-то совершенно невообразимое для http/1.1<br/>
</div></div>
</blockquote><p class="norm"></p><p class="norm"><br/></p><div class="email-signature">-- <br/>
С уважением,<br/>
 Izorkin                          <a class="HR" href="mailto:izorkin@gmail.com">mailto:izorkin@gmail.com</a></div></body>