The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Google начал открытие реализации модели потоков M:N, opennews (??), 28-Июл-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


13. "Google начал открытие реализации модели потоков M:N"  +42 +/
Сообщение от anonymous yet another (?), 28-Июл-20, 13:33 
Ага, если кто не знает истории.

В своё время в Solaris была (лучшая на тот момент) релизация нитей (aka легковесный процесс). Модель была M:N.

Ребята из ядерной группы, решая какую-то проблему Oracle'а для раскрутки проблемы быстренько написали компактную реализацию нитей в модели 1:1. И внезапно увидели ох^W весьма нехилый рост производительности. И потратили месяца четыре на выяснение --- где они лажанулись. Не нашли. Через четыре месяца эта модель пошла опцией в бету Solaris'а, и в следующем релизе стала основной (и единственной) моделью нитей в Solaris'е.

Объяснение выигрыша более простой модели получилось такое: "радикальное упрощение планировщика позволило заниматься делом, а не планированием".

В Linux'е Линус очень долго вообще отказывался делать поддержку нитей ядром. На этом месте паслись "зелёные нити" (полная х...ь как концепция, IMO). Но после большого успеха модели 1:1 у Sun, он быстро сотворил модель 1:1 в Linux'е.

Сейчас наблюдаем:
- во многие языки тянут coroutines (\equiv "зелёные нити");
- G. подтягивает супер-инновационную модель M:N.

Ответить | Правка | Наверх | Cообщить модератору

16. "Google начал открытие реализации модели потоков M:N"  +3 +/
Сообщение от CAE (ok), 28-Июл-20, 13:49 
Возможно, простая модель письма прикладнух без асинк колбэков один тред один сокет, сподвигла G. повторять достижения.
IMHO, внятное письмо на M worker N сокетов с колбэками и есть по сути M:N, только в пространстве пользователя. Но тут всем лениво, это же прикладнухи писать, пахнет своим шедулингом. Поэтому и идёт попытка один раз загнать в ядро.
Так думаю.
Ответить | Правка | Наверх | Cообщить модератору

32. "Google начал открытие реализации модели потоков M:N"  +3 +/
Сообщение от anonymous yet another (?), 28-Июл-20, 14:46 
Ввод-вывод в нитях --- это полный абзац для планировщика в userspace.
Ему (user-space scheduler) будет очень удобно определять, какую из
u пользовательских нитей надо будить по наличию события в-в.

Ядро-то изначально такую информацию имеет: "стоим на ...,
ждём события по...; случилось событие, ясно кого будить".

Ответить | Правка | Наверх | Cообщить модератору

19. "Google начал открытие реализации модели потоков M:N"  +12 +/
Сообщение от Школьник (ok), 28-Июл-20, 13:57 
Надо же, какие олдфаги на опеннете всё ещё сидят. Приятно удивлён :-)

Во фряхе, кстати, примерно та же история была с libkse - тоже вышло, что M:N модель слишком сложная. Но зумерам из Гугла некогда читать книги и архивы email-рассылок. Ну раз так, то грабли ждут их лбы.

А вообще, Соляра как ядро для своего времени была изрядно впереди планеты всей. Пока во фре боролись с giant lock и кидались фекалиями в Диллона, в Соляре синхронизация и нормальная работа SMP давно была сделана как надо. Ну и SMF, зоны, включая branded, с ограничениями ресурсов, ZFS, виртуализация сетевого стека, подключаемые плагинами планировщики, классы планирования - практически всё было сделано, и бОльшая часть сделана по-человечески и еще в то время, когда нынешние зумерки-разрабы типы данных в Си изучали. Но, как говорится, не родись красивой...

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

51. "Google начал открытие реализации модели потоков M:N"  –9 +/
Сообщение от Аноним (51), 28-Июл-20, 16:46 
Сначала дождитесь рабочей реализации и делайте выводы. Сложно, да. И что? Это значит, что совсем нереализуемо? Нет. Если реализуют, будет быстро. Если нет, то нет.
Ответить | Правка | Наверх | Cообщить модератору

52. "Google начал открытие реализации модели потоков M:N"  –14 +/
Сообщение от Аноним (51), 28-Июл-20, 16:48 
Более того, если всё будет работать как надо, это покажет некомпетентность всех предыдущих разработчиков, у которых ничего не вышло и вынуждены были забросить. Не выгораживаю гугл, но выводы рано делать однозначные.
Ответить | Правка | Наверх | Cообщить модератору

60. "Google начал открытие реализации модели потоков M:N"  +8 +/
Сообщение от Аноним (60), 28-Июл-20, 17:24 
> Более того, если всё будет работать как надо, это покажет некомпетентность всех предыдущих разработчиков,

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

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

