Re: nginxQuic: скорость загрузки при активации kTLS
Илья Шипицин
chipitsine на gmail.com
Чт Янв 4 16:44:26 UTC 2024
чт, 4 янв. 2024 г. в 17:04, <izorkin на gmail.com>:
> Добрый вечер, Илья.
>
>
>
> Замерил тесты на физическом сервере, пока без без поддержки kTLS.
>
> Оказывается в тестах на виртуальной машине я неправильно интерпретировал
> интерпретировал скорости,
>
> которые выводила утилита curl. Вместо МБит/сек там идёт МБайт/сек.
>
>
>
> Результаты тестов при скачивании файла с самого сервера:
>
> - HTTP/1.1 - ~3 504,14 МБит/сек (CPU load 100%)
>
> - HTTP/2 - ~3 568,57 МБит/сек (CPU load 100%)
>
> - HTTP/3 - ~2 872,09 МБит/сек (CPU load 58-62%)
>
>
>
> Результаты тестов при скачивании файла по локальной сети:
>
> - HTTP/1.1 - ~2 325,03 МБит/сек (CPU load 45-50%)
>
> - HTTP/2 - ~2 333,56 МБит/сек (CPU load 45-50%)
>
> - HTTP/3 - ~1 350,26 МБит/сек (CPU load 50-55%)
>
>
> Анализ профиля для протокола HTTP/3 при скачивании файла с самого сервера:
>
> 482 27.1% 27.1% 482 27.1% __sendmsg
>
> 473 26.6% 53.7% 473 26.6% __libc_pread64
>
> 367 20.6% 74.4% 367 20.6% _aesni_ctr32_ghash_6x
>
> 151 8.5% 82.8% 151 8.5% __memmove_avx_unaligned_erms
>
> 58 3.3% 86.1% 58 3.3% epoll_wait
>
> 31 1.7% 87.9% 31 1.7% __recvmsg
>
> 10 0.6% 88.4% 93 5.2% ngx_quic_write_buffer
>
> 8 0.4% 88.9% 100 5.6% ngx_quic_recvmsg
>
> 7 0.4% 89.3% 7 0.4% __strcmp_avx2
>
> 7 0.4% 89.7% 7 0.4% ngx_quic_read_buffer
>
> 6 0.3% 90.0% 115 6.5% ngx_http_charset_body_filter
>
> 6 0.3% 90.3% 108 6.1% ngx_http_write_filter
>
> 6 0.3% 90.7% 82 4.6% ngx_quic_create_frame
>
> 6 0.3% 91.0% 8 0.4% ossl_gcm_set_ctx_params
>
> 5 0.3% 91.3% 19 1.1% EVP_CIPHER_CTX_ctrl
>
> 5 0.3% 91.6% 5 0.3% aesni_ctr32_encrypt_blocks
>
> 5 0.3% 91.8% 5 0.3% ngx_quic_alloc_buf
>
> 5 0.3% 92.1% 15 0.8% ngx_quic_handle_ack_frame_range
>
> 5 0.3% 92.4% 59 3.3% ngx_quic_handle_datagram
>
> 4 0.2% 92.6% 10 0.6% CRYPTO_gcm128_encrypt_ctr32
>
не совсем понятно, что означают эти проценты.
например " 482 27.1% 27.1% 482 27.1% __sendmsg" - что в первом и
что во втором столбце
>
>
> Анализ профиля для протокола HTTP/3 при скачивании файла по локальной сети:
>
> 953 33.5% 33.5% 953 33.5% __sendmsg
>
> 516 18.1% 51.6% 516 18.1% __libc_pread64
>
> 388 13.6% 65.2% 388 13.6% _aesni_ctr32_ghash_6x
>
> 128 4.5% 69.7% 128 4.5% __memmove_avx_unaligned_erms
>
> 128 4.5% 74.2% 128 4.5% epoll_wait
>
> 101 3.5% 77.7% 101 3.5% __recvmsg
>
> 24 0.8% 78.6% 306 10.7% ngx_quic_recvmsg
>
> 21 0.7% 79.3% 21 0.7% __strcmp_avx2
>
> 20 0.7% 80.0% 76 2.7% ngx_quic_create_frame
>
> 19 0.7% 80.7% 122 4.3% ngx_http_write_filter
>
> 18 0.6% 81.3% 18 0.6% aesni_encrypt
>
> 15 0.5% 81.8% 413 14.5% aesni_gcm_encrypt
>
> 14 0.5% 82.3% 56 2.0% EVP_CIPHER_CTX_ctrl
>
> 14 0.5% 82.8% 1690 59.3% ngx_quic_output
>
> 13 0.5% 83.3% 23 0.8% ossl_gcm_set_ctx_params
>
> 12 0.4% 83.7% 13 0.5% aesni_ctr32_encrypt_blocks
>
> 12 0.4% 84.1% 627 22.0% ngx_quic_crypto_common
>
> 12 0.4% 84.6% 16 0.6% ngx_quic_read_buffer
>
> 11 0.4% 84.9% 678 23.8% ngx_output_chain
>
> 11 0.4% 85.3% 695 24.4% ngx_quic_output_packet
>
>
>
> По итогу результаты значительно отличаются от тестов на виртуальной
> машине. На виртуальной машине при обработке
>
> протокола QUIC процесс упирался в 100% и выдавал скорость больше, чем при
> обработке протокола HTTP 1.1, а на
>
> реальном физическом месте держится в районе 60%, и просадка скорости
> значительная.
>
> Может быть где-то быть узкое место в обработке QUIC, из-за которого
> проявляется более низкая скорость?
>
смотрите. я предлагал потестировать quictls-1.1.1, вы проигнорировали.
более того, вы сняли профиль для http/1.1 - там видно, что использууется
sendfile, для http/3 используются совсем другие функции
т.е. вы буквально видите, что механизмы отдачи для http/1.1 и http/3 разные.
возможно, что в этом различии заключается то самое узкое место, про которое
вы говорите.
вы ожидаете прямого ответа "да, там где-то есть узкое место".
ок, вы его услышали. на этом исследование закончено )) ?
>
>
>
>
> Вы писали 4 января 2024 г., 15:40:06:
>
>
> на вашей виртуальной машине производительность уперлась в особенности
> реализации QUIC, вы просто выгребли 100% процессора.
> скажем, вы замеряли "сколько можно получить байт в сек на данном цпу для
> разных реализаций"
>
> в QUIC Interop тесты весьма и весьма ресурсоемкие, там кроме передачи
> шифрованного трафика еще дешифруется трафик, захваченный через tshark.
> в тестах, где меньше, чем 9700 - уперлись в особенности реализации, а 9700
> - это выглядит как потолок для того железа
>
> чем замечательны http/2 и http/3 - это протоколы и реализации очень
> качественно покрытые тестами, что-то совершенно невообразимое для http/1.1
>
>
> --
> С уважением,
> Izorkin mailto:izorkin на gmail.com
> <izorkin на gmail.com>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20240104/4357ddef/attachment.htm>
Подробная информация о списке рассылки nginx-ru