MMAE (Massively Multithreaded Actor Engine)

Jun 06, 2012 03:44

Хехехе. После долгих и упорных экспериментов, у нас есть штуковина, которая в round-robin режиме успевает обойти 1 млн тредов в секунду, и выдать каждому по 0.6 мкс процессорного времени :))) (на одном амд-шном ядре ( Read more... )

муравьи, виртуальные машины

Leave a comment

Comments 57

zeux June 6 2012, 02:30:58 UTC
А собственно что делает переключение контекстов, сохраняет/восстанавливает регистры?
500 тактов на сохранение и 500 на загрузку на x86 как-то много, кажется. (disclaimer: практического опыта массового переключения контекстов не имею)

Reply

wizzard0 June 6 2012, 02:33:54 UTC
Штатный ядерный scheduler что в винде, что в линухе, работает еще на порядки медленнее (не 0.3 мкс, а 50-100), из-за переключений kernel/user mode, сбросов TLB, и всякого такого прочего.

Проверяется очень просто - запускаешь 15к тредов, которые неспешно на низком приоритете крутят while(true) sleep(0), и машина уходит в даун.

Reply

zeux June 6 2012, 02:35:37 UTC
Ну штатный работает на порядки медленнее разумеется. Мы же вроде про нештатный.

Reply

wizzard0 June 6 2012, 02:36:53 UTC
Стэк надо переключать, например.

Вообще, мне кажется, главная беда в том, что L1/L2 кэш смывается непрерывно.

Reply


thedeemon June 6 2012, 03:30:53 UTC
А посылать друг другу посылки эти акторы умеют?

Reply

wizzard0 June 6 2012, 03:32:41 UTC
эм.. ну да, если бы не умели - толку от них тогда? :)

Reply


fi_mihej June 6 2012, 06:20:35 UTC
Любопытно.

И вот что реально интересно - так это сколько, в этом тесте было одновременно-работающих тредов? Ну рас уж оно в round-robin режиме работало.
А еще более интересно - если тестировалось, конечно - при каком количестве переключений, и/или при каком количестве одновременных тредов, производительность _вычислений_ оказывалась максимальной (т.е. при каких условиях, всякие обслуживающие накладные расходы, будут наименее существенны).

Кстати, это не User-Mode Scheduling заюзался под Виндой, часом? Хорошая штука, оказывается, коли так. (я не юзал, если что). Или тут нечто более хитрое?

Reply

wizzard0 June 6 2012, 09:48:39 UTC
Все работали, крутили цикл и считали счетчики.

Производительность максимальная при кол-ве тредов равно кол-ву ядер, это вроде очевидно.

Нет, не файберы, все проще

Reply

fi_mihej June 6 2012, 13:01:44 UTC
>>Все работали, крутили цикл и считали счетчики.
Т.е. все треды работали. ОК. А "все" это сколько-то? Если ж там round-robin - то может быть и 3 треда и 1000000 тредов.

>>Производительность максимальная при кол-ве тредов равно кол-ву ядер, это вроде очевидно.
Ты ведь изначально говорил про _одно_ ядро amd-машины. Вот я про одно ядро и спрашиваю. Хотя походу спросил не совсем верно. Смотри, вот на допустим на графике есть точка "А" - точка спада ниже приемлемого уровня - вот примерно где она у тебя находится - мне и интересно. Ну т.е, понятно, что у тебя график зависимости несколько другой. Но по аналогии.

... )

Reply

fi_mihej June 6 2012, 13:35:53 UTC
>>Нет, не файберы, все проще
Почитал ветку. Т.е. это все чисто для всяких интерпретируемых, managed, и близких тому, языков? Ну или языков, в бинарники которых легко, безопастным способом, повставлять кучу yeld-ов? И тот исходник на питоне - это тест реально работающего шедулера? (Если что - я с питоном, пока что, на Вы, а со stackless - так вообще дела не имел. Потому как-то не совсем четко представляю, смысл того питоновского кода. По крайней мере аналога yeld, я там не заметил, а значит шедулер все разруливает самостоятельно. Так?)
Если так - то ОК - понял.

Reply


sab123 June 6 2012, 15:02:09 UTC
Непонятно, зачем столько актеров. От них никакой пользы помимо вреда.

Reply

wizzard0 June 7 2012, 06:26:51 UTC
Это не претендует на серебряную пулю.

Один из юзкейсов - вот http://lindenlab.wordpress.com/2006/05/05/microthreading-mono/

Reply

sab123 June 7 2012, 14:55:52 UTC
Логично. Если целью является производство большого количества мусора, то это самая подходящая технология :-) В Питоне, кстати, уже тоже придумано понятие генераторов, с выдачей значений по yield.

Reply

wizzard0 June 7 2012, 23:41:49 UTC
Питон йелдит в 10 раз медленнее, это неприкольно.

Reply


sleepy_drago June 6 2012, 19:51:08 UTC
есть предположение, что как только ваши акторы смогут дергать сисколлы вся эта конница пойдет на колбасу.

Reply

wizzard0 June 7 2012, 06:25:30 UTC
да они пока и к памяти-то особо не ходят, что уж там говорить о сисколлах :)

если серьезно, то буду тестить.

Reply


Leave a comment

Up