Прекратите фантазировать.

> Не выгораживаю гугл,

Просто, как настоящий линуксоид, подлизываешь, надеясь на другие объедки с барского стола?

Ответить | Правка | Наверх | Cообщить модератору

66. "Google начал открытие реализации модели потоков M:N"  –9 +/
Сообщение от Аноним (51), 28-Июл-20, 17:38 
>подлизываешь

Не проецируй свои фантазии на других. Это лишь альтернативное мнение, не более. Включат или нет не особо волнует.

Ответить | Правка | Наверх | Cообщить модератору

86. Скрыто модератором  +3 +/
Сообщение от Аноним (86), 28-Июл-20, 19:53 
Ответить | Правка | Наверх | Cообщить модератору

89. Скрыто модератором  –6 +/
Сообщение от Аноним (89), 28-Июл-20, 20:04 
Ответить | Правка | Наверх | Cообщить модератору

102. Скрыто модератором  +2 +/
Сообщение от Аноним (102), 28-Июл-20, 21:31 
Ответить | Правка | Наверх | Cообщить модератору

111. Скрыто модератором  +/
Сообщение от Аноним (111), 28-Июл-20, 23:20 
Ответить | Правка | Наверх | Cообщить модератору

112. Скрыто модератором  +/
Сообщение от Аноним (111), 28-Июл-20, 23:23 
Ответить | Правка | К родителю #102 | Наверх | Cообщить модератору

131. Скрыто модератором  +/
Сообщение от Аноним (131), 29-Июл-20, 12:50 
Ответить | Правка | Наверх | Cообщить модератору

78. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от Анончик (?), 28-Июл-20, 18:52 
Лол, а железо вы в расчет не берете? Или у вас на разном железе программы и их алгоритмы работают совершенно идентично?
Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

91. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от Я (??), 28-Июл-20, 20:25 
так погодьте.. скдя по новости гугл уже написал это всё и уже использует на своих серверах, а сейчас начали готовить патчи   для коммита всего этого в мэйнстрим ядро..
Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

42. "Google начал открытие реализации модели потоков M:N"  –6 +/
Сообщение от Аноним (42), 28-Июл-20, 16:03 
> На этом месте паслись "зелёные нити" (полная х...ь как концепция, IMO)
> - во многие языки тянут coroutines (\equiv "зелёные нити");

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

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

48. "Google начал открытие реализации модели потоков M:N"  +3 +/
Сообщение от anonymous yet another (?), 28-Июл-20, 16:33 
Привет поколению Z!

Вы язык программирования с архитектурой процессора(ов) в запарке не попутали?

Ответить | Правка | Наверх | Cообщить модератору

73. "Google начал открытие реализации модели потоков M:N"  –1 +/
Сообщение от Аноним (42), 28-Июл-20, 18:30 
Бумерам привет.

При чем тут архитектура? Для преобразования сопрограммы в конечный автомат:

http://dunkels.com/adam/pt/expansion.html

нужны особые архитектуры?

Ответить | Правка | Наверх | Cообщить модератору

77. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от Аноним (77), 28-Июл-20, 18:48 
Зумерок, прекращай читать инвалидов умственного труда.
Ответить | Правка | Наверх | Cообщить модератору

80. "Google начал открытие реализации модели потоков M:N"  –1 +/
Сообщение от Аноним (42), 28-Июл-20, 19:07 
Автор uIP - инвалид умственного труда? Окей, бумер. Гиганты мысли с опеннета поражают.
Ответить | Правка | Наверх | Cообщить модератору

81. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от Аноним (77), 28-Июл-20, 19:12 
Реализация tcp/ip под микроконтроллеры - святой грааль программирования? Окей, зумер, читай кого хочешь.
Ответить | Правка | Наверх | Cообщить модератору

90. "Google начал открытие реализации модели потоков M:N"  +4 +/
Сообщение от anonymous yet another (?), 28-Июл-20, 20:16 
Если я правильно понимаю, то вы всё время в сторону программирования на baremetal подмигиваете.

Так это вообще здесь не причём. Нет MMU, нет кэшей, нет операционки --- нет понятия kernel space/user space. Т.е. к изначальной теме никак не относится.

Ответить | Правка | К родителю #80 | Наверх | Cообщить модератору

72. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от Аноним (72), 28-Июл-20, 18:23 
В "нерасширяемой сишечке" эти твои корутины делаются на макросах препроцессора.

https://www.chiark.greenend.org.uk/~sgtatham/coroutines.html

Ответить | Правка | К родителю #42 | Наверх | Cообщить модератору

