LINUX.ORG.RU

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

 ,


11

10

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

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

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

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

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

★★★★★

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

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

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

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

держать исходящие буфера по 10Кбайт на *все* 100К

отвечаю за царя: он так всегда делает. те, кому надо решать такие задачи, об этом как бы и так знают.

anonymous
()

один поток забирает сокет, остальные получают ошибку

ммм... шта? Какую ещё ошибку?

i-rinat ★★★★★
()

я тебе расскажу: один поток забирает сокет, остальные получают ошибку.

Может тогда объясните, почему у Царя сервер не падает вот в этом месте?

    while(int accept_fd = safe_call(accept(listen_fd, nullptr, nullptr))) {
      ...
    }
Если в accept_fd оказывается -1, как вы говорите, то возникнет исключение, выброшенное из safe_call.

Или как?

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

Я всегда юзаю size_t

есть нюанс: требуется включение stddef.h. а это — время компиляции.

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

ЕМНИП, у системы есть связанный с сокетом SNDBUF

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

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

а это и правда царь?!

нет. это был другой аноним.

и нет. не я.

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

Так что либо засуньте язык в жопу

видимо, так и придётся с тобой поступить.

переключение контекста также происходит при каждом (почти, за исключением gettimeofday и некоторых других) системном вызове. если переключаться руками, а не потоками, то на каждый read и на каждый (не обязательно, в зависимости от задачи) write приходится по одному переключению контекста — epoll.

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

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

Ты решил своего пятизвёздочного друга пощадить?

чувак, возможность указать на ошибки открыта для каждого

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

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 2)

Шёл пятый день. Пацаны до сих пор не могут найти читерство в моём коде. Да что там читерство - казалось бы - иди бахни for(volatile size_t i = 0; i < 100500; ++i) в обработчик и разоблачи, но нет. Зачем - кукарекать оно лучше всегда получается. mov на i там летенси 5тактов, поэтому времени этот цикл будет занимать примерно х5 от 100500.

За 5дней никто до этого не додумался, ну это такое. Хотя о чём это - эксперты же эксперты в кукаретинге - куда им там чё проверять.

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

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

тебе слишком долго объяснять. мне — лень.

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

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

Я знаю, что они потом запоют «я не видел, да мне некогда», но мало кто в это поверит.

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

Пацаны до сих пор не могут найти читерство в моём коде.

тебе же четко написали:

1. не проверяешь значения read

2. не проверяешь значения write

3. спишь в рабочих нитях

и еще много чего, но там разбираться больше надо

и все это баги, на п.1 даже очень легко привести пример, как твоя программа заглючит, на п.2 это в моих планах

так что stay tuned

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

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

Если смысл вашего участия в треде лишь в том, чтобы сказать о моей некомпетентности, то польза от этого 0.0, Кэп.

Соответственно, такое к вам и отношение. Благо, с вами мне доводилось общаться неоднократно и иного отношения к себе вы просто не заслуживаете.

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

Я собираю доказательство того, как вы друг друга отмазываете.

ты так и не докопался до основной причины... нас отмазывают зеленые человечки... ой, зачем я это сказал...

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

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

и таки да. по существу топика тебе всё ещё нечего сказать?

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

Поскольку цель вашего участия в треде — это лишь высказывания в мой адрес, то мне нечего здесь комментировать. Кроме уже данных вам оценок.

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

так и запишем: нечего

если ты не умеешь читать, то сообщаю, что я высказал своё мнение ещё нескольким (не настолько неадекватным) участникам обсуждения.

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

Это Царь так троллить пытается. Типа «что ж ты не можешь своему пятизвездочному другу помочь?»

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

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

Как вы, убогие, друг друга отмазываете. Как друг другу поддакиваете. Как убогие модераторы вас, убогих, спасают и трут, как эти же модераторы спасают себя, убогих. Как вы им стучите.

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

