Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность Илья Шипицин
чт, 4 янв. 2024 г. в 22:21, :

> Добрый вечер, Илья.
>
>
> Благодарю за рекомендации!
>
> По логам для Mastodon запросы идут в основном по протоколу HTTP/1.1, а по
> HTTP/2 протоколу
>
> раз в 10 меньше, если сравнить сегодняшний лог.
>

возможно, часть запросов проксируется через инфраструктуру Mastodon, и для
вас выглядит как http/1.1

риторический вопрос, если к вам 90% трафика приходит как http/1.1, и вы с
этим ничего не можете поделать судя по всему, в чем смысл вопроса "включать
или на включать http/{2,3}" ?


>
>
> Для Mastodon сейчас пытаюсь разобраться и оптимизировать конфигурацию для
> него:
>
> https://github.com/mastodon/mastodon/pull/19644
>
>
>
> Вполне возможно, что мог что-то упустить :)
>
>
>
> Вы писали 4 января 2024 г., 23:25:28:
>
>
>
> как можно поступить в данном случае.
>
> Mastodon - судя по описанию
>
> 1) written using ruby
> 2) туда ходят браузеры
>
> из первого я бы предположил, что в конфиге есть proxy_pass (или аналог), а
> значит нагрузка будет не sendfile-овая
> из второго - в общих чертах, если есть браузеры, то примерно в 100% ответ
> "да" для http/2 и http/3
>
> http2 и http/3 делают для браузера более кайфово. ценой некоторого доп
> расхода цпу. браузер себя лимитирует 2-мя tcp
> сессиями, в рамках http/1.1 браузер может скачивать одновременно 2
> объекта. современная верстка предполагает несколько десятков css, js, png
> файлов,
> в http/2 есть мультиплексирование запросов внутри одной сессии, за счет
> чего браузер может одновременно качать все файлы, не дожидаясь каждого
> отдельно.
>
> Для оптимизации я ещё настроил автоматическое предварительное сжатие
> статических файлов в brotli и gzip форматы присутствующих в пакетах
> Mastodon/Peertube в NixOS.
>
>
>
> еще http/2 более кайфово для браузера сжимает трафик за счет дедупликации
> хедеров и подобных мелочей (что тоже немного увеличивает расход процессора)
>
> если у вас что-то, куда ходит браузер (вы говорите, блог на Mastodon), то
> вопрос включения или не включения http/2 обычно - насколько браузеру будет
> кайфовее, а не
> насколько вырастет расход процессора.
>
> Ну до 2-го пункта врядли дойдёт дело. Параметр для0-RTT использую в HTTP/3
> протоколе :). Протестировать сайт с
>
> помощью pagespeed надо как-нибудь протестировать, не забыть.
>
> я бы посоветовался с каким-нибудь SEO из вебстудии, но то, что навскидку
> приходит в голову ...
>
> 1) https://pagespeed.web.dev/ (с включенным и выключенным http/2)
> 2) сертификаты EC
> 3) 0-RTT (early data)
>
>
> А вот с разницей в противоположных результатах скорости между виртуальным
> и физическим сервером надо
>
> бы как-то разобраться, хотя бы понять почему так происходит :)
>
>
>
>
> --
> С уважением,
>  Izorkin  mailto:izor...@gmail.com
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность Илья Шипицин
чт, 4 янв. 2024 г. в 22:21, :

