mindly.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
Mindly.Social is an English speaking, friendly Mastodon instance created for people who want to use their brains and their hearts to make social networking more social. 🧠💖

Administered by:

Server stats:

1.1K
active users

#sendfile

0 posts0 participants0 posts today
Marcel Waldvogel<p>All you never wanted to know about creating fast socket I/O on <a href="https://waldvogel.family/tags/Linux" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Linux</span></a>. Unless you are a real geek.</p><p>A small, ultra-high performance publish-subscribe server doing kind of TCP <a href="https://waldvogel.family/tags/multicast" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>multicast</span></a> using <a href="https://waldvogel.family/tags/sendfile" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>sendfile</span></a>, <a href="https://waldvogel.family/tags/io_uring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>io_uring</span></a>, <a href="https://waldvogel.family/tags/splice" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>splice</span></a>, (mapped) files, and <a href="https://waldvogel.family/tags/fallocate" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>fallocate</span></a> for file hole punching.</p><p>Saturating a 10 Gbps link with useful data with just 8 cores.</p><p>A beautiful writeup for anyone into fast Linux networking. Not just for <a href="https://waldvogel.family/tags/ATproto" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ATproto</span></a> </p><p>h/t <span class="h-card" translate="no"><a href="https://smnn.ch/@nohillside" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>nohillside</span></a></span> <br><a href="https://waldvogel.family/tags/PubSub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PubSub</span></a> <a href="https://waldvogel.family/tags/Kernel" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Kernel</span></a> <a href="https://waldvogel.family/tags/Hacking" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Hacking</span></a> <br><a href="https://www.asayers.com/jetrelay" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="">asayers.com/jetrelay</span><span class="invisible"></span></a></p>
Лафиэль Элентари<p>Сделал простой тест на скачивание большого файла и сравнил влияние поддержки шифрования TLS на уровне ядра (kTLS) на производительность web-сервера Nginx. Тестовый файл размером 14.3 Gb разместил на файловой системе tmpfs и скачивал его утилитой curl в /dev/null. Для каждого теста использовал по 100 замеров и вычислил среднее значение.</p><p>В настройках Nginx для поддержки kTLS надо активировать поддержку sendfile().</p><p>Теперь в NixOS модуль ssl автоматически загружает в ядро, если активирован web-сервер Nginx. </p><p>Пример настройки Nginx для активации kTLS в NixOS:<br> services.nginx.virtualHosts."example.com" = {<br> kTLS = true;<br> extraConfig = ''<br> sendfile on;<br> '';<br> };</p><p>Результаты тестирования в MBit/sec с разными комбинациями Sendfile и kTLS:<br>1) Sendfile off, kTLS off<br> - HTTP/1.1 - 4&nbsp;274,53<br> - HTTP/2 - 4&nbsp;039,19<br> - HTTP/3 - 3&nbsp;321,10</p><p>2) Sendfile off, kTLS on<br> - HTTP/1.1 - 3&nbsp;893,23<br> - HTTP/2 - 3&nbsp;690,46<br> - HTTP/3 - 3&nbsp;344,11</p><p>3) Sendfile on, kTLS off<br> - HTTP/1.1 - 4&nbsp;385,40<br> - HTTP/2 - 4&nbsp;190,42<br> - HTTP/3 - 3&nbsp;320,28</p><p>4) Sendfile on, kTLS on<br> - HTTP/1.1 - 5&nbsp;558,75<br> - HTTP/2 - 2&nbsp;340,39<br> - HTTP/3 - 3&nbsp;306,99</p><p>Мои предположения, что kTLS поддерживает HTTP/3 протокол и то, что скорость скачивания будет достаточно высокой, по сравнению с другими протоколами, оказались неверными.</p><p>В тестах, при скачивании по HTTP/3 протоколу, ядро процессора нагружалось всего до ~60%, по сравнение в 100%, при тестировании на остальных протоколах. Предполагаю, что протокол будут дальше отлаживать и оптимизировать.</p><p>При использовании kTLS и sendfile() значительно проседает скорость скачивания по HTTP/2 протоколу. А всё из-за того, что sendfile(), при включенном kTLS, начинает работать плохо для из-за фрейминга, вызывающий большое количество syscall-ов.</p><p>По итогу, для обслуживание больших статических файлов, рекомендуется включить поддержку kTLS и использовать только HTTP/1.1 протокол. Там, где это невозможно сделать, можно отключить HTTP/2 протокол и использовать остальные протоколы - HTTP/1.1 и HTTP/3. Не смотря на то, что HTTP/3 протокол имеет более низкую скорость скачивания, по сравнению с HTTP/1.1, он всё-равно позволяет ускорить работу сайта за счёт использования других преимуществ.</p><p>Благодарю разработчиков web-сервера Nginx за консультацию и советы!</p><p><a href="https://my.elven.pw/tags/linux" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>linux</span></a> <a href="https://my.elven.pw/tags/nixos" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>nixos</span></a> <a href="https://my.elven.pw/tags/nginx" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>nginx</span></a> <a href="https://my.elven.pw/tags/sendfile" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>sendfile</span></a> <a href="https://my.elven.pw/tags/ktls" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ktls</span></a> <a href="https://my.elven.pw/tags/perfomance" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>perfomance</span></a></p>