74. "Google начал открытие реализации модели потоков M:N"  –1 +/
Сообщение от Аноним (42), 28-Июл-20, 18:35 
Я знаю, пользоваться этим невозможно. Сравни с современными async/await.
Ответить | Правка | Наверх | Cообщить модератору

107. "Google начал открытие реализации модели потоков M:N"  +2 +/
Сообщение от Аноним (72), 28-Июл-20, 22:49 
Ну, тем не менее, подход Саймона Тэтхэма даёт рабочие корутины (утверждалось, что их невозможно реализовать совсем в сях, кроме как руками - я привёл контрпример). А async/await как по мне - вреден, ибо большинство смузипрогеров даже не вникает в то, как это работает. Типа, о - крутая штука для "многопоточности". А что там творится под капотом и как это реализовано (скажем, что там оно разворачивается в конечный автомат) - даже не догадываются. Реально есть кадры, которые на полном серьёзе считают, что корутины - это про мультитрединг.
Ответить | Правка | Наверх | Cообщить модератору

125. "Google начал открытие реализации модели потоков M:N"  +2 +/
Сообщение от Аноним (125), 29-Июл-20, 09:31 
Тут нужны оговорки. Первое это различать три вещи:
1. Корутины
2. Протопотоки
3. Фиберы

То, что ты показал не юзабельно, т.к. не используется одна важная инструкция современных процессоров -- JMP (b для ARM). Тут пример без jmp, но это, имхо, также из серии сделал-по-приколу, но более юзабельно чем то, что ты показал: https://github.com/spc476/C-Coroutines

>А async/await как по мне - вреден, ибо большинство смузипрогеров даже не вникает в то, как это работает.
>Реально есть кадры, которые на полном серьёзе считают, что корутины - это про мультитрединг.

Если речь про async/await из C#, то там действительно они работают в режиме многопоточности. Это происходит просто потому, что операция await применяется к конкретному потоку (который заранее создан встроенным планировщиком) и не избирается автоматически для main-потока. И вообще, в C# нет корутин в юзерспейсе, равно как и файберов, хотя были реализации на сишных/плюсовых либах.

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

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

Ответить | Правка | Наверх | Cообщить модератору

84. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от Аноним (86), 28-Июл-20, 19:51 
> В "нерасширяемой сишечке" эти твои корутины делаются на макросах препроцессора.

Ты не смотрел, что по ссылке? Или просто не едал ничего слаще морковки?
> https://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
> So now we have this monstrosity, let's rewrite our original code fragments using it.


int decompressor(void) {
    static int c, len;
    crBegin;
    while (1) {
        c = getchar();
        if (c == EOF)
            break;
        if (c == 0xFF) {
            len = getchar();
            c = getchar();
            while (len--)
            crReturn(c);
        } else
        crReturn(c);
    }
    crReturn(EOF);
    crFinish;
}

Ответить | Правка | К родителю #72 | Наверх | Cообщить модератору

108. "Google начал открытие реализации модели потоков M:N"  –2 +/
Сообщение от Аноним (72), 28-Июл-20, 22:51 
А что? Там должен быть async/await, выблёвывающий смузи?
Ответить | Правка | Наверх | Cообщить модератору

134. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от Аноним (134), 29-Июл-20, 17:28 
Статические переменные внутри функции? Не велели такого отцы-основатели
Ответить | Правка | К родителю #84 | Наверх | Cообщить модератору

54. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от rshadow (ok), 28-Июл-20, 17:03 
> полная х...ь как концепция, IMO

Сразу понятно что вы не программист. Но спасибо за исторический экскурс.
https://ru.wikipedia.org/wiki/C10k

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

59. "Google начал открытие реализации модели потоков M:N"  –1 +/
Сообщение от Anonn (?), 28-Июл-20, 17:15 
Зато люто плюсуют. 4 месяца не могли понять, а потом ответ оказался прост. Какая-то фантастическая история по мне.
А еще, как обычно: в Гугле одни идиоты (причем, заметьте, со всего мира), все здравые ребята здесь собрались: ишь, те изобретают велосипед заново, и даже не догадались подумать об очевидной вещи как %s.
Ответить | Правка | Наверх | Cообщить модератору

63. "Google начал открытие реализации модели потоков M:N"  +3 +/
Сообщение от Аноним (-), 28-Июл-20, 17:36 
> А еще, как обычно: в Гугле одни идиоты (причем, заметьте, со всего
> мира), все здравые ребята здесь собрались: ишь, те изобретают велосипед заново, и даже не догадались подумать об очевидной вещи как %s.

Здравые ребята реалистично не считают себя Гуглом, а свои сценарии использования - схожими с гугловскими.
И основываясь на опыте предыдущих, в том числе и "академически верно" проработанных реализаций, закономерно ждут подвох для всех тех, кто не является Гуглом.

