LINUX.ORG.RU

Царю про 10к в надежде перевести дискуссию в конструктив

 ,


11

10

Я не думаю, что кого-то можно впечатлить принципиальной возможностью запустить 10к потоков для обслуживания клиентов. Когда говорят про встанет раком, имеют в виду неоправданную потерю производительности.

Если ты готов померять реальный перформанс, пиши, я налабаю на еполле аналоги твоих тестовых серверов, чтобы не ты один тратил своё время. Меня например больше в всего в контексте этого спора интересует, как поведёт себя сервер с 10к потоков например на 4 ядрах против еполльного на одном таком же ядре, в вариантах без локов и с.

Результаты исследования можешь запостить на ЛОРе и восстановить честь среди пятизвездочных 😝

Начало дискуссии где-то рядом в удаленных по инициативе какого-то наркомана.

PS скорее всего я отвечу не раньше ночи или следующего утра.

★★★★★
Ответ на: комментарий от eao197

Опять манипуляции и враньё. Тебе попросили обосновать свой трёп по по поводу:

Да еще желательно, чтобы между if-ами были какие-то действия (тогда процессору сложнее ветвления предсказывать).
чтобы между if-ами были какие-то действия
какие-то действия
действия

Именно это, твои сливы на стоимость исключений - меня не волнуют. Именно это, а не что другое.

Я даже не прошу обосновывать и доказывать - просто опиши причины по которым, как ты считаешь, следует то, что код внутри ифа как-то влияет на предсказатель.

Ты же это не с потолка взял, либо как обычно за кем-то повторил? Ну дак, если повторил, то это свидетельство твоей некомпетентности. В таких моментах дают ссылку, либо ссылаются на что-то. Если ты утверждаешь - сослаться на «я где-то услышал и иди спорь там» - не работает.

anonymous
()
Ответ на: комментарий от anonymous

Херня номер один. Переключение контекста не является дорогой операцией. То, что ты пытаешься тут ретранслировать - то совершенно другое, а именно переключение контекста vm. Между тредами этого не происходит.

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

anonymous
()
Ответ на: комментарий от anonymous

Окей. Я не манипулировал, если что. Просто пытаюсь из всей этой темы максимум конструктива и полезной информации вынести.

Интересно, как поведут себя разные варианты на разных задачах.

deadskif
()
Ответ на: комментарий от i-rinat

А почему да? Хочешь общаться с Царём — пожалуйста. Воспринимать его всерьёз — себе дороже.

Ну то есть это все просто троллинг Царя?

Мне тоже интересно.

Но вы же утверждали, что все плохо?

deadskif
()
Ответ на: комментарий от eao197

Эксперименты ТС подтверждают работоспособность (и даже больше) pthread. Причем сам Царь, ЕМНИП, нигде и не утверждал, что pthread лучше и/или быстрее.

И я не считаю его код решением задачи.

У нас только его и ТС'а код есть. Брать для сравнения nginx и тестировать на нем тоже спорно, ибо там 100500 HTTP-специфичных нюансов, согласитесь.

deadskif
()
Ответ на: комментарий от deadskif

Ну вот смотри. Что у людей есть? Мозг. Что он им позволяет делать? Правильно - определять причины и выводить следствия.

Как поступают люди? У нас есть моя реализация, а далее есть какая-то задача. Допустим, я читаю, что моя задача плохо ляжет на данную реализацию c10k. Но что самое важное? Правильно - почему.

Ведь если я так считаю, то у меня должны быть на то причины. Обоснованные причины. И проблема в том, что ни у кого этих причин нет.

И самое главное. Дело в том, что c10k - это то, что отвечает именно за обеспечения передачи данных. Т.е. не важно какой у тебя тип - однопотоный епул и неблокирующий ИО, многопоточный блокирующий ИО - это никак тебя не обязывает использовать 1 тред, либо 100500 тредов дальше.

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

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

Идём далее. Всё это просто проверяется и ты можешь проверить это сам. Вставляешь цикл вида: for(volatile size_t i = 0; i < 100500; ++i); На штеуде этот цикл будет ~занимать 100500 * 5 тактов, но ты можешь это сам проверить.

