tag:blogger.com,1999:blog-410416665291724878.post2443916697805628306..comments2022-12-19T13:52:22.907+04:00Comments on >рабочие заметки: LMAX Disruptor #1: ИдеиRuslan Chereminhttp://www.blogger.com/profile/01023948540752159657noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-410416665291724878.post-51086713750195443112011-09-03T13:20:39.171+04:002011-09-03T13:20:39.171+04:00>Мой спич о том, что какого чёрта раскладывать ...>Мой спич о том, что какого чёрта раскладывать на каждый T[n] подзадачи P[?][n], и в каждом потоке терять на ожидании результата P[?][n-1], когда можно на каждый T[n] положить все подзадачи P[k mod n][?] сразу?<br /><br />А, да, я тебя понял. Ты прав в том смысле, что так можно сделать, но не факт, что так всегда проще и всегда эффективнее. Т.е. это просто два разных подхода к решению задачи -Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-27372504542175055432011-09-03T10:02:22.230+04:002011-09-03T10:02:22.230+04:00>>Да, вот мне пришла мысль в голову: а каког...>>Да, вот мне пришла мысль в голову: а какого чёрта вообще нужно устраивать конвеер, если это цепочка одиноких обработчиков?<br />> Тут я тебя опять не понимаю. Есть у меня 8 ядер, и на каждом из них по обработчику (на одном -- производитель). <br /><br />А зачем? Допустим есть K задач, которые тебе надо обработать, каждая из этих задач может быть разбита на M последовательных подзадач. Aleksey Shipilev:https://www.blogger.com/profile/01270446535942765702noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-40506128914497950662011-09-03T02:09:04.005+04:002011-09-03T02:09:04.005+04:00>в. ты не можешь гарантировать, что читатель ед...>в. ты не можешь гарантировать, что читатель единственный, но разрешаешь читать дубликаты. Это путь disruptor'а. <br /><br />Да, все верно. Да, Disruptor не позволяет делать "звезду" типа балансировки. Да, они об этом не пишут, хотя это довольно важный случай - ну меня лично это не особо удивляет, всегда найдется достаточно людей, которые расскажут тебе что у тебя плохо, поэтому Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-42734521218251517192011-09-03T01:37:13.996+04:002011-09-03T01:37:13.996+04:00> В общем, как я себе это вижу -- открытия Disr...> В общем, как я себе это вижу -- открытия Disruptor может и не сделал -- но это довольно удобный фреймворк для организации конвейеров произвольной топологии. <br /><br />Да, вот мне пришла мысль в голову: а какого чёрта вообще нужно устраивать конвеер, если это цепочка одиноких обработчиков? Зачем устраивать эту возню с передачей данных от одного потока к другому? Если стадии прекрасно Aleksey Shipilev:https://www.blogger.com/profile/01270446535942765702noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-19593969573753946312011-09-03T01:16:07.688+04:002011-09-03T01:16:07.688+04:00> В общем, как я себе это вижу -- открытия Disr...> В общем, как я себе это вижу -- открытия Disruptor может и не сделал -- но это довольно удобный фреймворк для организации конвейеров произвольной топологии. <br /><br />Да понимаешь ли, я как раз спорю о том, что его применимость весьма ограничена. С busy-loop'ами он жрёт дофига throughput'а ради наносекундных латентностей (ну кому блин это нужно, кроме HFT'шников?), с обычными Aleksey Shipilev:https://www.blogger.com/profile/01270446535942765702noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-34683487748203026912011-09-03T00:56:03.673+04:002011-09-03T00:56:03.673+04:00> Оффтоп: интерфейс комментариев в блоггере то ...> Оффтоп: интерфейс комментариев в блоггере то уродство -- и как ты не поленился в нем столько текста набирать... <br /><br />А меня ненадёжный интернет давно научил писать комменты в простых текстовых редакторах, а потом копипастить ;)<br /><br />> предсказуемый батчинг работает тогда, когда есть единственный отстающий потребитель,<br /><br />> Тут я уже тебя не понимаю. С бэтчингом Aleksey Shipilev:https://www.blogger.com/profile/01270446535942765702noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-71236383572441549492011-09-03T00:40:48.000+04:002011-09-03T00:40:48.000+04:00>Батчинг в disruptor'е работает из-за ослаб...>Батчинг в disruptor'е работает из-за ослабленной consistency: может оказаться, что конкретный элемент вычитан вычитан несколькими consumer'ами сразу, и иди ты разбирайся как со этим всем жить -- балансировка идёт лесом<br /><br />Тут я тебя тоже не до конца понял. Если ты имеешь в виду, что нельзя использовать disruptor для балансировки нагрузки -- то да, я же про это в посткриптуме Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-60945799465679547562011-09-03T00:37:54.183+04:002011-09-03T00:37:54.183+04:00Оффтоп: интерфейс комментариев в блоггере то урод...Оффтоп: интерфейс комментариев в блоггере то уродство -- и как ты не поленился в нем столько текста набирать... <br /><br />>Их перформансное сравнение [1] между disruptor и ArrayBlockingQueue меня повергло в тихий шок:<br /><br />Это меня тоже немного удивило -- т.е. где-то в статьях у них есть какой-то посыл типа "а остальные очереди и еще хуже" -- но звучит это не впечатляюще. И Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-32728312379710495242011-09-02T22:50:41.193+04:002011-09-02T22:50:41.193+04:00Честно говоря, я не вижу, чем особенно восхищаться...Честно говоря, я не вижу, чем особенно восхищаться в disruptor'е: по-моему, это адский велосипед. Их перформансное сравнение [1] между disruptor и ArrayBlockingQueue меня повергло в тихий шок: в ABQ сидит один большой ReentrantLock, который охраняет доступ к очереди, а он как известно <i>паркует</i> поток после первого же неудавшегося CAS'а. Ясен пень, что тривиальный непаркующийся Aleksey Shipilev:https://www.blogger.com/profile/01270446535942765702noreply@blogger.com