> Добрый вечер, Илья.
>
>
> Благодарю за рекомендации!
>
> По логам для Mastodon запросы идут в основном по протоколу HTTP/1.1, а по
> HTTP/2 протоколу
>
> раз в 10 меньше, если сравнить сегодняшний лог.
>
>
>
> Для Mastodon сейчас пытаюсь разобраться и оптимизировать конфигурацию для
> него:
>
> https://github.com/mastodon/mastodon/pull/19644
>
>
>
> Вполне возможно, что мог что-то упустить :)
>
>
>
> Вы писали 4 января 2024 г., 23:25:28:
>
>
>
> как можно поступить в данном случае.
>
> Mastodon - судя по описанию
>
> 1) written using ruby
> 2) туда ходят браузеры
>
> из первого я бы предположил, что в конфиге есть proxy_pass (или аналог), а
> значит нагрузка будет не sendfile-овая
> из второго - в общих чертах, если есть браузеры, то примерно в 100% ответ
> "да" для http/2 и http/3
>
> http2 и http/3 делают для браузера более кайфово. ценой некоторого доп
> расхода цпу. браузер себя лимитирует 2-мя tcp
> сессиями, в рамках http/1.1 браузер может скачивать одновременно 2
> объекта. современная верстка предполагает несколько десятков css, js, png
> файлов,
> в http/2 есть мультиплексирование запросов внутри одной сессии, за счет
> чего браузер может одновременно качать все файлы, не дожидаясь каждого
> отдельно.
>
> Для оптимизации я ещё настроил автоматическое предварительное сжатие
> статических файлов в brotli и gzip форматы присутствующих в пакетах
> Mastodon/Peertube в NixOS.
>
>
>
> еще http/2 более кайфово для браузера сжимает трафик за счет дедупликации
> хедеров и подобных мелочей (что тоже немного увеличивает расход процессора)
>
> если у вас что-то, куда ходит браузер (вы говорите, блог на Mastodon), то
> вопрос включения или не включения http/2 обычно - насколько браузеру будет
> кайфовее, а не
> насколько вырастет расход процессора.
>
> Ну до 2-го пункта врядли дойдёт дело. Параметр для0-RTT использую в HTTP/3
> протоколе :). Протестировать сайт с
>
> помощью pagespeed надо как-нибудь протестировать, не забыть.
>
> я бы посоветовался с каким-нибудь SEO из вебстудии, но то, что навскидку
> приходит в голову ...
>
> 1) https://pagespeed.web.dev/ (с включенным и выключенным http/2)
> 2) сертификаты EC
> 3) 0-RTT (early data)
>
>
> А вот с разницей в противоположных результатах скорости между виртуальным
> и физическим сервером надо
>
> бы как-то разобраться, хотя бы понять почему так происходит :)
>

осторожно предположу, что в случае 100% утилизации cpu epoll себя так ведет.
попробуйте донагрузить процессор чем-то типа "md5sum /dev/zero", чтобы
максимально занять ядра, во всех ли случаях профили покажут epoll_wait ?


>
>
>
> --
> С уважением,
>  Izorkin  mailto:izor...@gmail.com
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность izorkin
Добрый вечер, Илья.

Благодарю за рекомендации!
По логам для Mastodon запросы идут в основном по протоколу HTTP/1.1, а по 
HTTP/2 протоколу
раз в 10 меньше, если сравнить сегодняшний лог.
 
Для Mastodon сейчас пытаюсь разобраться и оптимизировать конфигурацию для него:
https://github.com/mastodon/mastodon/pull/19644
 
Вполне возможно, что мог что-то упустить :)
 
Вы писали 4 января 2024 г., 23:25:28:
 
> как можно поступить в данном случае.

> Mastodon - судя по описанию

> 1) written using ruby
> 2) туда ходят браузеры

> из первого я бы предположил, что в конфиге есть proxy_pass (или аналог), а 
> значит нагрузка будет не sendfile-овая
> из второго - в общих чертах, если есть браузеры, то примерно в 100% ответ 
> "да" для http/2 и http/3

> http2 и http/3 делают для браузера более кайфово. ценой некоторого доп 
> расхода цпу. браузер себя лимитирует 2-мя tcp
> сессиями, в рамках http/1.1 браузер может скачивать одновременно 2 объекта. 
> современная верстка предполагает несколько десятков css, js, png файлов,
> в http/2 есть мультиплексирование запросов внутри одной сессии, за счет чего 
> браузер может одновременно качать все файлы, не дожидаясь каждого отдельно.
Для оптимизации я ещё настроил автоматическое предварительное сжатие 
статических файлов в brotli и gzip форматы присутствующих в пакетах 
Mastodon/Peertube в NixOS.
 
