Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LINUX.ORG.RU
- добро пожаловать, www_linux_org_ru
- Новости
- Галерея
- Форум
- Трекер
- Уведомления (5)
- Поиск
- Сообщение удалено Pinkbyte по причине 'Блокировка пользователя с удалением сообщений (0)'
- Форум — Development
- Mythbusters: c10k, «сдохнет от 10/100 тредов» и прочее.
- c++, kernel, sockets, threads, си
- 0
- 1
- Начнём. Очередной пятизвёздочный проиграл погоны. Обычно я не пишу подобные темы, но тут особенный случай. По воле виновника.
- Первое; почему эксперт проиграл ещё до начала. Все попытки есть не более чем пример неуверенности и трусости. Почему?
- Начнём сначала.
- Было заявлено:
- Больше 200–300 уже будут доставлять проблемы. man c10k problem.
- Эксперт пруфцанул c10k. Расчёт прост - c10k достаточно распространённый миф и с ним проблем быть не должно. Ошибка первая.
- На что был дан ответ:
- c10k протух и не актуален уже десять лет.
- Тут некоторые начнут мне говорить, что я балабол и в отличии от эксперта, который пруфцанул хоть чем-то, ничем не пруфцанул. На самом деле это враньё - ведь в рамках контекста уже было доказано то, что ядро спокойно может спокойно шедулить 100к тредов и более. Этого уже достаточно для того, чтобы понимать - 10к тредов для ядра ничто.
- Ответ был следующим:
- Ну давай сделай веб-сервер по принципу одно соединение — один тред. Посмотрим, сколько он выдаст и когда он загнётся. Сравниваем с nginx. Или ты сразу из треда улетаешь? ^_^
- Тут уже есть сразу несколько манипуляций, которые заранее определяют проигрыш эксперта. Ведь, если ты уверен в победе - зачем ты манипулируешь?
- Нулевое - это то, что у вас за манипуляцию не котируется, поэтому я её не учитываю. С какого хрена условия различны. Почему один должен «делать вебсервер», а другой не должен? Мотивация манипуляции проста - определить за пруф то, что оппонент делать не будет по причине слишком большой затраты времени на это.
- Первое - подмена понятий. c10k не имеет никакого прямого отношения к вебсерверу. Мотивация проста и была определена выше. Прикрутить к пруфу как можно больше не относящихся к сути задач, тем самым свести на нет возможность оппонента к ответу.
- Второе - подмена понятий. Изначально определялась что? «загнётся» - т.е. «не будет работать». В данном случае эксперт начинает ставить уже совершенно другую задачу - «победить нгинкс в производительности». Мотивация всё та же.
- Далее эта песня будет продолжать до бесконечности. «а нгинкс может в пхп, а твой не может» и прочее. Основание для подобного я определю ниже и примеры предоставлю.
- На что был дан ответ:
- c10k - это про 10к коннектов, а не про нгинкс. >>Работоспособность 10к тредов доказана? Доказана.
- Раскрытие 2-х манипуляций вкупе с апелляцией к моим доказательствам на тему «одновременной работы 100к тредов». Одновременная работа 10к тредов доказана. Из этого уже делается вывод, что никаких проблем нет. Ведь основная проблема подхода «тред на коннекшен» в том, что «много тредов „загнуться“», но уже доказано то, что они не загнуться.
- А раз других причин нет - значит требования несостоятельны. И опять же - мотивация их одна. Выше она уже была определена.
- Ответ:
- А на простенькой задаче лапки поднял и что-то там про работоспособность мямлит. Нет, пока не покажешь рабочий пример, ты просто балабол.
- Т.е. пошла детсадовская попытка взять меня «на понт» вкупе с игнорированием всех моих доводов против. Тут уже фиксируется слив.
- Но продолжим. Я пропускаю то, где я отвечал всё то же самое, что писал выше. В результате:
- Моги. Возьми Apache старенький, например, и выжми на нём обработку десяти тысяч соединений одновременно.
- Эксперт признал несостоятельность своих заявлений. Здесь замаскирована очередная попытка слиться. Выкати я апач, то эксперт просто бы слился на «нгинкс быстрее».
- Ответ:
- Я уже обосновал тут то, что 10к тредов спокойно работают. Мне пойти тебе хелворд написать? Ты не можешь из А вывести Б?
- Тоже самое, что я уже писал выше. Несостоятельность вывести экспертом А из Б зафиксирована.
- Ответ:
- У тебя уже было времени чтобы десять раз его написать. Но что-то я не вижу кода. Ты хотел взять готовый код, так бери. Чего на попятную пошёл? Погуглил-почитал и понял, что сморозил, а теперь пытаешься выгородиться? :-D
- Очередная попытка взять «на понт». Эта потуга очень показательна, позже мы к ней вернёмся.
- Далее я попросил определить условия того, что я, собственно, должен был «уже десять раз написать».
- HTTP реверс-прокси, за которым один медленно отдающий данные бекенд. Твой реверс-прокси должен адекватно обрабатывать 10 тысяч одновременных подключений. Для определённости бекенд отдаёт файл длиной 8192000 байт с ограничением скорости в 8192 байта в секунду. Твоя реализация должна обрабатывать каждое соединение в отдельной нити. Полной реализации HTTP не требуется, допустима реализация подмножества HTTP/1.0. Достаточна реализация identity кодировки передачи.
- Очередной подтверждение моих слов. Эксперт продолжает пользоваться подменой понятий, отождествляя c10k с вебсервером. Ему это было указано, но он благополучно всё проигнорировал и слился. Тут опять же можно только констатировать слив.
- Так же вкупе с этим эксперт используется и второй манипуляцией. Пытаясь напихать мне побольше не относящихся к теме условий. К этому добавляется ещё дополнительная мотивация. Эксперт пытается определить для себя пути к отступлению. Ведь даже если я захочу потратить на этот бред своё время, то можно сколько угодно меня мурыжить. Ведь он не определил границы реализуемого, а значит можно сколь угодно тянуть время и рассказывать мне то, что я реализовал меньше, чем нужно.
- Так же тут добавляется третья манипуляция. Естественно, эксперт несёт эту херню автоматом и не понимает скрытых мотиваций - его основная мотивация спасти свою жопу. Манипуляция заключается в придумывании новых условий, которые по мнению эксперта являются определяющими неработоспособность «тред на коннект».
- Ведь никакие «байты в секунду» ни на что влиять не могут, т.к. никаких «байтов в секунду» не существует на уровне юзерспейса. Но это ладно. Мотивацию я уже определил выше. Имея возможность выкатить без оснований любое условие - мы можем утверждать всё что угодно. Надо понимать, что никакие условия просто так не ставятся. Ведь если условия есть - значит без них всё работает. Таким образом это и есть то обоснование «пхп не запустил - не засчитано».
- Далее от меня последовало разъяснение всего того, что разъяснял выше, а так же:
- В рамках c10k определяется одновременную обработку 10к сокетов. Трепут никак не определяется. Никаких файлов, никакой другой херни нет. Никакого хттп, вебчика и прочего нет.
- Поэтому ты, либо идёшь и правишь википедию, либо сливаешься из треда. Обработку 10к сокетов я выкачу. И не забывай про звёзды.
- На этом приключения нашего эксперта закончены. Либо он проиграл, либо правит википедию. Ведь пока он не связал логический свои требования с контекстом - все его требования пыль. И если раньше он мог съезжать( что он и делал) на то, что «все это итак знают» и «я это доказывать не должен», либо «ты просто идиот», то тут такого уже не прокатит.
- Если ты не в состоянии на примитивном уровне реализовать HTTP, ты просто ноль. На самом деле, это условие облегчает тебе работу, так как для тестов можно переиспользовать уже существующие инструменты.
- Далее опять пошли попытки взять «на понт». В любом случае - любой уход от ответа - есть слив. И это уже было зафиксировано десять раз.
- Подобные заявления:
- Вот ты ещё соломки подстелил. Да, проблема в подходе есть. Только вот она возникает при переходе от миллиона к десяти миллионам. Не пытайся прикрыться этим при обработке 10k потоков.
- Я разбирать не буду. Тот кто не поймёт - тот не поймёт, а кто может - итак всё понял без моих объяснений. Но всё же напишу. Проблема в сокетах не в коннекшенах, а в трупуте. Пациент просто не понимать того, о чём пытается болтать. Как можно нести подобную херню, пытаясь рассуждать об мультиплексинге, который как раз-таки то и делает, что определяет несостоятельность сокетов как api.
- Это типичные потуги всех балаболов, которые только и могут что - манипулировать. Ведь я должен что сделать? Я должен показать, что обработка 10к коннекшенов в 10к тредов работает и работает нормально. Остальное меня волновать не должно. И меня оно не волнует. И если аудитория использует и является жертвами подобных манипуляций - пичально и глупо.
- Ну а по теме. https://pastebin.com/xk37uhcS - клиент, https://pastebin.com/RVHfBkuc - сервер. 10к тредов, 10к коннекшенов и 400крпс. И в очередной раз, очередной эксперт уплыл вместе со своими погонами и звёздами.
- saifuluk
- 12.07.2017 6:36:42
- ← Немного слов про умные компиляторы
- Хранение ресурсов приложения в git →
- Где ссылка на драму?
- peregrine ★★★★★ (12.07.2017 6:40:14)
- Ссылка
- Сообщение удалено Pinkbyte по причине Блокировка пользователя с удалением сообщений (0)
- Ответ на: комментарий от peregrine 12.07.2017 6:40:14
- Изи гуглится, а так - www.linux.org.ru/forum/development/13512175/page1#comment-13517429 и далее по треду.
- saifuluk (12.07.2017 6:43:48)
- Привет. Лучше бы ты вместо самоутверждения на ЛОРе накатал статью годную, развеющую «миф» о 10к коннектов, с демонстрацией различий в сложности организации кода, латенси, трупута, как на многопоточный код повлияют блокировки (ведь сервер часто имеет общий для клиентов r/w стейт), как быть с сотней тысяч, с миллионом соединений. Можно даже вдаваться в подробности, как разные подходы аффектят ядро, процессор и сетевую карту, если знаешь об этом. Ну то есть я не хочу сказать, что ты нам что-то обязан или не прав в своих утверждениях, но вся вот эта простыня — пустая болтовня, которая не приведёт ни к какому конструктиву, и по сути трата времени.
- staseg ★★★★★ (12.07.2017 7:08:16)
- Ссылка
- Сообщение удалено utf8nowhere по причине (0)
- Ответ на: комментарий от staseg 12.07.2017 7:08:16
- Лучше бы ты вместо самоутверждения на ЛОРе
- Очередной пятизвездочный выкатил требования.
- utf8nowhere ★ (12.07.2017 7:20:20)
- Поздравляю ТС'а - он таки себе что-то в этом Интернете доказал. Молодец, так держать! Все тебя любит, уважает и долго будет помнить твою эпическую победу.
- anonymous (12.07.2017 7:24:36)
- Ссылка
- Ответ на: комментарий от staseg 12.07.2017 7:08:16
- Затести код. И что бы соединения не просто ping->pong и всё, а что-то туда обратно передавалось на каждое соединение 500кб трафика от сервера и 100 от клиента.
- Dron ★★★★★ (12.07.2017 7:30:17)
- Ссылка
- Ответ на: комментарий от staseg 12.07.2017 7:08:16
- Тьфу, не тебе, извини ☺
- Dron ★★★★★ (12.07.2017 7:30:45)
- Ссылка
- Ответ на: комментарий от staseg 12.07.2017 7:08:16
- самоутверждения
- Неверно. Я не буду рассказывать почему.
- как быть с сотней тысяч, с миллионом соединений.
- Выкинуть сокеты и ядро? Только так.
- Ну то есть я не хочу сказать, что ты нам что-то обязан или не прав в своих утверждениях, но вся вот эта простыня — пустая болтовня, которая не приведёт ни к какому конструктиву, и по сути трата времени.
- Она полезна. Ведь цель её не в том, чтобы рассказать как надо, либо что-то ещё. Цель её - показать то, что не стоит верить всему тому, что написано в интернете. Сколь бы «авторитетным» не был убеждающий вас в чём-то его слова значит не более, чем слова рандомного рандома.
- Не всё то, что было актуально 20лет назад является актуальным сейчас. Таким мифов очень много. Сисколы медленные, 100 тредов ставят ядро раком и прочее. В них верит очень много людей.
- А «пятизвёздочный» - это пример того, что авторитеты мало что стоят. И мотивация их к обману и манипуляциям не меньшая, чем у других. Вернее ещё большая. И не важно в чём причина - впарить кому-то го, либо оправдаться на лоре.
- А «как делать надо» - это совершенно другая тема. Тут можно придумать сколь угодно много критериев и для всех решение будет разным. Для 99.9% случаев вообще существует только одно решение - брать что есть.
- А проповедовать на тему «как работать с миллионами» я не могу. Таким задач передо мною не стояло и я их не решал. Я лишь могу из А вывести Б, а после показать, что это действительно так.
- Встанет передо мною задача подобная - я напишу.
- saifuluk (12.07.2017 7:41:29)
- Ссылка
- Ответ на: комментарий от anonymous 12.07.2017 7:24:36
- Почему вы всегда всё пытаетесь превратить в цирк? Меня не волнует ни победа, ни интернет. Я всегда готов от неё отказаться.
- saifuluk (12.07.2017 7:43:36)
- Ссылка
- Ответ на: комментарий от saifuluk 12.07.2017 7:43:36
- Меня не волнует ни победа, ни интернет. Я всегда готов от неё отказаться.
- А вот фиг, не получится - тема уже создана, заявка на победу подана, пахнет горячем и слышно эхо взрыва. :)
- anonymous (12.07.2017 7:50:03)
- Ссылка
- Ответ на: комментарий от saifuluk 12.07.2017 7:41:29
- Она не полезна. Заявляю тебе как абсолютно незаинтересованна в вашем споре сторона. Потому что ты ничего не показал в итоге. Ведь вроде никто не спорит, что хоть как-то оно пережует сколько угодно дохрена неблокирщихся потоков. Вопрос в цене. Например если мы на порядок упростим код ценой 20% производительности, то это абсолютно acceptable для подавляющего числа задач.
- ЗЫ Я почему-то думал, что «миф» про 10к коннектов — это про соснулость select'a против (e)poll, а не про потоки :)
- staseg ★★★★★ (12.07.2017 7:52:36)
- Ссылка
- Поддерживаю staseg, если у вас есть время, желание, пожалуйста, оформите статью или серию статей, где вы выложите и разжуете свои мысли, - с удовольствием почитаю и подниму свой уровень знаний.
- Silerus ★ (12.07.2017 7:57:33)
- Ссылка
- Ты забыл i-rinat позвать. Привет i-rinat ☺
- Dron ★★★★★ (12.07.2017 8:02:47)
- Последнее исправление: Dron 12.07.2017 8:03:18 (всего исправлений: 1)
- Ссылка
- Молодец ТС, настоящий джедай.
- rumgot ★★ (12.07.2017 8:18:07)
- Ссылка
- #define safe_call(call) safe_call(call, #call)
- Не понял! А это еще зачем?
- shkolnick-kun ★★ (12.07.2017 8:23:03)
- Ссылка
- Сообщение удалено Pinkbyte по причине Блокировка пользователя с удалением сообщений (0)
- Ответ на: комментарий от staseg 12.07.2017 7:52:36
- Потому что ты ничего не показал в итоге.
- Я всё показал.
- Вопрос в цене. Например если мы на порядок упростим код ценой 20% производительности, то это абсолютно acceptable для подавляющего числа задач.
- Код на потоках проще.
- Вопрос не в цене - это манипуляция. Если бы был вопрос в цене - всё было бы совершенно иначе. Нгинкс у нас является пускалкой для пхп. 99.999% всего кода даже близко не упираются в разницу между потоками/не потоками. Да и там 10к соединениями не пахнет.
- Тут место для ещё одно манипуляции. Изначально под соединением имеется ввиду АКТИВНЫЕ соединения, но сейчас всё дошло до такого маразма, что уже давно активные/не активные не различают.
- Никакой хелворд не может выдать 10к рпс, а значит там по определению 10к активных соединений быть не может.
- Тем более в контексте хттп это выглядит наиболее смешным.
- Поэтому вопрос именно в возможности. Всё остальное противоречит наблюдаемой реальности. Возможность показана. Изначально утверждалась невозможность.
- saifuluk (12.07.2017 8:24:05)
- Ответ на: комментарий от rumgot 12.07.2017 8:18:07
- Не джедай, а Царь.
- anonymous (12.07.2017 8:27:39)
- Ссылка
- Ответ на: комментарий от saifuluk 12.07.2017 7:41:29
- А «пятизвёздочный» - это пример того, что авторитеты мало что стоят. И мотивация их к обману и манипуляциям не меньшая, чем у других. Вернее ещё большая. И не важно в чём причина - впарить кому-то го, либо оправдаться на лоре.
- «Пятизвездочный» - это просто чувак, который давно на лоре. У тебя комплексы чи шо? )
- vasily_pupkin ★★★★★ (12.07.2017 8:28:09)
- Ссылка
- Сообщение удалено Pinkbyte по причине Блокировка пользователя с удалением сообщений (0)
- Ответ на: комментарий от shkolnick-kun 12.07.2017 8:23:03
- Не понял! А это еще зачем?
- Для того, чтобы получить контекст вызова. В данном случае строку вызова. Так же можно получить номер строки и прочее.
- write(accept_fd, it, 1024) == -1, errno(104) == Connection reset by peer
- saifuluk (12.07.2017 8:34:23)
- Сообщение удалено Pinkbyte по причине Блокировка пользователя с удалением сообщений (0)
- Ответ на: комментарий от vasily_pupkin 12.07.2017 8:28:09
- «Пятизвездочный» - это просто чувак, который давно на лоре. У тебя комплексы чи шо? )
- Пятизвёздочный, в данном случае, это кодовое имя конкретного пользователя, а в более широком смысле просто «эксперт».
- saifuluk (12.07.2017 8:37:16)
- Сообщение удалено Pinkbyte по причине Блокировка пользователя с удалением сообщений (0)
- Ответ на: комментарий от anonymous 12.07.2017 7:50:03
- А вот фиг, не получится - тема уже создана, заявка на победу подана, пахнет горячем и слышно эхо взрыва. :)
- Ладно-ладно. Думай что хочешь.
- saifuluk (12.07.2017 8:38:11)
- Вы не можете добавлять комментарии в эту тему. Тема удалена.
- ← Немного слов про умные компиляторы
- Development
- Хранение ресурсов приложения в git →
- Похожие темы
- Форум C++ программист (Киев) (2012)
- Форум Можно ли использовать один сокет из разных потоков? (2012)
- Форум мультиплексировать операции между двумя дескрипторами (2016)
- Форум 10^100 (2013)
- Форум получить socket fd из "struct sock" (2017)
- Форум треды в линукс (2016)
- Форум Подскажите ЯП с норм тредами (2012)
- Новости Проблемa c10k (2001)
- Форум 100% загрузка ядер процессора (2015)
- Форум 100/Full => 10/Half (2004)
- О Сервере - Правила форума - Правила разметки
- https://www.linux.org.ru/
Advertisement
Add Comment
Please, Sign In to add comment