Ответить | Правка | Наверх | Cообщить модератору

67. "Google начал открытие реализации модели потоков M:N"  +1 +/
Сообщение от anonymous yet another (?), 28-Июл-20, 17:43 
> 4 месяца не могли понять, а потом ответ оказался прост

Ребята грамотные были. Сами и задались вопросом: "какого х...а сильно более простая реализация на характерных задачах так выиигрывает? Не упустили ли чего?". Пошли измерять/сравнивать. Потом пошло в news/ML, была публикация (ACM? --- не помню). Потом отдали приближённым, потом в пред-релиз (т.н. "модель T2"). Получилось: по практическим результатам T2 выглядела сильно лучше. В вырожденных случаях T2 не проигрывала основной модели, а в ряде практически значимых сценариев --- сильно выигрывала.

Ответить | Правка | К родителю #59 | Наверх | Cообщить модератору

62. "Google начал открытие реализации модели потоков M:N"  +2 +/
Сообщение от anonymous yet another (?), 28-Июл-20, 17:30 
Таки да, на javascript не пишу.

Ссылка-то эта к чему? Риди бога, ткните в меня реализацией C10k на setjmp/longjmp! А то так в неведении и помру.

Ответить | Правка | К родителю #54 | Наверх | Cообщить модератору

160. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от rshadow (ok), 12-Авг-20, 13:53 
https://ru.wikipedia.org/wiki/%D0%A1%D0%...
Ответить | Правка | Наверх | Cообщить модератору

85. "Google начал открытие реализации модели потоков M:N"  –3 +/
Сообщение от anonymous (??), 28-Июл-20, 19:52 
> В Linux'е Линус очень долго вообще отказывался делать поддержку нитей ядром. На этом месте паслись "зелёные нити" (полная х...ь как концепция, IMO). Но после большого успеха модели 1:1 у Sun, он быстро сотворил модель 1:1 в Linux'е.

Всё дело в языка. Что для сишечки бессмысленно, сложно и просто ресурсы на ветер, то для жабаскрипта естественно как дыхание. Даёшь поддержку жабаскрипта (и прочих коллбек-ориентированных языков) на уровне ядра!

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

99. "Google начал открытие реализации модели потоков M:N"  +4 +/
Сообщение от Аноним (99), 28-Июл-20, 21:11 
В js вообще нет нитей - он однопоточен. Главное встрять со своим комментарием про "любимый" язык?
Ответить | Правка | Наверх | Cообщить модератору

93. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от funny.falcon (?), 28-Июл-20, 20:35 
У всех предыдущих подходов к N:M была одна общая болезнь: работа с диска. Оно блокировало «кернельный» тред, то бишь, один из M планировщиков целиком. На обработку «пользовательских» N-1 тредов оставалось M-1 шедулеров. Соответственно, если мы имеем нагрузкой базу данных, которая общается с диском много и одновременно, то очень быстро все M шедулеров оказывались в ожидании диска, а N-M тредов оказывались не удел.

Первой (из общедоступных) правильный подход реализовала Go: когда шедулер-тред встаёт в сискол, она порождает новый тред.

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

Вы посмотрите презентацию, они как раз упоминают враперы над блокирующими вызовами.

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

100. "Google начал открытие реализации модели потоков M:N"  +2 +/
Сообщение от anonymous yet another (?), 28-Июл-20, 21:16 
> Первой (из общедоступных) правильный подход реализовала Go: когда шедулер-тред встаёт в сискол, она порождает новый тред.

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

Ответить | Правка | Наверх | Cообщить модератору

105. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от Аноним (-), 28-Июл-20, 22:28 
> При наличии подсистемы io_uring, все становится ещё намного проще

С уриной пока всё тоже не слава богу:

"io_uring is currently like kqueue on OS X - it works with "important" file
types, but it fails as generic mechanism, and there is no way to detect what
will work or not, so workarounds are essentially impossible."

http://lists.schmorp.de/pipermail/libev/2020q3/002879.html

Ответить | Правка | К родителю #93 | Наверх | Cообщить модератору

120. "Google начал открытие реализации модели потоков M:N"  +/
Сообщение от Аноним (120), 29-Июл-20, 06:38 
>В Linux'е Линус очень долго вообще отказывался делать поддержку нитей ядром. На этом месте паслись "зелёные нити" (полная х...ь как концепция, IMO). Но после большого успеха модели 1:1 у Sun, он быстро сотворил модель 1:1 в Linux'е.

Забываем реализацию M:N со стороны IBM для Linux?.. а еще история...

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру