
Maksim
18.05.2016
08:17:35
можно, но это приведет только к тому, что люди будут выбирать другое принципиально, а мы будем тратить силы на то, что бы ожидать хорошего, а получать не то
я это проходил ещё когда надеялся на пакеты в дистрибутиве =)

Roman
18.05.2016
08:23:08
Кстати, есть забавный и эффективный хак: всё чтение с диска унести в nginx
я просто дергаю по http через bytes-range и проксирую клиенту.

Google

Maksim
18.05.2016
08:23:58
нет, это не имеет никакого смысла
эрланг читает с диска так же эффективно как и nginx

Magistr
18.05.2016
08:24:37
но как можно специально выбрать другую фс.. типа а нам удобней btrfs или там fat32 чтоли

Maksim
18.05.2016
08:26:53
да-да, fat32 это тема
но в целом мы справляемся с 20-гигабитной раздачей и без таких специальных мер

Roman
18.05.2016
08:34:43

Maksim
18.05.2016
08:35:23
ага, поэтому в свежем nginx ведется активная работа по переделке чтения диска на ту же схему пулов тредов, которая есть в эрланге

Roman
18.05.2016
08:35:42
и они его уже сделали :)

Maksim
18.05.2016
08:35:58
sendfile вообще сомнительная штука, схлопотать неконтролируемый лок на диск без шансов что-то сделать
хуже только mmap
кеш открытых файлов вообще не имеет никакого отношения к ядру эрланга

Roman
18.05.2016
08:36:26

Google

Maksim
18.05.2016
08:36:39
и по треду на клиента, а клиентов 15 тыс

Roman
18.05.2016
08:37:00
ну и с mmap можно использовать zero copy :)

Maksim
18.05.2016
08:37:17
да, я слышал это мнение

Roman
18.05.2016
08:37:51

Maksim
18.05.2016
08:38:04
вот и у меня вопрос: зачем глупости писать
клиент попросил файл, ему сделали sendfile в отдельном треде
sendfile встал колом из-за диска и сети и на клиента получили отдельный занятый тред

Roman
18.05.2016
08:38:54
на то же время.

Maksim
18.05.2016
08:39:32
но твой sendfile встанет колом на сетевую операцию

Roman
18.05.2016
08:40:00

Maksim
18.05.2016
08:40:02
и всё то, ради чего делали event архитектуру идет лесом, потому что один модемный пользователь забирает себе тред

Roman
18.05.2016
08:40:36
смотри: sendfile отдаёт странички из page cache
если у тебя нужных страничек нет, то ты залипнешь на время поднятия их с диска.
без разницы, что вызвало cache miss.
в freebsd сделали хак: SF_NODISKIO - если страничек нужных нет, то посигналить и вернуть управление.
с mmap ты можешь позвать mincore и он тебе расскажет, что есть в кеше, а чего нет.

Google

Roman
18.05.2016
08:43:57
соответственно, можно позвать madvise с MADV_WILLNEED и ядро асинхронно(!) подтянет эти странички в кеш.
беда в отсутствии механизма нотификации о том что всё завершилось.
nginx для этого на freebsd использовал сайд-эффект aio: читаешь 1 байт, а тебе в кеш подтягивается блок размером с окно readahead.
вообщем, io - боль.

Maksim
18.05.2016
08:55:29
это всё классно и весело, но нам почти всегда надо данные обрабатывать прежде чем отдать клиенту, поэтому всё равно надо прочесть
pread + write дает без особых проблем устойчивые 10 гигабит не загружая полностью современный процессор, так что все попрыгивания на левом ухе, специфичные для конкретного билда ОС может и могут что-то добавить, но нам это просто не нужно
а freebsd мы не рассматриваем

Roman
18.05.2016
08:58:46

Maksim
18.05.2016
09:01:20
простой колхозный read с диска в треде и обычный write в сокет как это сделано в эрланге (буфер, epoll и все такое)
т.е. все эти исхищрения нужны когда хочется 40 и больше распихать
у нас нет клиентов с 40 гигабитами, только 20 максимум, но по опыту тех же однокласников, для 40 гигабит тоже не нужны все эти премудрости: просто read/write справляются
так что наверное это нужно либо когда хочется что-то ещё запустить на том же сервере, либо когда уже цель в 100G