> еще http/2 более кайфово для браузера сжимает трафик за счет дедупликации 
> хедеров и подобных мелочей (что тоже немного увеличивает расход процессора)
> если у вас что-то, куда ходит браузер (вы говорите, блог на Mastodon), то 
> вопрос включения или не включения http/2 обычно - насколько браузеру будет 
> кайфовее, а не
> насколько вырастет расход процессора.
Ну до 2-го пункта врядли дойдёт дело. Параметр для0-RTT использую в HTTP/3 
протоколе :). Протестировать сайт с 
помощью pagespeed надо как-нибудь протестировать, не забыть.
> я бы посоветовался с каким-нибудь SEO из вебстудии, но то, что навскидку 
> приходит в голову ...

> 1) https://pagespeed.web.dev/ (с включенным и выключенным http/2)
> 2) сертификаты EC
> 3) 0-RTT (early data)

А вот с разницей в противоположных результатах скорости между виртуальным и 
физическим сервером надо
бы как-то разобраться, хотя бы понять почему так происходит :)
 
 
-- 
С уважением,
 Izorkin                          mailto:izor...@gmail.com___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность Илья Шипицин
чт, 4 янв. 2024 г. в 20:37, :

> Добрый вечер, Илья.
>
>
> "Использовать у себя" - можете поделиться, где именно вы используете, если
> не секрет?
>
>
> Использую на домашнем сервере, почта, микроблог Mastodon (Fediverse) и
> другие сервисы :)
>

как можно поступить в данном случае.

Mastodon - судя по описанию

1) written using ruby
2) туда ходят браузеры

из первого я бы предположил, что в конфиге есть proxy_pass (или аналог), а
значит нагрузка будет не sendfile-овая
из второго - в общих чертах, если есть браузеры, то примерно в 100% ответ
"да" для http/2 и http/3

http2 и http/3 делают для браузера более кайфово. ценой некоторого доп
расхода цпу. браузер себя лимитирует 2-мя tcp
сессиями, в рамках http/1.1 браузер может скачивать одновременно 2 объекта.
современная верстка предполагает несколько десятков css, js, png файлов,
в http/2 есть мультиплексирование запросов внутри одной сессии, за счет
чего браузер может одновременно качать все файлы, не дожидаясь каждого
отдельно.

еще http/2 более кайфово для браузера сжимает трафик за счет дедупликации
хедеров и подобных мелочей (что тоже немного увеличивает расход процессора)

если у вас что-то, куда ходит браузер (вы говорите, блог на Mastodon), то
вопрос включения или не включения http/2 обычно - насколько браузеру будет
кайфовее, а не
насколько вырастет расход процессора.

я бы посоветовался с каким-нибудь SEO из вебстудии, но то, что навскидку
приходит в голову ...

1) https://pagespeed.web.dev/ (с включенным и выключенным http/2)
2) сертификаты EC
3) 0-RTT (early data)



> Ну и в других местах, если надо кому-то что-то по мелочи настроить, но это
> не часто требуется.
>
>
>
>
> --
> С уважением,
>  Izorkin  mailto:izor...@gmail.com
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность izorkin
Добрый вечер, Илья.

> "Использовать у себя" - можете поделиться, где именно вы используете, если не 
> секрет?

Использую на домашнем сервере, почта, микроблог Mastodon (Fediverse) и другие 
сервисы :)
Ну и в других местах, если надо кому-то что-то по мелочи настроить, но это не 
часто требуется.
 
 
-- 
С уважением,
 Izorkin                          mailto:izor...@gmail.com___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность Илья Шипицин
On Thu, Jan 4, 2024, 20:07  wrote:

> Добрый вечер, Илья.
>
>
>
> Вы писали 4 января 2024 г., 21:04:48:
>
>
> выглядит так, будто вас интересует что-то конкретное. а остальное вы
> игнорируете.
>
> давайте отталкиваться от ваших ожиданий. что бы для вас было интересным
> результатом в рамках данного исследования ?
>
> В рамках данного исследования хотел сравнить как влияет активация
> поддержки kTLS на производительность.
>
>
>
> В ходе тестирования для меня было не понятно, почему для HTTP/3 на основе
> UDP протокола скорость ниже, чем
>
> для HTTP/1.1 на основе TCP протокола в режиме работы с использованием
> kTLS. Без этого режима видно,
>
> что HTTP/3 быстрее, чем HTTP/1.1 на виртуальной машине.
>
> А вот при тестировании на физическом сервере результаты сильно отличаются.
> В обоих случаях,с использованием kTLS и
>
> без него, HTTP 1/1 быстрее.
>
> Вот это путаница в результатах мне и не понятна.
>
> вопрос в том, что за проценты в ваших столбцах, у вас в каждой строке 3
> раза упоминаются проценты. что каждый из них означает (и навряд ли забытый
> epoll как-то
> даст ответ на вопрос, что это за проценты)
>
> еще раз, вы живете в своей картине мира. мои вопросы, судя по всему, не
> очень понятны и интересны.
>
> Вот пытаюсь разобраться, надо разгрести кашу в голове :)
>
>
>
> Профилирование процессов для меня неизведанная область, поэтому я мало
> понимаю в результатах
>
> вывода google performance tools. Поэтому точно не могу сказать что значат
> эти проценты. Возможно,
>
> что это проценты использования пользовательского и системного окружения.
>
>
>
> Из того, что понял в попытке анализа профиля, так это то, что при
> использовании протокола HTTP/1.1
>
> в основном используется метод sendfile64, что позволяет добиться высокой
> скорости обработки. А вот
>
> при обработке протокола HTTP/3 задействованы другие методы, по итогу
> скорость обработки медленнее.
>
>
>
> Ещё не могу понять, так это почему у меня в тестах на виртуальной машине
> высокое значение epoll_wait
>
> для протокола HTTP/3, а в остальных тестах оно минимально, как и на
> физическом сервере. Если бы была
>
> проблема со скоростью чтения файла, то и для протокола HTTP/1.1 значение 
> epoll_wait
> было бы примерно
>
> одинаковым.
>
>
>
>
>
> Также тесты дают задуматься о том, стоит ли вообще использовать у себя
> протокол HTTP/2, результаты
>
> с использованием kTLS низкие.
>

"Использовать у себя" - можете поделиться, где именно вы используете, если
не секрет?


>
>
> --
> С уважением,
>  Izorkin  mailto:izor...@gmail.com
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность izorkin
Добрый вечер, Илья.
 
Вы писали 4 января 2024 г., 21:04:48:

> выглядит так, будто вас интересует что-то конкретное. а остальное вы 
> игнорируете.
> давайте отталкиваться от ваших ожиданий. что бы для вас было интересным 
> результатом в рамках данного исследования ?
В рамках данного исследования хотел сравнить как влияет активация поддержки 
kTLS на производительность.
 
В ходе тестирования для меня было не понятно, почему для HTTP/3 на основе UDP 
протокола скорость ниже, чем
для HTTP/1.1 на основе TCP протокола в режиме работы с использованием kTLS. Без 
этого режима видно,
что HTTP/3 быстрее, чем HTTP/1.1 на виртуальной машине.
А вот при тестировании на физическом сервере результаты сильно отличаются. В 
обоих случаях,с использованием kTLS и
без него, HTTP 1/1 быстрее.
Вот это путаница в результатах мне и не понятна.
> вопрос в том, что за проценты в ваших столбцах, у вас в каждой строке 3 раза 
> упоминаются проценты. что каждый из них означает (и навряд ли забытый epoll 
> как-то
> даст ответ на вопрос, что это за проценты)

> еще раз, вы живете в своей картине мира. мои вопросы, судя по всему, не очень 
> понятны и интересны.
Вот пытаюсь разобраться, надо разгрести кашу в голове :)
 
Профилирование процессов для меня неизведанная область, поэтому я мало понимаю 
в результатах
вывода google performance tools. Поэтому точно не могу сказать что значат эти 
проценты. Возможно,
что это проценты использования пользовательского и системного окружения.
 
