Re: nginxQuic: скорость загрузки при активации kTLS
izorkin на gmail.com
izorkin на gmail.com
Пт Янв 5 17:46:20 UTC 2024
Добрый вечер, Илья.
Разобрался в чём была проблема - медленная дисковая подсистема. Скопировал тестовый файл в tmpfs, результаты
стали пропорционально результатам на физическом сервере.
Результаты без поддержки kTLS:
- HTTP/1.1 - ~251 Мбайт/сек (CPU load 100%)
- HTTP/2 - ~207 Мбайт/сек (CPU load 100%)
- HTTP/3 - ~259 Мбайт/сек (CPU load ~90%)
Результаты c поддержкой kTLS:
- HTTP/1.1 - ~603 Мбайт/сек (CPU load 100%)
- HTTP/2 - ~171 Мбайт/сек (CPU load 100%)
- HTTP/3 - ~260 Мбайт/сек (CPU load ~90%)
Анализ профиля для протокола HTTP/3 без поддержки kTLS:
Total: 2406 samples
843 35.0% 35.0% 843 35.0% __sendmsg
425 17.7% 52.7% 425 17.7% _aesni_ctr32_ghash_6x
406 16.9% 69.6% 406 16.9% pthread_cond_signal@@GLIBC_2.3.2
296 12.3% 81.9% 296 12.3% epoll_wait
91 3.8% 85.7% 91 3.8% __memmove_avx_unaligned_erms
55 2.3% 87.9% 55 2.3% __lll_lock_wake
29 1.2% 89.2% 29 1.2% __recvmsg
9 0.4% 89.5% 527 21.9% ngx_quic_output_packet
8 0.3% 89.9% 8 0.3% _init на 39000
8 0.3% 90.2% 74 3.1% ngx_quic_write_buffer
7 0.3% 90.5% 112 4.7% ngx_http_trailers_filter
6 0.2% 90.7% 16 0.7% EVP_CIPHER_CTX_ctrl
...
Анализ профиля для протокола HTTP/3 с поддержкой kTLS:
Total: 2392 samples
834 34.9% 34.9% 836 34.9% __sendmsg
457 19.1% 54.0% 457 19.1% pthread_cond_signal@@GLIBC_2.3.2
360 15.1% 69.0% 360 15.1% _aesni_ctr32_ghash_6x
278 11.6% 80.6% 278 11.6% epoll_wait
104 4.3% 85.0% 104 4.3% __memmove_avx_unaligned_erms
65 2.7% 87.7% 65 2.7% __lll_lock_wake
49 2.0% 89.8% 49 2.0% __recvmsg
12 0.5% 90.3% 634 26.5% ngx_output_chain
8 0.3% 90.6% 8 0.3% gcm_ghash_avx
7 0.3% 90.9% 7 0.3% __strcmp_avx2
6 0.3% 91.1% 6 0.3% aesni_encrypt
6 0.3% 91.4% 7 0.3% evp_cipher_init_internal
6 0.3% 91.6% 398 16.6% gcm_cipher_internal
5 0.2% 91.8% 8 0.3% __GI___clock_gettime
...
Получается, что для HTTP/3 активация kTLS не ускоряет работу (например, если файлы находятся в кэше nginx). Ех...
Вы писали 5 января 2024 г., 0:37:11:
> осторожно предположу, что в случае 100% утилизации cpu epoll себя так ведет.
> попробуйте донагрузить процессор чем-то типа "md5sum /dev/zero", чтобы максимально занять ядра, во всех ли случаях профили покажут epoll_wait ?
Инфраструктура Fideverse, в которую входит микро-блог Mastodon работает немного по другому. Это можно представить как большое количество
почтовых ящиков, которые работают на различном ПО и обмениваются между собой сообщениями. Большинство запросов выполняются по HTTP/1.1
протоколу.
Любой желающий может поднять инстанс и ощаться с остальной сетью. Там есть и представители разных ПО :)
Вы писали 5 января 2024 г., 0:46:49:
> возможно, часть запросов проксируется через инфраструктуру Mastodon, и для вас выглядит как http/1.1
Если так подумать, то смысла выключать скорее всего нет.
> риторический вопрос, если к вам 90% трафика приходит как http/1.1, и вы с этим ничего не можете поделать судя по всему, в чем смысл вопроса "включать или на включать http/{2,3}" ?
--
С уважением,
Izorkin mailto:izorkin на gmail.com
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20240105/4e650070/attachment.htm>
Подробная информация о списке рассылки nginx-ru