Roman
18.05.2016
09:04:31

Maksim
18.05.2016
09:08:25
мне кажется, что сейчас ты уже придумываешь, потому что только что ты рассказывал про freebsd, а потом перешел на openvz

Roman
18.05.2016
09:09:05

Maksim
18.05.2016
09:09:30
да, я понимаю. Я знаю что люди любят сложные решения =)
среди программистов mail.ru я неоднократно встречал такое мнение, что в продакшне нельзя пользоваться маллоком, потому что он нещадно тормозит

Roman
18.05.2016
09:10:09

Maksim
18.05.2016
09:10:28
и чего?
во-первых, флюссоник делает дохрена чего ещё, во-вторых главное что бы справлялся

Google

Roman
18.05.2016
09:11:19
ну и рядом больше ничего не запустишь. потому что тогда клиенты начинают страдать

Maksim
18.05.2016
09:12:34
а не надо ничего запускать на сервере, который вещает видео

Roman
18.05.2016
09:12:36

Maksim
18.05.2016
09:13:37
не странный, а рабочий
ты сейчас ведешь к тому, что бы сэкономить 30$ в месяц и вместо отдельного сервера для сайта, запустить и сайт, и вещание на одном сервере

Admin
ERROR: S client not available

Maksim
18.05.2016
09:14:36
это типично отечественный инженерный подход: наймите меня за $2000 в месяц, я вам сэкономлю $30 в месяц

Roman
18.05.2016
09:17:37

Алексей
18.05.2016
09:17:40
Пипец, чтобы даунгрейдить биос на плате супермикро, пришлось сгенерить лист закачки типа /getfile.php?0000 -> ?9999 c единичным инкрементом. В эти сети уже попались редкие архивные варианты (:

Alexander
18.05.2016
09:18:16
И подход ещё не переносим и не повторяем, приходит следующий за 3000$ и переделывает на фрибсд
Так и живем

Roman
18.05.2016
09:18:52

Maksim
18.05.2016
09:25:06
ты мне сейчас хочешь рассказать слезную историю о том, что наш флюссоник жрет очень много ресурсов и требует дорого железа, а вот какой-то софт, про который тебе рассказывали, запускается на арме от скейлвей и раздает 10G за 5 баксов в месяц
не хочу тебя расстраивать, но никаких особых хитростей тут нет. Я тебе ещё раз рекомендую посмотреть на опыт однокласников, которые просто правильным инженерным решением с помощью обычной явы раздают 40G с коробки

Roman
18.05.2016
09:27:16

Maksim
18.05.2016
09:27:53
это очень грубая оценка, которая не отражает реальности
нет способа перегнать с диска в tcp сессию на карте в обход памяти и процессора, а значит всё равно будет передача в общую память и раздача оттуда

Roman
18.05.2016
09:29:40

Google

Maksim
18.05.2016
09:36:41
насколько я понимаю, разницы тут между read и всякими спец-штуками не будет, потому что это всё равно все идет к диску сквозь его vfs cache и уже какой-то код внизу просит подогнать данные в память
разница только в том: происходит memcpy из памяти ядра в память процесса или нет
или я неправ?

Roman
18.05.2016
09:40:14

Maksim
18.05.2016
09:41:38
вот мой тезис как раз в том, что это не такая дорогая процедура, как считается
по крайней мере сегодня

Alex
18.05.2016
09:51:53
Не хочу вас огорчать, дорогие коллеги
Но, пока никто из вас флеймграфов не предоставил - это разговор ни о чем
Вы парни сильные, должны с этим справиться

Maksim
18.05.2016
09:54:10
т.е. типа у тебя толще, да?
мы тут пока мило обсуждали, как же данные в сеть пихать, я понял что у кастомера NFS
и видео пишется и читается с NFS
диски, хуиски, dma. Вот оно всё это, да. Я не уверен что запись и трансляция пользователям идет по разным сетевухам

Alex
18.05.2016
10:04:34
Господа, а что лучше - DMA или MDMA?

Pavel
18.05.2016
10:18:02

Denis
18.05.2016
10:18:11
Мдма конечно ) смотря для чего

Aleks
18.05.2016
10:24:19