Из того, что понял в попытке анализа профиля, так это то, что при использовании 
протокола HTTP/1.1
в основном используется метод sendfile64, что позволяет добиться высокой 
скорости обработки. А вот
при обработке протокола HTTP/3 задействованы другие методы, по итогу скорость 
обработки медленнее.
 
Ещё не могу понять, так это почему у меня в тестах на виртуальной машине 
высокое значение epoll_wait
для протокола HTTP/3, а в остальных тестах оно минимально, как и на физическом 
сервере. Если бы была
проблема со скоростью чтения файла, то и для протокола HTTP/1.1 значение 
epoll_wait было бы примерно
одинаковым.
 
 
Также тесты дают задуматься о том, стоит ли вообще использовать у себя протокол 
HTTP/2, результаты
с использованием kTLS низкие.
 
 
-- 
С уважением,
 Izorkin                          mailto:izor...@gmail.com___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность Илья Шипицин
чт, 4 янв. 2024 г. в 18:56, :

> Добрый вечер, Илья.
>
>
>
> Вы писали 4 января 2024 г., 19:44:26:
>
>
> смотрите. я предлагал потестировать quictls-1.1.1, вы проигнорировали.
>
> Я пробовал использовать quictls-1.1.1, но там прирост скорости
> незначительный был. Сейчас ещё раз проверил, изменений
>
> в скорости практически нет
>

ну, выглядело так, будто проигнорировали. приношу извинения


>
>
>
>
> более того, вы сняли профиль для http/1.1 - там видно, что использууется
> sendfile, для http/3 используются совсем другие функции
>
>
> т.е. вы буквально видите, что механизмы отдачи для http/1.1 и http/3
> разные.
>
> возможно, что в этом различии заключается то самое узкое место, про
> которое вы говорите.
>
> вы ожидаете прямого ответа "да, там где-то есть узкое место".
> ок, вы его услышали. на этом исследование закончено )) ?
>
> Думал, может есть какой-то волшебный метод ускорения :)
>

выглядит так, будто вас интересует что-то конкретное. а остальное вы
игнорируете.

давайте отталкиваться от ваших ожиданий. что бы для вас было интересным
результатом в рамках данного исследования ?


> И ещё видно, что при тесте на виртуальной машине высокое значение у epoll_wait
> для HTTP/3 протокола (35.7%, против 0.2% для
>
> протокола HTTP 1.1), поэтому у меня тест на физической машине значительно
> отличается.
>
>
>
>
>
> не совсем понятно, что означают эти проценты.
> например " 482  27.1%  27.1%  482  27.1% __sendmsg" - что в первом и
> что во втором столбце
>
> Может из-за того, что я забыл включить epoll во время тестов...
>
> Перезапустил тесты для HTTP/3 протокола.
>


нет. нет. и опять нет.
epoll на линуксе автоматически по дефолту.

вопрос в том, что за проценты в ваших столбцах, у вас в каждой строке 3
раза упоминаются проценты. что каждый из них означает (и навряд ли забытый
epoll как-то
даст ответ на вопрос, что это за проценты)

еще раз, вы живете в своей картине мира. мои вопросы, судя по всему, не
очень понятны и интересны.

сформулируйте, пожалуйста, ваши ожидания от исследования. попробую вам
помочь в рамках ваших интересов