Далее ты подбираешь такое число, которое бы соответствовало 1/20000 части от частота * ядра. 50% мы берём из-за того, что у нас и бенчмарк чего-то жрёт, да и цена ИО есть.

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

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

Если у тебя какая-то memory bound задача, то такой же бенчмарк можно написать и для неё. Там хелворд какой-нибудь. Но по идее это не особо будет отличатся от цпу, но тут надо понимать то, что память не полностью масштабируется по ядрам и может так случиться, что у тебя параллельно с твоим бенчмарком будет работать ядерный код, который сжирает память. Поэтому отдельный бенчмарк и нужен.

Т.е. всё это измеряется за 5минут, но измерил ли кто-то из балаболов тут это? Нет, только болтатали. Как болтал четырёхзвёздочный про то, что «мой код читерит потому, что в епуле там 1024, а не 10к», но как всегда - балабол не осилил пойти, 1минуту потратить и написать там 10к и убедиться, что ничего не измениться.

И так и выходит, что им вроде всем нужна правда, а на самом деле им нужна не правда, а оправдания. Врать в сторону меня, ничего не предоставлять и прочее. Увеличивая мне задачи до разряда невыполнимых за разумное время на основании того, что «а вот на реальных задачах это работать не будет».

При этом что бы я не сделал - найдётся ещё более «реальная» задача на которой это 100% не работает. И так до бесконечности.

anonymous
()
Ответ на: комментарий от i-rinat

Мне тоже интересно. Но не интересно ни перебрасываться с Царём какашками, ни ловить их от него.

А ты думаешь ему интересно ловить их от eao197? :-) Или мне? :-) Женька не умеет признавать свою неправоту :-) Он строит из себя великого эксперта, мнение которого является единственно правильным :-) Когда же ему начинают явно показывать истинную ценность его слов, он переходит на оскорбления и начинает генерировать истерику :-) Этакий экспертно-менторский приём :-)

anonymous
()
Ответ на: комментарий от eao197

Я сказал. Как только ты признаешь, что ты пробалаболил, либо приведёшь основания для своих утверждений - я уже, в рамках их опровержений предоставлю основания свои. Но так уж и быть - ради пацанов я предоставлю их и после признания твоего в балабольстве.

И на будущие. Я уже повторял вам уже всем это десятки раз. Не думай, что те, кто тебя слушают представляют только зелёных новичков, молчаливых экспертов, либо подобных тебе балаболов. Бывает так, что это могу прочитать и я. А т.к. ты не следишь за своей болтовнёй - ты предоставил мне идеальное доказательство того, что ты и в это теме трепался.

Т.е. я имею право экстраполировать выводы в эту тему.

anonymous
()
Ответ на: комментарий от deadskif

Ну то есть это все просто троллинг Царя?

Нет, это Царь троллит нас.

Но вы же утверждали, что все плохо?

Я видел, как плохо становится Apache. Проверять на упрощённом коде не пробовал. Так что если кто-то напишет и сравнит, интересно посмотреть.

Естественно, на бесконечно быстрой машине любой подход будет работать, поэтому пределы применимости зависят от мощности компа. Возможно, современные машины уже достаточно быстрые, чтобы прокачать полгигабита в 10000 потоков на потоках ОС. Вот это интересно узнать. Если не может, узнать, сколько сможет. Если сможет, узнать, сколько ещё сможет. И так далее.

Царь просто выкатил код, который создаёт кучу тредов, которые быстренько делают read-write, а потом спят. Лично мне такое не интересно. Мне интересен был реверс-прокси. (Интересно, как Царь собрался запускать PHP на реверс-прокси?)

i-rinat ★★★★★
()
Ответ на: комментарий от deadskif

А, да. Если хочешь пообщаться с Царём — мы тут только за. На это тоже будет интересно посмотреть.

i-rinat ★★★★★
()
Ответ на: комментарий от deadskif

У нас, вероятно, разная интерпретация термина «загнется». Я воспринимаю «загнется» как серьезную и заметную деградацию производительности. Как раз код Царя и не позволяет судить «загнется» или нет под нагрузкой.

Кода от ТСа пока нет, поэтому на эту тему я ничего и не говорю.

Простите, больше писать нет возможности.

eao197 ★★★★★
()
Ответ на: комментарий от anonymous

Я тебе уже сказал, что свое высказывание сделал на основании бенчмарков скорости исключений из Интернета. Ссылки сейчас искать не буду, т.к. с телефона в поезде это не сделать.

Кстати, так где чОткий ответ, а, балабол? Вопрос был задан давным давно, а ответа все нет. Не можешь признать, что обосрался?

eao197 ★★★★★
()
Ответ на: комментарий от anonymous

И миф о том, что контекстсвич прям дожопы дорогая операция( как и сисколы)

тащемта сисколы относительно дёшевы, в отличии от тех самых переключений тредов. ну и да, при сисколах тоже происходит переключение контекста.

основан именно что на медленным переключением адресных пространств.

помимо смены адресного пространства происходит не менее затратные запись/чтение регистров и сохранение стэка, и даже если не придётся обнулять tlb путём пропуска load_cr3, то l1/l2/l3 по-любому будут засираться из-за разных рабочих сетов у тредов. ты можешь опять вскукарекнуть «вераятнасть-хренаятнасть», но лучше бы тебе ознакомиться с теорией.

anonymous
()
Ответ на: комментарий от eao197

Я тебе уже сказал, что свое высказывание сделал на основании бенчмарков скорости исключений из Интернета. Ссылки сейчас искать не буду, т.к. с телефона в поезде это не сделать.

Не, не. Ты не понял. Я тебе не спрашиваю про твои исключения. Я спрашиваю про предсказатель переходов и влияние на него кода внутри ифа. Не нужно мне сливаться на исключения.

В этом вся суть подобных балаболов. Он увидел какую-то херню в интернете и придумал ей обоснование неведомое, а для того, чтобы казаться ещё более экспертным кукарекнул про предсказатель, про который он нихрена не знает.

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

И каким-то хреном возомнил, что теперь ты имеешь какое-то отношение к лоулевел, тредам и прочему. Можешь делать какие-то оценки. Нет, ты знаешь о тредах не более, чем ашом о бойреле, который он вчера подключал.

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

Я ведь не против, чтобы ты высказывал своё мнение, но оно должно быть обосновано.

Ты можешь пугать ламерков на подобных сходках - там поверят в любую херню. А кто не поверит, тот либо молчит, либо на подобные мероприятия не ходит.

Кстати, так где чОткий ответ, а, балабол? Вопрос был задан давным давно, а ответа все нет. Не можешь признать, что обосрался?

Ты реально на это рассчитываешь? Не прокатит. Перед моим ответом - ты должен чётко и ясно определить значение своих определений. Пока ты их не определил - вопрос не имеет смысла.

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

И пусть сейчас будет множество людей, которые тебе поверят. Но их будет всё меньше и меньше. В чём смысл?

Я же вам говор - я хочу, чтобы вы со мною спорили. Я хочу, чтобы вы мне открывали глаза на что-то. Рассказывали что-то новое. Я не хочу существовать в этой клоаке идиотов. Я хочу света. Всё просто.

У меня нет цели рассказать всем то, что ты балабол, некомпетентен и прочее - мне насрать. Я это делаю лишь потому, что по иному на вас воздействовать не получается.

anonymous
()
Ответ на: комментарий от anonymous

тащемта сисколы относительно дёшевы, в отличии от тех самых переключений тредов. ну и да, при сисколах тоже происходит переключение контекста.

Именно это я и сказал - читай внимательно. Дороговизна сисколов такой же миф, как и дороговизна тредов.

помимо смены адресного пространства происходит не менее затратные запись/чтение регистров

Кто тебе такую фигню сообщил? Это неверно. Сохранение контекста даже в память - это цена сотни тактов. Сколько таких сотен тактов в секунде? А сколько нгинкс выдаёт рпс? То-то и оно.

сохранение стэка

Чё? Какое ещё сохранение стэка. Стек где был - там и остался. Ничего сохранять не надо.

и даже если не придётся обнулять tlb путём пропуска load_cr3, то l1/l2/l3 по-любому будут засираться из-за разных рабочих сетов у тредов

Не верно. В данном случае выполнение тех всех тредов будет последовательное. Причины я уже назвал. Их просто некому остановить.

Засёр л3 будет происходить в любом случае - у тебя всё равно обработка многопоточная. А уж если она на ассинхронной лапше, то разницы с тредами нет никакой. А ассинхронная лапша - это основа в любой «современной» реализации подобной логики.

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

Какая там у тебя теория. Ты, очередной балабол, который пришёл и насрал мне херни, рандомной уровня школотрона. Ничего конкретного. При этом 10раз обосрался.

И теперь меня в чём-то обвиняешь? Отличная история. Типичный эксперт.

anonymous
()
Ответ на: комментарий от anonymous

И самое главное. Дело в том, что c10k - это то, что отвечает именно за обеспечения передачи данных. Т.е. не важно какой у тебя тип - однопотоный епул и неблокирующий ИО, многопоточный блокирующий ИО - это никак тебя не обязывает использовать 1 тред, либо 100500 тредов дальше.

Так то да, но насколько я помню, в свое время была большая проблема в организации 10K подключений N:N процессов (и возможно потоков) из-за различных накладных расходов и прочих причин. Отсюда и появились select-ы. Сейчас, я так понимаю, все несколько сложнее.

Идём далее. Всё это просто проверяется и ты можешь проверить это сам. Вставляешь цикл вида: for(volatile size_t i = 0; i < 100500; ++i); На штеуде этот цикл будет ~занимать 100500 * 5 тактов, но ты можешь это сам проверить.
Далее ты подбираешь такое число, которое бы соответствовало 1/20000 части от частота * ядра. 50% мы берём из-за того, что у нас и бенчмарк чего-то жрёт, да и цена ИО есть.
Так же, если у тебя есть хипертреды, то тебе надо учесть то, что этот код хорошо ложиться на гипертреды. Просто пусти это в N потоков в которых входят ядра+гипертреды, чтобы точно знать сколько это займёт.
Далее ты очень просто поучишь - сколько полезно работы может сделать данная вариация.

Стоп. Если честно, я дико не выспался сегодня и сейчас дико торможу. Чем количественно характеризуется ``сколько полезно работы может сделать данная вариация"? Тактов/инструкций в секунду? Если лень разжовывать, можно на завтра отложить.

deadskif
()
Ответ на: комментарий от anonymous

Царь, ты вырвал один кусок фразы из рекомендации о том, как более адекватно оценивать стоимость исключений. Не нужно докапываться до столба, вырванного из контекста.

По поводу чОткого ответа: ты, блин, историю вопросов к тебе подними. Там от тебя ссылка на мое якобы утверждение требуется. Где она?

eao197 ★★★★★
()
Ответ на: комментарий от eao197

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

Пардон, почему то думал, что ТС код выложил.

deadskif
()
Ответ на: комментарий от eao197

Царь, ты вырвал один кусок фразы из рекомендации о том

Врёшь. Никакую фразу я не вырывал. У неё однозначная трактовка. Никакие вырывания на неё не влияют.

как более адекватно оценивать стоимость исключений.

Меня не интересуют твоё адекватно. И твои исключения. Я вижу знакомую мне( по этой теме) формулировку в том же самое контексте - обосновывание своих слов. Конечно, как обычно не связал её с контекстом, а значит и выдрать её невозможно. Но это неважно.

Эта фраза является типичным, для подобных тебе, примером. Чего стоят все ваши аргументы.

И сейчас я рассматриваю именно твой аргумент, а именно ~«влияние тела ифа на предсказатель». И мне нужно подтверждение этим словам, а их нет и не будет. И причина проста.

А теперь началось - я не я и корова не моя. Зачем ты это делаешь?

По поводу чОткого ответа: ты, блин, историю вопросов к тебе подними. Там от тебя ссылка на мое якобы утверждение требуется. Где она?

Мне лениво пока этим заниматься. Как будет не лень я отвечу тебе. В первом случае ты так и не определил нихрена, а во втором слился на то, что я так же не просил. Я уж не стал продолжать в надежде, что ты хоть что-то понял. Если нихрена не понял - я продолжу. Когда мне будет не лень.

Ты мне лучше отвечай по теме.

anonymous
()
Ответ на: комментарий от deadskif

Ну вот то, что ядро прожевывает потоки, которые только и делают, что сисколы, и не удивительно. Там «горячие» данные того же планировщика остывать не успевают. Ну и еще ряд факторов, которые я на первых страницах высказывал, но которые тут Царь поднял на смех.

Поэтому я и говорю ростоянно о том, что нужна какая-то прикладная нагрузка. Иначе легко получить, что на 10к нитях, которые только висят на сисколах, модель N:N живет нормально. А стоит добавить прикладуху и получим деградацию.

eao197 ★★★★★
()
Ответ на: комментарий от anonymous

Мне лениво пока этим заниматься

Так если тебе лень, так с чего твои просьбы учитывать?

Ну и ты вырвал фразу из контекста. С хрена ли? Хочешь сказать, что я не понимаю, ну Ок, пусть будет так. Теперь объясни, в чем я не прав, говоря про замеры удельной стоимости исключений.

И да, ссылку найди, о которой тебя просили. Или слейся.

eao197 ★★★★★
()
Ответ на: комментарий от deadskif

Ну то есть это все просто троллинг Царя?

царь — забавный клоун

вот представь: некто случайно ударился о столб на дороге, и затем стоит и на полном серьезе осыпает этот столб оскорблениями, доказывает, что это именно столб виноват в том, что он ударился, и лезет на столб с кулаками?

вот так и царь: пытается доказать например, что eao197 ничего сетевого на написал (или что-то тупое до такой же степени) — я бложик eao197 почитывал несколько лет, и на это иначе как ржачем ответить не могу

у царя sleep(10) в рабочих нитях; я уже сколько раз широко улыбаюсь (и иногда ржу), вспоминая про это

конечно, это юмор не слишком высокого уровня «чувак подскользнулся на кожуре от банана и упал, гы-гы-гы», но смешно

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

но если ты и правда че-то хочешь забенчить — welcome; тут немного вменяемых людей есть именно тех. сторону обсуждать

а да, будешь пытаться царю че-то доказать — у царя стандартная отмазка «ваша постановка задачи неправильная, а правильная именно та, которую решает мой код»

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 1)
Ответ на: комментарий от anonymous

Сохранение контекста даже в память - это цена сотни тактов.

так тред тоже не один, какбэ, ещё добавить время простоя в очереди на исполнение и оверхед получается нормальный в итоге. читни хоть Quantifying The Cost of Context Switch, чтобы не позориться.

Ты, очередной балабол, который пришёл и насрал мне херни, рандомной уровня школотрона. Ничего конкретного. При этом 10раз обосрался.

ты, главное, повторяй это почаще.

anonymous
()
Ответ на: комментарий от deadskif

Так то да, но насколько я помню, в свое время была большая проблема в организации 10K подключений N:N процессов (и возможно потоков) из-за различных накладных расходов и прочих причин. Отсюда и появились select-ы. Сейчас, я так понимаю, все несколько сложнее.

Да, сейчас всё намного сложнее. И сисколы раньше экономили. Я уже приводил примеры. Я уже приводил примеры подобных споров на лоре. Допустим, мне какой-то эксперт впаривал то, что спринтф для сложения строк путей, а нужен для решения проблем с тормазами сисколов. Потом, правда, его код со спринтфом с open оказался медленнее openat(open()). И таким примеров было много - я уже не помню где они и что с ними. Всё трут.

Вообще большинство представлений из 90-х и начала нулевых для современного мира не работают.

Стоп. Если честно, я дико не выспался сегодня и сейчас дико торможу. Чем количественно характеризуется ``сколько полезно работы может сделать данная вариация"? Тактов/инструкций в секунду? Если лень разжовывать, можно на завтра отложить.

Полезная работа - это работа обработчика данных. Измеряется она в процентах. Допустим, у тебя есть обработчик который может 10к рпс при фулл загрузке тачки. Ты добавляешь к нему сетевую часть и выходит 5к. Т.е. получается, что тачка выполняет 50% полезной работы, а 50% уходит на всё остальное.

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

Если проще - получая ограничения по rps мы не обязательно упираемся в цпу/память, либо что-то ещё. Скорее всего мы упёрлись в какое-то софтварное ограничение.

И тут может получится так, что мы можем получить максимум рпс используя только часть ресурсов цпу/памяти, а остальные простаивают. Тем самым мы за счёт них можем спрятать оверхеды.

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

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

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

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

Но их объяснения смеху подобны.

anonymous
()
Ответ на: комментарий от eao197

Считать условный md5-хэш от каждого 1КиБ и отправлять его обратно — норм? Потому что пилить что то сложное лень и некогда.

deadskif
()
Ответ на: комментарий от deadskif

Считать условный md5-хэш от каждого 1КиБ и отправлять его обратно — норм? Потому что пилить что то сложное лень и некогда.

еще желательно, чтобы объем исходящих данных был побольше — т.е. хэш надо дополнить заполнителем в ответе (для тестирования тормозных клиентов)

ну и лично мне кажется, что че-то полегче, типа crc32, так как такое тяжелое как md5 нетипично

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

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

КМК, это возможно сделать только кодом. Вот ты называешь Царя клоуном, но код предоставил только он. Все остальные ждут.. Как так(: ?

но если ты и правда че-то хочешь забенчить — welcome; тут немного вменяемых людей есть именно тех. сторону обсуждат

Постараюсь найти на это время.

еще желательно, чтобы объем исходящих данных был побольше — т.е. хэш надо дополнить заполнителем в ответе (для тестирования тормозных клиентов)

Могу размножить его на тот же 1КиБ.

ну и лично мне кажется, что че-то полегче, типа crc32, так как такое тяжелое как md5 нетипично

Я все-равно буду брать готовую функцию, что бы своим быдлокодом все не испортить.

Вопрос, как мерить и сравнивать результаты, что бы это всех устроило.

deadskif
()
Последнее исправление: deadskif (всего исправлений: 1)
Ответ на: комментарий от deadskif

Лично мне было бы интереснее видеть парсинг каких-то данных, да еще с динамической аллокацией и копированием кусков куда-нибудь. Что-то из области http или mqtt.

Но это сложно для форумного срача :( Еще одна причина, почему я сам тут ничего не пишу. Адекватный бенч требует большой работы.

eao197 ★★★★★
()
Ответ на: комментарий от anonymous

так тред тоже не один

Очередной пример юлежа. Балаболка утверждала одно «сохранение/восстановление регистров - дорогая операция». Теперь, когда она обосралась тема сменилась. И оказывает - это уже не операция дорогая, а уже не дорогая - просто их много.

ещё добавить время простоя в очереди на исполнение и оверхед получается нормальный в итоге.

Теперь разбираем очередные «манёвры». Вначале кукарекалось об одном, а теперь уже про другое. И теперь балаболка, пытается убедить всех в том, что изначально темы была такая же, но я с нею не согласился.

Никаких простоев нет. Простой одного не означает простой всех.

В любом случае - оверхед оценивается только в относительных величинах. Кукарекать о каких-то оверхедах без контекста - смысла не имеет.

Ну и самое главное - видим, как балаболка игнорирует тему с «загаживанием кешей», в доводах к которой балаболка обосралась. А так же пример с калбеками.

читни хоть Quantifying The Cost of Context Switch, чтобы не позориться.

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

А самое главно - балаболка не показала мне ни одного примера в котором я опозорился, а я показал как минимум 3 примера в которых она опозорилась. С одном согласилась, а другие проигнорировала.

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

ты, главное, повторяй это почаще.

Да, я буду повторять. Буду разбирать почему и в чём ты обосрался. Естественно - ты очередной лсный балабол, который пришёл покукарекать в мой адрес. И доказывать тебе что-то не имеет смысла. Никакой конкретики за тобою не стоит. Просто кидание говна в меня.

Растолковываю я это всё не для тебя, поэтому можешь игнорировать.

anonymous
()
Ответ на: комментарий от Aswed

Никто и не сомневался

Забыл поставить кавычки и уже пошли разоблачения.

Меня не интересуют твоё «адекватно»

Правильно, ибо адекватно это только в параллельной реальности, но не в этой.

anonymous
()
Ответ на: комментарий от deadskif

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

Если ты хочешь разобраться - реализовывай для себя. Если нужна реализация с меня - я её тебе напишу.

Но в любом случае мне насрать - вам самим решать. Нужно ли чистить форум от мусора, либо не нужно и нужно дальше жить в клоаке.

anonymous
()
Ответ на: комментарий от eao197

ИМХО, надо делать и то, и другое, потому как не HTTP единым.

Еще могу взять первую попавшуюся библиотеку для условного JSON, которой кодировать/декодировать несколько заранее определенных данных.

deadskif
()
Ответ на: комментарий от www_linux_org_ru

так же лично для меня тут цель — *убедительно* доказать ошибочность царского кода,

Обожаю подобное. Я хочу доказать. Я не могу доказать. Я ничего не доказал, но я уже знаю, что ошибочно.

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

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

у царя sleep(10) в рабочих нитях; я уже сколько раз широко улыбаюсь (и иногда ржу), вспоминая про это

И какая причина тебя побудила ржать? Кто-то сказал и ты повторяешь, думая что в этом что-то есть и ты меня как-то унижаешь? Смешно.

вот так и царь: пытается доказать например, что eao197 ничего сетевого на написал (или что-то тупое до такой же степени) — я бложик eao197 почитывал несколько лет, и на это иначе как ржачем ответить не могу

Данный персонаж признал своё неосведомлённость уже давно.

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

anonymous
()
Ответ на: комментарий от deadskif

Вопрос, как мерить и сравнивать результаты, что бы это всех устроило.

я думаю тут объективно могут быть различные подходы, имеющие право на жизнь — и результаты разных подходов интересны (кроме, конечно, царского, который подразумевает, что в сети заминок нет и потоки до 8 байт не фрагментируются)

короче: все подходы вменяемых людей интересны

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от anonymous

Ну мне в первую очередь для себя интересно разобраться.

Я просто сомневаюсь, что смогу сам как следует все протестировать.

deadskif
()
Ответ на: комментарий от deadskif

КМК, это возможно сделать только кодом.

а я и собираюсь кодом — разве что царь без необходимости сделал свой код собираемым жцц 7, а у меня пока руки не дошли его у себя поставить

Вот ты называешь Царя клоуном, но код предоставил только он.

неверно

код еще предоставил топикстартер Царю про 10к в надежде перевести дискуссию в конструктив (комментарий) и shdown Царю про 10к в надежде перевести дискуссию в конструктив (комментарий)

Все остальные ждут.. Как так(: ?

тоже неверно

я, чтобы не ждать жцц7 и не плеваться, чуть отрефакторил царский код: Царю про 10к в надежде перевести дискуссию в конструктив (комментарий) и тестанул его

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от deadskif

Чтобы убедиться - получишь ли ты тут какую-то помощь - ты можешь посмотреть на коммент выше, где эксперт предлагает свой код, который он ПРОТЕСТИРОВАЛ.

А теперь, ты можешь посмотреть и оценить весь уровень экспертности данного эксперта. А далее посмотреть выше - кто-то об этом написал? Нет. Каждый видел этот код, каждый знает что в нём не так, но молчат и отмазываются.

А теперь подумай - какая мотивация у подобных персонажей. Разобраться, либо свести счёты с царём. Но их они, конечно же, не сведут. Но в любом случае.

И так же подумай - помогут ли они тебе всё правильно протестировать, помогут ли разобраться. Я думаю тебе всё должно быть ясно.

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

А по поводу «результат который устроит всех» - им не нужен результат. Им нужна победа над царём, в условиях, который они сами подумали. Но они настолько слабы, что не могут даже этого. Поэтому любой результат, который не боеждает царя - будет считаться неверным.

Вон выше, он толкает про «пацаны выкатили код» - да, в ТС выкатил бенчи тредов и селектор - треды выйграл. При этом реализация ТС"а на тредах намного слабее моей.

Другой пацан выкатил решение на епуле, но не померил его, как это не сделал никто из данных экспертов.

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

anonymous
()
Ответ на: комментарий от www_linux_org_ru

а я и собираюсь кодом — разве что царь без необходимости сделал свой код собираемым жцц 7, а у меня пока руки не дошли его у себя поставить

Ты же орал, что он неправильный и несобирается? Оказывается уже собирается.

неверно

Скорее всего, имеется ввиду из вас, обвинителей царя.

код еще предоставил топикстартер Царю про 10к в надежде перевести дискуссию в конструктив (комментарий)

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

и shdown Царю про 10к в надежде перевести дискуссию в конструктив (комментарий)

Но его никто так и незабенчил, как и автор себе кода. Это свидетельствует лишь о вашей экспертности.

я, чтобы не ждать жцц7

Ты там его по почте заказал?

чуть отрефакторил царский код:

Т.е. на основании этого у тебя появляется кода? Я бы тебе рассказал, что ты сделал с моим кодом, но пока рано.

Царю про 10к в надежде перевести дискуссию в конструктив (комментарий)

Ты до сих пор не последовал моему совету, а один день сегодня истекает и шанс улетает. А тогда уже царь будет серъёзен.

и тестанул его

Ты даже не знаешь как глубоко в лужу ты себя загоняешь. Мне смешно и грустно одновременно. Что же вы такие все глупые.

anonymous
()
Ответ на: комментарий от deadskif

Пфф.

да я тоже удивляюсь — ты видимо с царем не общался

про его код можно сказать словами некрасова: «этот стон у нас песней зовется»

посмотри как запутанно он генерил уникальный id каждому work-еру:

class alignas(64) worker {
public:
  /// ...
protected:
  size_t id = get_tid();
  int listen_fd;
protected:
  size_t get_tid() {
    return tid_count++;
  }
  static inline size_t tid_count = 0;
};

в то время как любой джун бы написал че-то вроде:

class alignas(64) worker {
public:
  worker(int listen_fd): id(++max_id), listen_fd(listen_fd) {}
  /// ...
protected:
  size_t id;
  int listen_fd;
protected:
  static size_t max_id = 0; 
};

listen_fd в царском коде НЕ инициализированна вплоть до вызова run()

далее, сам по себе id не нужен, т.к. у нитей id уже есть

наконец, класс там тоже не нужен

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от anonymous

Т.е. на основании этого у тебя появляется кода?

русская языка велика и могуча?

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

Я бы тебе рассказал, что ты сделал с моим кодом, но пока рано.

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

Ты там его по почте заказал?

ну да, на магнитной ленте

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от anonymous

Ты же орал, что он неправильный и несобирается? Оказывается уже собирается.

я че-то пропустил?

с++17 это еще НЕ стандарт, так что компиляторами, следующими стандарту с++, твой код не собирается

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

А вы свой код точно в многопоточном режиме тестировали? Я вот у вас join-ов для нитей не видел. Есть подозрение, что после цикла создания рабочих нитей ваше приложение должно крешануться.

eao197 ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

с++17 это еще НЕ стандарт

Пошёл плыть. Ты не кукарекал про стандартность - ты кукарекал «не собирает» и «нерабочий код». Ты не кукарекал «не стандартный», либо «не собирается компилятором, который следует стандарту».

Ну и самое главное - с какого бадуна он должен какому-то стандарту следовать? Ничего из этого он делать не должен.

следующими стандарту с++

Стандарта «С++» в природе не существует.

anonymous
()
Ответ на: комментарий от eao197

давай уж на «ты»

нет, только в однопотоке (т.е. как написано)

я с удовольствием почитаю про мои ошибки, но тут одно «но» — царёк уж сколько говорил, что там у меня типа фееричный код, но что именно феерично — молчит, несмотря на мои просьбы

подозрение такое, что он просто не знает, и повторяет чьи-то чужие слова, а тот чел тоже специально царьку не говорит

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.