Ну вначале отмазка «я не видел», либо ещё что-то прокатила бы. Сейчас я каждому об этом сообщил, каждый из вас тут флудил и мне отвечал. Лично ты спалился, что коммент мой видел - почему ты на него не ответил?

А причина проста. И я её выше назвал.

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

Ну дак ответь - почему не можешь?

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

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

А зачем? Автор кода меня ни о чем не просил.

Так, а я тебе, получается, что просил? Покажи где.

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

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

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

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

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

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

Так, а я тебе, получается, что просил?

Видишь ли, твой код здесь обсуждается просто потому, что ты слился сделать что-то вменяемое по просьбе ТС-а (а еще раньше слился сделать что-то вменяемое по просьбе i-rinat), прикрывшись вот этим говнокодом: https://pastebin.com/RVHfBkuc

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

Код от www_linux_org_ru ничем не лучше твоего, так что смысла копаться еще и в нем нет.

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

Чёткий ответ на чёткий вопрос. Я тебя просил? Или не просил.

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

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

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

А ничего. Да, есть особенные, которые считаю, что общая тупость позволяет тебе владеть каким-то предметом, но нет. Развитие оно всегда полное. Не бывает так, что в части тредов ты не балабол, а в части банальной и элементарной логики балабол.

Я всегда всем говорил, что обычный балабол он не способен думать на шаг вперёд. Это просто такая обезьянка - что вплыло в его голове - он то и ретранслирует. Всплыло объяснение «я не просил» и балабол не подумал о том - «а что собственно из него следует? Не следует ли из него противоречия с тем, что я болтал до этого?». И это понятно - его наполнитель просто не позволяет ему мыслить в подобных категориях.

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

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

Ну а что можешь сделать ты? :-) Шаблонами цепепе упарываться? :-) Лол :-)

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

Чёткий ответ на чёткий вопрос.

Не просил.

Ну а где твои ответы на прямые вопросы?

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

Софт, который работает годами. На C++. В том числе и с шаблонами.

В такой формулировке «Софт на цепепе, который работает годами, в т.ч. и с шаблонами и даже с треитсами» может сделать абсолютно каждый :-) Не велик масштаб способностей, чтобы что-то, что работает годами, ваять на цепепе :-) А вот конкретно по теме, есть что предложить? :-)

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

может сделать абсолютно каждый

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

А вот конкретно по теме, есть что предложить?

Предложить кому? Конкретнее, плиз.

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

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

Так правильные сомнения то :-) Как же тут не усомниться? :-) Ведь я же не заявляю на весь мир, что пишу на C++ софт, который работает годами :-)

Предложить кому? Конкретнее, плиз.

Ну как кому? :-) Публике :-) Вон, Игорь Сысоев предложил NGINX :-) Работает хорошо :-) Как говорит Джо Армстронг (это который Erlang создал): «работающее медленно лучше, чем сломанное быстрое» :-)

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

Ведь я же не заявляю на весь мир, что пишу на C++ софт, который работает годами

Это ваши проблемы. У меня же публичный профиль в LinkedIn, кому интересно, тот может пообщаться с моими бывшими работодателями и проверить мои слова.

Ну как кому? :-) Публике :-)

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

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

Это ваши проблемы. У меня же публичный профиль в LinkedIn, кому интересно, тот может пообщаться с моими бывшими работодателями и проверить мои слова.

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

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

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

То, что они видят прямо сейчас, можно скачать, попробовать и проверить качество самостоятельно.

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

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

То, что они видят прямо сейчас, можно скачать, попробовать и проверить качество самостоятельно.

Прямо сейчас не видно ничего, что можно скачать и попробовать :-) И вообще, на том же цепепе нет ни одной библиотеки, реализующей HTTP, которую бы реально хотелось использовать :-) Куда ни глянь - то HTML компилируют в exe-шник, дескать так будет БЫСТРЕЕ!!!1, то бусты и прочие субмарины затягивают в зависимости :-) Вот ты же позиционируешь себя как опытного C++-ника :-) Взял бы да написал какую-нибудь простую для использования библиотеку :-) Не надо считать каждый такт и вымерять «накладные расходы» на каждый пук :-) Нужна простая для понимания, использования и доработки библиотека :-) Но такой на цепепе нет :-) Лол :-)

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

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