>
>
> Тест на сервере:
>
> Total: 1804 samples
>
> 476  26.4%  26.4%  476  26.4% __libc_pread64
>
> 468  25.9%  52.3%  468  25.9% __sendmsg
>
> 393  21.8%  74.1%  393  21.8% _aesni_ctr32_ghash_6x
>
> 148  8.2%  82.3%  148  8.2% __memmove_avx_unaligned_erms
>
>   41  2.3%  84.6%  41  2.3% epoll_wait
>
>   33  1.8%  86.4%  33  1.8% __recvmsg
>
>   14  0.8%  87.2%  87  4.8% ngx_quic_create_frame
>
>   9  0.5%  87.7%  10  0.6% aesni_ctr32_encrypt_blocks
>
>
>
> Тест по локальной сети:
>
> 934  32.8%  32.8%  934  32.8% __sendmsg
>
> 531  18.6%  51.4%  531  18.6% __libc_pread64
>
> 462  16.2%  67.7%  462  16.2% _aesni_ctr32_ghash_6x
>
> 126  4.4%  72.1%  126  4.4% __memmove_avx_unaligned_erms
>
> 116  4.1%  76.2%  116  4.1% epoll_wait
>
>   68  2.4%  78.5%  68  2.4% __recvmsg
>
>   27  0.9%  79.5%  257  9.0% ngx_quic_recvmsg
>
>   21  0.7%  80.2%  21  0.7% __strcmp_avx2
>
>   20  0.7%  80.9%  20  0.7% aesni_encrypt
>
>
>
>
> --
> С уважением,
>  Izorkin  mailto:izor...@gmail.com
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность izorkin
Добрый вечер, Илья.
 
Вы писали 4 января 2024 г., 19:44:26:

> смотрите. я предлагал потестировать quictls-1.1.1, вы проигнорировали.
Я пробовал использовать quictls-1.1.1, но там прирост скорости незначительный 
был. Сейчас ещё раз проверил, изменений
в скорости практически нет
 
 
> более того, вы сняли профиль для http/1.1 - там видно, что использууется 
> sendfile, для http/3 используются совсем другие функции
> т.е. вы буквально видите, что механизмы отдачи для http/1.1 и http/3 разные.

> возможно, что в этом различии заключается то самое узкое место, про которое 
> вы говорите.

> вы ожидаете прямого ответа "да, там где-то есть узкое место".
> ок, вы его услышали. на этом исследование закончено )) ?
Думал, может есть какой-то волшебный метод ускорения :)
И ещё видно, что при тесте на виртуальной машине высокое значение у epoll_wait 
для HTTP/3 протокола (35.7%, против 0.2% для
протокола HTTP 1.1), поэтому у меня тест на физической машине значительно 
отличается.
 
 
> не совсем понятно, что означают эти проценты.например " 482  27.1%  27.1%     
>  482  27.1% __sendmsg" - что в первом и что во втором столбце
Может из-за того, что я забыл включить epoll во время тестов...
Перезапустил тесты для HTTP/3 протокола.
 
Тест на сервере:
Total: 1804 samples
    476  26.4%  26.4%      476  26.4% __libc_pread64
    468  25.9%  52.3%      468  25.9% __sendmsg
    393  21.8%  74.1%      393  21.8% _aesni_ctr32_ghash_6x
    148  8.2%  82.3%      148  8.2% __memmove_avx_unaligned_erms
      41  2.3%  84.6%      41  2.3% epoll_wait
      33  1.8%  86.4%      33  1.8% __recvmsg
      14  0.8%  87.2%      87  4.8% ngx_quic_create_frame
      9  0.5%  87.7%      10  0.6% aesni_ctr32_encrypt_blocks
 
Тест по локальной сети:
    934  32.8%  32.8%      934  32.8% __sendmsg
    531  18.6%  51.4%      531  18.6% __libc_pread64
    462  16.2%  67.7%      462  16.2% _aesni_ctr32_ghash_6x
    126  4.4%  72.1%      126  4.4% __memmove_avx_unaligned_erms
    116  4.1%  76.2%      116  4.1% epoll_wait
      68  2.4%  78.5%      68  2.4% __recvmsg
      27  0.9%  79.5%      257  9.0% ngx_quic_recvmsg
      21  0.7%  80.2%      21  0.7% __strcmp_avx2
      20  0.7%  80.9%      20  0.7% aesni_encrypt
 
  
-- 
С уважением,
 Izorkin                          mailto:izor...@gmail.com___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность Илья Шипицин
чт, 4 янв. 2024 г. в 17:04, :

> Добрый вечер, Илья.
>
>
>
> Замерил тесты на физическом сервере, пока без без поддержки 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 - это протоколы

Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность izorkin
Добрый вечер, Илья.
 
