LINUX.ORG.RU

Состоялся релиз F-Stack 1.13

 , , , ,


2

3

Компания Tencent выпустила новую версию F-Stack 1.13, фреймворка на базе DPDK и TCP/IP стека FreeBSD. Основной платформой для фреймворка является Linux. Код распространяется под лицензией BSD.

Фреймворк позволяет приложениям отказаться от стека операционной системы и вместо этого использовать стек, реализованный в пространстве пользователя и работающий напрямую с сетевым оборудованием.

Из заявленных особенностей фреймворка:

  • Полная загрузка сетевых карт: были достигнуты 10 млн активных сетевых подключений, 5 млн RPS и 1 млн CPS
  • Перенос стека пространства пользователя из FreeBSD 11 с удалением большого количества несущественных возможностей, что значительно повысило сетевую производительность
  • Поддержка Nginx, Redis. Другие приложения также могут использовать F-Stack
  • Легкость расширения за счет мультипроцессной архитектуры
  • Обеспечивает поддержку микропотоков. Различные приложения могут использовать F-Stack для повышения производительности без реализации сложной асинхронной логики
  • Поддерживаются стандартные API epoll/kqueue

В новой версии:

  • Добавлены интерфейсы ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd, ff_setsockopt_freebsd
  • Добавлен параметр «idle_sleep», позволяющий снизить использование процессора, если отсутствуют входящие пакеты
  • Добавлена поддержка arm64
  • Добавлена поддержка Docker
  • Добавлена поддержка vlan
  • В реализации nginx для F-Stack заменены функции getpeername, getsockname, shutdown
  • DPDK обновлен до версии 17.11.4 LTS

>>> Подробности

Поддержка Nginx, Redis. Другие приложения также могут использовать F-Stack

Настораживает что стек должен прямо «поддерживать» конкретные приложения

vertexua ★★★☆☆ ()

Фреймворк позволяет приложениям отказаться от стека операционной системы и вместо этого использовать стек, реализованный в пространстве пользователя и работающий напрямую с сетевым оборудованием.

Какие практические преимущества это даёт?

LittleKawaiiNeko ★★ ()

Обеспечивает поддержку микропотоков

Что такое «микропотоки»? Они что еще какое то свое микроядро написали для работы в пространстве пользователя?

Liz812 ()
Ответ на: комментарий от LittleKawaiiNeko

ФАСТА

У тебя сабмит запроса в очередь и получениие ответа не проходят через сисколы вообще. Плюс, все что можно, оффлоадится в железяку.

Сейчас примерно такое же предложили в ядре для дискового IO. Пока что все работает через сисколлы, но хотят сделать через SQ/CQ.

kirk_johnson ★☆ ()
Последнее исправление: kirk_johnson (всего исправлений: 2)
Ответ на: комментарий от AnDoR

Скорость

Сомнительно, что скорость в юзерспейсе будет лучше, чем в ядре.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

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

bdfy ★★★★★ ()
Ответ на: комментарий от bdfy

Да, я понял теперь в чём задумка. Т.е. это именно фреймворк чтобы некое приложение (адаптированное) работало с аппаратурой напрямую. Интересная штука, хотя и специфическая.

no-such-file ★★★★★ ()
Ответ на: комментарий от Liz812

Они что еще какое то свое микроядро написали для работы в пространстве пользователя

У них там свой шедулер событий внутри фреймворка, как я понял. Чтобы не дергать ядро.

no-such-file ★★★★★ ()
Ответ на: комментарий от LittleKawaiiNeko

стек операционки отсутствует, в результате сильно быстро работает

PETER ★★ ()
Последнее исправление: PETER (всего исправлений: 1)
Ответ на: комментарий от no-such-file

dpdk вообще то сильно интел продвигает, типа можно с минимальными задержками пакеты в сеть толкать

PETER ★★ ()
Ответ на: комментарий от kirk_johnson

Падажжи ёпта.jpg Приложение с сетью взаимодействует в обход ядра ОС? Что-то мне в этом представляется стрёмным.

LittleKawaiiNeko ★★ ()
Ответ на: комментарий от vertexua

Настораживает что стек должен прямо «поддерживать» конкретные приложения

Обычные приложения обычно дёргают обыное ядро обычными сисколами. Нельзя вот так вот взять и перехватить сисколы без потери производительности или патчинга софта.

anonymous ()
Ответ на: комментарий от LittleKawaiiNeko

Падажжи ёпта.jpg Приложение с сетью взаимодействует в обход ядра ОС? Что-то мне в этом представляется стрёмным.

Уникернели не гугли.

anonymous ()
Ответ на: комментарий от no-such-file

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

Liz812 ()
Ответ на: комментарий от Liz812

попробуйте даже для примера в программе заменить memalloc на свою аллокацию в выделенном пуле памяти (планировщик только придется реализовать), разница будет существенной

PETER ★★ ()
Ответ на: комментарий от Liz812

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

Ну вот допустим ты хочешь сделать быстрый вебсервер. Ставишь какой-нибудь nginx. Но nginx же работает в пространстве пользователя и может быть вытеснен другим процессом. Куда вся скорость тогда девается?

Хинт: Не запускаешь хромого рядом, по желанию выставляешь приоритеты процессам.

anonymous ()
Ответ на: комментарий от Liz812

может быть вытеснено другим процессом

Может, но эта балалайка для специальных применений, где нет никаких других процессов (в существенном количестве).

no-such-file ★★★★★ ()
Ответ на: комментарий от anonymous

Хинт: Не запускаешь хромого рядом

хинт: в этом вашем f-stack это вообще возможно ?

anonymous ()
Ответ на: комментарий от anonymous

хинт: в этом вашем f-stack это вообще возможно ?

«В» надо патчить, а рядом конечно возможно.

anonymous ()
Ответ на: комментарий от anonymous

надо патчить, а рядом конечно возможно

т.е. невозможно. Я так и думал.

anonymous ()
Ответ на: комментарий от anonymous

т.е. невозможно. Я так и думал.

Правильно думал. Какому идиоту придёт в голову запускать браузер на кастомном сетевом стеке? Этот сраный хак оправдан немного на других нагрузках.

anonymous ()
Ответ на: комментарий от anonymous

Этот сраный хак оправдан немного на других нагрузках

я тут чувака спросил зачем это в ОС, но он кроме муу-бее ничего не ответил, а потом и вовсе всё удалили.

anonymous ()
Ответ на: комментарий от anonymous

Вам же уже ответили и ссылку привели на гитхабе. Данный фреймворк позволяет максимально использовать по быстродействию в сети коробку. Применение есс-но специфическое

PETER ★★ ()
Ответ на: комментарий от PETER

Данный фреймворк позволяет максимально использовать по быстродействию в сети коробку.

использовали бы экзоядро.

anonymous ()
Ответ на: комментарий от anonymous

я тут чувака спросил зачем это в ОС

Это лютое нинужно в универсальных ОС.

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

Ну и академикам докторские писать.

anonymous ()
Ответ на: комментарий от no-such-file

балалайка для специальных применений

Тогда надо сделать специальное ядро со встроенным Redis, будет еще быстрее.

Liz812 ()
Ответ на: комментарий от Liz812

Тогда надо сделать специальное ядро со встроенным Redis, будет еще быстрее.

А вот ты гугли уникернели, тебе понравится.

anonymous ()
Ответ на: комментарий от anonymous

использовали бы экзоядро.

Софт под позикс, а то и чисто под линух заточен. Есть что совместимое?

anonymous ()
Ответ на: комментарий от anonymous

Софт под позикс, а то и чисто под линух заточен. Есть что совместимое?

не знаю, но если там крутые перцы - они что не могут libposix реализовать ?

anonymous ()
Ответ на: комментарий от anonymous

а зачем, если можно не реализовывать?

anonymous ()
Ответ на: комментарий от anonymous

То есть, пацаны из оп-поста делают экзотику для экзотических задач, но теперь POSIX-совместимую?

LittleKawaiiNeko ★★ ()
Ответ на: комментарий от LittleKawaiiNeko

То есть, пацаны из оп-поста делают экзотику для экзотических задач, но теперь POSIX-совместимую?

Пацаны из оп-поста делают экзотику для экзотических задач, под которой можно запустить линуксовый софт с минимальными усилиями.

anonymous ()
Ответ на: комментарий от LittleKawaiiNeko

разницы большой нет как вызовы называются, а вот реализация того же самого dpi или высоко нагруженного сервера будет работать на порядок (ки) быстрее, на уровне пропускной способности шины

PETER ★★ ()
Последнее исправление: PETER (всего исправлений: 1)
Ответ на: комментарий от LittleKawaiiNeko

Какие практические преимущества это даёт?

На заглавной странице на гитхабе представлены результаты тестирования nginx.

araks ()
Ответ на: комментарий от anonymous

А драйвера им под новое ядро сраный анон с лора будет писать?

IPR ★★★★★ ()
Ответ на: комментарий от IPR

А драйвера им под новое ядро сраный анон с лора будет писать?

Вопрос годный, но сабжу тоже нужны драйверы.

anonymous ()
Ответ на: комментарий от IPR

А драйвера им под новое ядро с лора будет писать?

подмойся и предложи им свои услуги - может не побрезгуют

anonymous ()
Ответ на: комментарий от anonymous

Только для сети, а не для всей периферии

anonymous ()
Ответ на: комментарий от no-such-file

Если пилить...

Да, я понял теперь в чём задумка. Т.е. это именно фреймворк чтобы некое приложение (адаптированное) работало с аппаратурой напрямую. Интересная штука, хотя и специфическая.

Если пилить какой-нибудь коммутатор/роутер, то это то, что я как доктор мог бы рекомендовать, не будь vpp на свете.

Да, это очень специфичная штука.

anonymous ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)