Боюсь, что простая для вас — это недостижимо в принципе.

А так уже есть C++ REST SDK (aka Casablanka), Pistashe, Restbed, POCO. Это из тех, что дают высокоуровневый интерфейс. Есть Beast, для тех, кто хочет чего-то низкоуровневого и ручного контроля за всем происходящим. Есть еще cpp-netlib, только не знаю, в каком она состоянии.

Мы над своим решением работаем, но там еще много чего нужно сделать.

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

Боюсь, что простая для вас — это недостижимо в принципе.

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

А так уже есть C++ REST SDK (aka Casablanka), Pistashe, Restbed, POCO. Есть еще cpp-netlib

за которым тут же следует признание:

Мы над своим решением работаем, но там еще много чего нужно сделать.

Т.е. «простая для вас» - это то же недостижимо в принципе :-) Потому то вы и пилите свой велосипед, что на цепепе нет ничего вас достойного :-) И так делают все :-) Пишут свои супер библиотеки, но супер библиотеки (включая boost) стараются избегать :-) Лол :-)

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

Ведь вы то сами что используете из предложенного перечня

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

У C++ REST SDK под Unix-ами производительность никакая.

Т.е. «простая для вас» - это то же недостижимо в принципе

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

Пишут свои супер библиотеки, но супер библиотеки (включая boost) стараются избегать

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

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

Ну т.е. нет достойной реализации HTTP на C++ :-) Они или тормозные, или заброшенные, или упоротые :-)

Boost хорош при использовании в конечном приложении, заточенном под конкретную платформу (или под ограниченное количество платформ).

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

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

Они или тормозные, или заброшенные, или упоротые

Или закрытые.

Но почему же кросслатформенность буста превратилась в тыкву?

Потому что вы слушаете голоса в своей голове, а не читаете то, что вам пишут.

Кроссплатформенность никуда не девается. Но возникает задача подтаскивания Boost-а в качестве зависимости. В рамках какого-нибудь одного уютненького дистрибутива Linux-а это не большая проблема. Но за пределами уютненьких дистрибутивов Linux-а так же есть жизнь. И там поиметь в зависимостях fmtlib, spdlog и Catch гораздо легче, чем Boost с его Boost.Format, Boost.Log и Boost.Test.

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

А так уже есть C++ REST SDK (aka Casablanka), Pistashe, Restbed, POCO.

Да, блин, еще же Proxygen от Facebook-а забыл.

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

Потому что вы слушаете голоса в своей голове, а не читаете то, что вам пишут.

У меня получается и то и другое :-) Вот что ты пишешь:

Boost хорош при использовании в конечном приложении, заточенном под конкретную платформу (или под ограниченное количество платформ).

С такой логикой можно утверждать, что «Boost хорош при использовании в конечной библиотеке, заточенной под конкретную платформу (или под ограниченное количество платформ)» :-) А если учесть при этом, что Boost - это кроссплатформенная библиотека, то проблем от использования Boost нет и быть не может :-) Что ты тут бусту приписываешь проблемы вообще? :-) Лол :-)

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

У меня получается и то и другое

Тогда общайтесь с голосами в своей голове, не приписывайте мне свои заблуждения.

С такой логикой можно утверждать, что «Boost хорош при использовании в конечной библиотеке, заточенной под конкретную платформу (или под ограниченное количество платформ)»

Можно.

А если учесть при этом, что Boost - это кроссплатформенная библиотека, то проблем от использования Boost нет и быть не может

Ну не может и не может. Вам голоса еще и не того наговорят.

Что ты тут бусту приписываешь проблемы вообще?

Где я бусту проблемы приписал?

eao197 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.