Замерил тесты на физическом сервере, пока без без поддержки 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
 
Анализ профиля для протокола 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, из-за которого проявляется 
более низкая скорость?
 
 
Вы писали 4 января 2024 г., 15:40:06:

> на вашей виртуальной машине производительность уперлась в особенности 
> реализации QUIC, вы просто выгребли 100% процессора.
> скажем, вы замеряли "сколько можно получить байт в сек на данном цпу для 
> разных реализаций"

> в QUIC Interop тесты весьма и весьма ресурсоемкие, там кроме передачи 
> шифрованного трафика еще дешифруется трафик, захваченный через tshark.
> в тестах, где меньше, чем 9700 - уперлись в особенности реализации, а 9700 - 
> это выглядит как потолок для того железа

> чем замечательны http/2 и http/3 - это протоколы и реализации очень 
> качественно покрытые тестами, что-то совершенно невообразимое для http/1.1

-- 
С уважением,
 Izorkin                          mailto:izor...@gmail.com___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность Илья Шипицин
на вашей виртуальной машине производительность уперлась в особенности
реализации QUIC, вы просто выгребли 100% процессора.
скажем, вы замеряли "сколько можно получить байт в сек на данном цпу для
разных реализаций"

в QUIC Interop тесты весьма и весьма ресурсоемкие, там кроме передачи
шифрованного трафика еще дешифруется трафик, захваченный через tshark.
в тестах, где меньше, чем 9700 - уперлись в особенности реализации, а 9700
- это выглядит как потолок для того железа

чем замечательны http/2 и http/3 - это протоколы и реализации очень
качественно покрытые тестами, что-то совершенно невообразимое для http/1.1


чт, 4 янв. 2024 г. в 13:24, :

> Добрый день, Илья.
>
>
> По результатам видно, что скорость явно больше, чем у меня выходит на
>
> виртуальной машине. Но скорость не превышает ~9700 кбит/сек. Там у них
>
> не упираются тесты в ограничения сетевой карты?
>
> Надо наверное попробовать протестировать на физическом сервере.
>
>
>
> Вы писали 4 января 2024 г., 14:24:21:
>
>
> кстати, у QUIC Interop есть замеры быстродействия (Measurement result)
>
> https://interop.seemann.io/
>
>
> --
> С уважением,
>  Izorkin  mailto:izor...@gmail.com
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность izorkin
Добрый день, Илья.

По результатам видно, что скорость явно больше, чем у меня выходит на
виртуальной машине. Но скорость не превышает ~9700 кбит/сек. Там у них
не упираются тесты в ограничения сетевой карты?
Надо наверное попробовать протестировать на физическом сервере.
 
Вы писали 4 января 2024 г., 14:24:21:

> кстати, у QUIC Interop есть замеры быстродействия (Measurement result)

> https://interop.seemann.io/

-- 
С уважением,
 Izorkin                          mailto:izor...@gmail.com___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: nginxQuic: скорость загрузки при активации kTLS

2024-01-04 Пенетрантность Илья Шипицин
кстати, у QUIC Interop есть замеры быстродействия (Measurement result)

https://interop.seemann.io/

вт, 2 янв. 2024 г. в 21:50, :

> Здравствуйте.
>
> Сравнил скорость загрузки большого файла на тестовой виртуальной машине
> разными протоколами:
>  - HTTP/1.1 - ~102 МБит/сек
>  - HTTP/2 - ~97 МБит/сек
>  - HTTP/3 - ~125 МБит/сек
>
> После активации поддержки kTLS результаты улучшились, но не для протокола
> HTTP/2:
>  - HTTP/1.1 - ~169 МБит/сек
>  - HTTP/2 - ~70 МБит/сек
>  - HTTP/3 - ~132 МБит/сек
>
> Возможно ли добиться повышения скорости для протокола HTTP/3 при поддержке
> kTLS, сопоставимой со скоростью по протоколу HTTP/1.1?
>
>
> --
> С уважением,
>  Izorkin  mailto:izor...@gmail.com
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru