LINUX.ORG.RU

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

 ,


11

10

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

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

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

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

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

★★★★★

Я что то понять не могу.

Царь запостил код. Некоторым не нравится этот код, задачи он не решает, c10k не показывает.

Так все просто, предоставьте свой код для 10k pthread'ов и бенчмарк к нему.

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

Его проблемой является его огромный размер

Это ваша точка зрения, я ее не разделяю.

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

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

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

Что характерно при общении с вами, как со смайлодауном.

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

в нём можно объявлять деструкторы

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

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

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

Так что если деструкторы - это проблема, то цепепе - это тоже проблема

Деструкторы — не проблема. Проблема в отслеживании некорректно использованных delete. Деструктор-то может быть и не пустой. Всё ещё заметишь отсутствующий в нём delete? Ну, удачи в поисках.

Ты говорил про ревью кода, а не про этап кодирования

Кодирование без ревью — грустное занятие.

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

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

Как ты изъясняешься - так тебя и трактуют :-) Если ты говоришь одно, а думаешь о другом, то это проблемы твои :-)

Что характерно при общении с вами, как со смайлодауном.

Кто за то, чтобы забанить уже этого пользователя - eao197 ? :-)

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

Если при этом всё время помнить «деструктор, надо посмотреть в деструктор, чтобы проверить, всё ли delete-ится»

Посмотрим, всё ли delete-ится:

C::~C()
{
  delete impl_;
  impl_ = nullptr;
}

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

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

Деструктор-то может быть и не пустой. Всё ещё заметишь отсутствующий в нём delete? Ну, удачи в поисках.

Если деструктор у тебя не пустой, то там каждая строчка потенциально проблемная :-) Хоть есть delete, хоть нет delete :-) И никакой смарт-поинтер тебя от этих проблем не избавит :-)

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

Ты хоть понимаешь, что вопрос не в том, верить ли мне, а в том, верить ли тебе?

Ну для этого достаточно оснований.

ТС-у ты код выкатывать отказался.

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

Ранее решать задачу i-rinat отказался.

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

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

Сослался на какой-то говнокод как на доказательство решения задачи о c10k на нитях в модели N:N.

Меня не интересуют твои лсные формулировки. Не решает? Докажи. Не можешь? Не болтай. Всё просто.

С какого ты решил, что кто-то сходу поверит в то, что твой говнокод имеет отношение к c10k?

Ты доказал обратное? Нет. Значит он имеет. Всё просто. А кукарекать на тему «не имеет» и прочее - ты можешь сколь угодно долго. А мотивация твоя примитивна - вуалировать собственную некомпетентность.

Ну и да, за говнокод ты до сих по не пояснил и обосрался во всём.

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

Ну для этого достаточно оснований.

С чего бы?

Изначально он болтал именно про с10к, а в них хттп и другие его условия не входят.

С чего бы?

Ты доказал обратное?

Отсутствие чайника Рассела тоже нужно доказывать?

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

Так все просто, предоставьте свой код для 10k pthread'ов и бенчмарк к нему.

Так а смысл? Это же Царь бил себя пяткой в грудь. Вот народу и интересно, что же Царь может. Если может.

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

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

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

Я не понимаю, зачем нагружать себя лишней работой, если unique_ptr

Да я его тоже использую :-) Речь то не о том, чтобы не использовать unique_ptr, а о грамотеях, у которых бомбит от:

C::~C()
{
  delete impl_;
  impl_ = nullptr; // грамотеев бомбит
}
:-)

PS. Да, кстати, по поводу деструктора самого unique_ptr из GCC 5.4:

      ~unique_ptr() noexcept
      {
	auto& __ptr = std::get<0>(_M_t);
	if (__ptr != nullptr)
	  get_deleter()(__ptr);
	__ptr = pointer(); // тут грамотеев должно бомбить :-)
      }
Лол :-)

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

Показать, что на c10k pthread'ы ложатся.

На современном оборудовании 10k тредов не лягут. Даже на каком-нибудь Raspberry Pi, наверное, не лягут.

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

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

Благо опыт общения с Царем уже есть.

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

С чего бы?

С того, что никаких свидетельств за их «недостаточность» не поступало.

С чего бы?

Иди ищи цитаты - там всё было.

Отсутствие чайника Рассела тоже нужно доказывать?

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

Смысл этого поверья в том, что отсутствие доказательств отсутствия не является доказательством присутствия, но есть нюансы. Во-первых это относится к тому, что нельзя доказать. Т.е. Пруф паритета отсутствия и присутствия доказательств.

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

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

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

Даже на каком-нибудь Raspberry Pi, наверное, не лягут.

Есть большой шанс, что число тредов упрётся в объём памяти. Ядро Linux ограничивает число тредов так, чтобы структуры-описатели не заняли больше одной восьмой от доступной ядру памяти. На x86-64 на 16 GB получается около 120 тысяч нитей. У малинового пирога памяти — максимум гигабайт. Если просто поделить число на 16, получается 7500 нитей. Но там с одной стороны 32-битные указатели, поэтому структуры будут меньше, а с другой стороны процессору доступен не весь гигабайт: есть ещё и GPU.

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

На современном оборудовании 10k тредов не лягут.

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

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

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

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

И ни о каких «стоимостях» речь не шла. Ты изначально кукарекал а) мой код говно. б) вставить туда обработку - он не будет шевелиться вообще. в) код читерит и тредов там вообще нет. Кукареку.

Всё это свидетельства того, что ты врёшь.

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

Неверно. Я сказал выше, что нормальное решение я предоставлю, если вы напишите дерьмо.

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

Тем более ничего не мешает сделать север на базе моего. Если он будет идентичен, то к чему разговоры?

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

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

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

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

Царь, хватит демонстрировать тупость. Я спрашиваю, почему кто-то должен верить в то, что представленное тобой решение является решением задачи c10k?

Представь себе, что кто-то выкатил код:

#include <c10k/server.hpp>

int main() {
  c10k::server{"localhost:8080"}.run();
}
И сказал бы: «Вот решение c10k». На любой вопрос «с хрена ли?» этот персонаж бы говорил: докажите обратное.

Вот ты как раз и говоришь, докажите обратное.

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

Осталось только понять - зачем ты кукарекал про то, что они лягут?

Давай-ка ты подтвердишь свои слова цитатой. Где я это утверждал?

Ну или слейся как обычно на прямом вопросе.

Ты же не для меня стараешься?

Да я вообще развлекаюсь в ожидании поезда.

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

Да я вообще развлекаюсь в ожидании поезда.

boost с собой взял? :-) Ах да, он же слишком тяжёлый с твоих же слов :-)

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

Да, наверное. Я больше про мощь CPU говорил. Во времена 486-х тупо быстродействие было совсем другое.

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

На современном оборудовании 10k тредов не лягут.

На сколько я помню, изначально вопрос был как раз в этом.

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

В сравнении с select/epoll. При этом сферическая стоимость в вакууме для неких задач.

Ну и фокус в том, чтобы решение было от Царя.

От Царя решение есть, но оно не подходит. В чем проблема написать 1..2..10 обрабочиков данных, независимых от передачи по сети, и погонять их для pthread-ов, epoll и select? 1..2..10 разными бенчами.

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

Благо опыт общения с Царем уже есть.

Царь конечно своеобразно общается, но код он таки показал, нет? А уж на ЛОРе на стиль общения внимание обращать...

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

На сколько я помню, изначально вопрос был как раз в этом.

Изначально, насколько я помню, да. Но там Царь с i-rinat, если не ошибаюсь, спорил.

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

Как раз текущее решение от Царя именно таково. Поэтому моя лично претензия к его решению (ну одна из) в том, что вот этот вариант N:N он же ничего не показывает.

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

Ну а дальше спор вокруг того, можно ли считать это другое демонстрацией решения c10k или нет. ИМХО, конечно.

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

Как раз текущее решение от Царя именно таково. Поэтому моя лично претензия к его решению (ну одна из) в том, что вот этот вариант N:N он же ничего не показывает.

Осталось только понять - что он именно не показывает и с чего он должен что-то показывать. Да и с чего твои критерии «показательности» кто-то должен учитывать и с чего вдруг они стали объективными?

Здесь ТС предлагал Царю что-то осмысленное сделать.

Не верно - ТС манипулировал, обвиня меня в том, что моя тема и претензии неконструктивны. Что является враньём и потворствовать я этому не буду.

Да и эхо-сервер это осмысленное, да? Чем он отличается от моего?

Царь же выкатил что-то совсем другое.

Царь ничего не выкатывал. Царь выкатывал код в предыдущий, своей теме. В рамках контекста, который определил царь. А контекст был основан на утверждениях некоего эксперта.

Ну а дальше спор вокруг того, можно ли считать это другое демонстрацией решения c10k или нет. ИМХО, конечно.

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

А так же, я не слышал, чтобы ты обвинял ТС"а в том, что его эхосервер дерьмо.

А по поводу твоих попыток. Ты - тотальная некомпетентность. Твой аргумент «а если будет какая-то дополнительная работа» - это просто бред. Доказательства? Пожалуйста:

Обработка сишных ошибок в C++ (комментарий) - вот тут, ты нёс ту же самую ахинею. Прям слово в слово.

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

Вот это. Тут зияет тотальная некомпетентность.

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

Как я и говорил - есть 2/3 шаблонные фразы, которые балаболка везде повторяет как аргумент. А т.к. эти фразы нисколечко не конкретны, но юлить балабол может до посинения. На каждый пруф с любыми какими-то действиями - балабол может говорить «да те действия не такие - надо другие».

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

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

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

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

Как раз текущее решение от Царя именно таково. Поэтому моя лично претензия к его решению (ну одна из) в том, что вот этот вариант N:N он же ничего не показывает.

Но при этом оно таки показывает, что сферические в вакууме 10k работают?

В предыдущей теме была хорошая задача озвучена.

Это написать аналог nginx или что то другое?

Здесь ТС предлагал Царю что-то осмысленное сделать. Царь же выкатил что-то совсем другое.

Я наверно пропуcтил, что именно выкатил Царь, но вот тут select() проигрывает pthread. Ну и так то, формально Царь показал код, когда pthread работает на 10к. Пусть сферический в вакууме. Почему никто не покажет код, где не работает, а на epoll/select работает?

А там, либо Царь или еще кто перепишет, что бы работало, либо будет понятно, в каких условиях pthread'ы не пригодны. Больше вариантов — больше объективной информации.

Ну а дальше спор вокруг того, можно ли считать это другое демонстрацией решения c10k или нет. ИМХО, конечно.

А смысл? Это ж вкусовщина, пока нет ТЗ, удовлетворяющего всех.

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

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

Но при этом оно таки показывает, что сферические в вакууме 10k работают?

Кому интересны сферические c10k? Если таковые есть, то они могут делать на основании кода Царя какие-то выводы.

Это написать аналог nginx или что то другое?

Спросите у i-rinat, он точную формулировку задачи с reverse-proxy делал. Как раз до того, как Царь опубликовал свой код.

Я наверно пропуcтил, что именно выкатил Царь

https://pastebin.com/RVHfBkuc — сервер, https://pastebin.com/xk37uhcS — клиент.

А смысл?

Если принять на веру то, что у Царя решение c10k, то можно брать и делать бенчмарки (нормальные, не как у Царя). Если нет, то смысле делать бенчмарки нет.

Как по мне, так пока бенчмаркать нечего. Но Царю этого не докажешь, судя по всему.

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

что он именно не показывает

Никакой осмысленной обработки данных из канала нет.

и с чего он должен что-то показывать.

С того, чтобы иметь хоть какую-то ценность.

Да и эхо-сервер это осмысленное, да?

Да уж, получше будет.

Чем он отличается от моего?

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

Вот это. Тут зияет тотальная некомпетентность.

И тут ты такой, с подробным опровежением. Да? Ну ведь да? Ссылки там хотя бы какие-то? Ну?

А, и это, где, дебилушка, ч0ткий ответ на четкий вопрос: Царю про 10к в надежде перевести дискуссию в конструктив (комментарий)

Ась?

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

Кому интересны сферические c10k? Если таковые есть, то они могут делать на основании кода Царя какие-то выводы.

Почему никто не покажет не сферический код, где pthread не работает, а на epoll/select работает?

Спросите у i-rinat, он точную формулировку задачи с reverse-proxy делал. Как раз до того, как Царь опубликовал свой код.

Он предоставил решение для epoll/select?

https://pastebin.com/RVHfBkuc — сервер, https://pastebin.com/xk37uhcS — клиент.

Так это вроде и есть сферический код, демонстрирующий сферическую работу 10k?

Если принять на веру то, что у Царя решение c10k, то можно брать и делать бенчмарки (нормальные, не как у Царя). Если нет, то смысле делать бенчмарки нет.
Как по мне, так пока бенчмаркать нечего. Но Царю этого не докажешь, судя по всему.

Не-не-не, я спрашивал, в чем смысл обсуждать решает или не решает Царев код на pthread-ах c10k, если можно написать удовлетворяющее вас решение на select/epoll и утверждать, что на pthread-ах быстрее не будет?

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

Он предоставил решение для epoll/select?

Не, не, не. Такие манипуляцией не пойдут. Он не сравнивал там с епулом/селектом. Он обвинял на базе c10k несостоятельно использования более 400тредов.

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

Вот часть переписки:

Хорошо, определи критерий решения c10k. Чётко и ясно.

HTTP реверс-прокси, за которым один медленно отдающий данные бекенд. Твой реверс-прокси должен адекватно обрабатывать 10 тысяч одновременных подключений. Для определённости бекенд отдаёт файл длиной 8192000 байт с ограничением скорости в 8192 байта в секунду. Твоя реализация должна обрабатывать каждое соединение в отдельной нити. Полной реализации HTTP не требуется, допустима реализация подмножества HTTP/1.0. Достаточна реализация identity кодировки передачи. Реализация keep-alive — на усмотрение. Реализованная часть протокола не должна противоречить RFC 2616.
От тебя требуется только реализация реверс-прокси. В качестве бекенда можешь взять любой понравившийся веб-сервер. Главное — чтобы он не был узким горлышком в системе.

На что царёк пошёл вразнос:

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

Как только я выкачу c10k на тредах - балаболка улетит из треда. А она улетит - это 100%. Далее пойдут сливы на тему «треды медленнее», а далее пойдут сливы на память. И так буде бесконечно.

Он уже заранее в курсе, в чём проблема кода на тредах. Просто откуда-то взял священную задачу доказать, что можно запустить 10 тысяч тредов, которые что-то там делают. И теперь её героически решает. Никто не утверждал, что это невозможно в принципе. Я писал: «Для продакшена столько нитей использовать — идиотизм. Больше 200–300 уже будут доставлять проблемы. man c10k problem.»

В рамках c10k определяется одновременную обработку 10к сокетов. Трепут никак не определяется. Никаких файлов, никакой другой херни нет. Никакого хттп, вебчика и прочего нет.

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

Ему зачем-то нужны звёды. Он их условием ставит. Передавать на форуме звёзды никак нельзя, так что условие изначально невыполнимое.

А началось всё вот с этого:

В конечном итоге все они из треда почему-то улетали.

Ну давай сделай веб-сервер по принципу одно соединение — один тред. Посмотрим, сколько он выдаст и когда он загнётся. Сравниваем с nginx. Или ты сразу из треда улетаешь? ^_^

Такой обиды царь стерпеть не смог. Вон, сколько уже фонтанирует.

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

Никакой осмысленной обработки данных из канала нет.

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

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

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

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

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

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

У меня буфер сокета 200к+, ну пусть с оверхедом это будет 100к. 100к достаточно для сглаживания рандомных всплесков сети.

И тут ты такой, с подробным опровежением. Да? Ну ведь да? Ссылки там хотя бы какие-то? Ну?

Ещё раз. Кукарекнул ты и ссылки приводить должен ты.

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

Почему никто не покажет не сферический код, где pthread не работает, а на epoll/select работает?

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

Он предоставил решение для epoll/select?

ЕМНИП, Царь и i-rinat не договорились об условиях. Поэтому никто ничего не делал.

Так это вроде и есть сферический код, демонстрирующий сферическую работу 10k?

Повторюсь, если кого-то такой код устраивает, то может делать на его основе какие-то выводы.

если можно написать удовлетворяющее вас решение

Решение чего? Чтения 8 байт от клиента и запись в ответ 10KiB никому не интересных копий этих 8 байт? Это же сферический c10k в вакууме с такой же ценностью.

Вы, имхо, неправильно вопрос ставите: тут нужно, чтобы кто-то сделал нормальное решение и на нитях, и на epoll. И погонял основательно на бенчмарках.

Вот это вот «погонял основательно» — это совсем нетривиальная задача для проверки действительно 10k параллельных активных коннектов. Для этого мощности нужны. У меня, например, таких нет.

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

Кукарекнул ты и ссылки приводить должен ты.

Ну т.е. ни объяснений, почему я некомпетентен, ни ссылок, ни доказательств каких-то. Ожидаемо.

ЧОткий ответ где?

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

Ну и самое главное - что самое интересное. Балабол уверяет всех и меня в том, что «я кукарекал и доказывать должен я», да и код давать, раз кукарекал.

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

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

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

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

Тем самым он начинает вопрошать и уверять всех, что я спорю с «наличием дырок в луне» и прочее.

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

Ну т.е. ни объяснений, почему я некомпетентен, ни ссылок, ни доказательств каких-то. Ожидаемо.

Я предоставил доказательство. Твоё утверждение, за которое ты не отвечаешь. Это и есть доказательство. И у тебя два выбора - опровергнуть его, либо нет. Если нет - оно рабочее.

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

Отлично.

HTTP реверс-прокси, за которым один медленно отдающий данные бекенд. Твой реверс-прокси должен адекватно обрабатывать 10 тысяч одновременных подключений. Для определённости бекенд отдаёт файл длиной 8192000 байт с ограничением скорости в 8192 байта в секунду. Твоя реализация должна обрабатывать каждое соединение в отдельной нити. Полной реализации HTTP не требуется, допустима реализация подмножества HTTP/1.0. Достаточна реализация identity кодировки передачи. Реализация keep-alive — на усмотрение. Реализованная часть протокола не должна противоречить RFC 2616.
От тебя требуется только реализация реверс-прокси. В качестве бекенда можешь взять любой понравившийся веб-сервер. Главное — чтобы он не был узким горлышком в системе.
Для продакшена столько нитей использовать — идиотизм. Больше 200–300 уже будут доставлять проблемы. man c10k problem.

А вариант с небольшим количеством нитей для сравнения с реализацией N:N pthread был предоставлен? Или это nginx и есть?

Тут же всем(кроме Царя) не сферические 10k в вакууме интересны, а сравнение накладных расходов. Нет?

Такой обиды царь стерпеть не смог. Вон, сколько уже фонтанирует.

Ну вообще требование написать аналог nginx-у для демонстрации идеи выглядит несколько странно. Даже просто форкнуть nginx на pthread задача не маленькая.

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

Я предоставил доказательство.

Посмотрим:

Вот это. Тут зияет тотальная некомпетентность.

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

И я спрошу - на каком основании ты делаешь подобные заявления?

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

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

Вот часть переписки:

О боже, на кого это рассчитано? Что человек не пойдёт и не прочитает первоисточник?

Потоки в Julia: зелёные или нормальные? (комментарий)

И не увидит, что вначале ты балаболим именно про c10k. Ни про «HTTP», ни про «реверс-прокси», ни про условия в которых я что-то должен. А именно про C10k.

На что царёк пошёл вразнос:

В разнос пошёл ты, изменив условия. И в рамках треда я всё это определил. Ты зассал и склянчил у модератора удаление, как и склянчил удаление ветки тут.

Никто не утверждал, что это невозможно в принципе.

Утверждал. «идиотизм» + «проблемы» на 200 тредах, а тут х20 проблемы. А проблемы * 20 ~= невозможно.

При это контекста «производительность» вообще не было.

И самое интересное, что далее ты кукарекал:

Ну давай сделай веб-сервер по принципу одно соединение — один тред. Посмотрим, сколько он выдаст и когда он загнётся.
загнётся

Т.е. это не только косвенные свидетельства, но ты ещё и в конкретики спалился. Ты написал не только то, что это медленнее, но и то, что это НЕВОЗМОЖНО.

При этом тут явно видно манипуляции. Как балабол уже слился на вебсервер и как он уже предлагает мне мериться производительностью с нгинксом. Т.е. двойная манипуляция.

Ему зачем-то нужны звёды. Он их условием ставит. Передавать на форуме звёзды никак нельзя, так что условие изначально невыполнимое.

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

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

Ну т.е. ни объяснений, почему я некомпетентен, ни ссылок, ни доказательств каких-то. Ожидаемо.

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

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

А вариант с небольшим количеством нитей для сравнения с реализацией N:N pthread был предоставлен?

Нет.

Тут же всем(кроме Царя) не сферические 10k в вакууме интересны, а сравнение накладных расходов. Нет?

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

Ну вообще требование написать аналог nginx-у для демонстрации идеи выглядит несколько странно.

Простой прокси написать вроде не должно быть сложно? Да и просадки по скоростям быть особой не должно. Понятно, что Nginx круче, они там чуть ли не байты и циклы экономят. Но не в разы же. Так что ничего странного нет.

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

Я сам здесь один из тех, кто с попкорном ждет пока кто-то представит нормальное решение на нитях и нормальное решение на epoll.

Но при этом утверждаете, что Царь не прав?

Решение чего? Чтения 8 байт от клиента и запись в ответ 10KiB никому не интересных копий этих 8 байт? Это же сферический c10k в вакууме с такой же ценностью.

Решение c10k. Не сферическое. Ценное(:

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

Нормальное — это какое? ТС echo-server запилил, pthread показали результат лучше select. Это нормальное?

Вот это вот «погонял основательно» — это совсем нетривиальная задача для проверки действительно 10k параллельных активных коннектов. Для этого мощности нужны. У меня, например, таких нет.

Я понимаю. Можно ТС попросить.

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

Ты написал не только то, что это медленнее, но и то, что это НЕВОЗМОЖНО.

Где? Не помню, чтобы что-то такое писал. Если кому-то из тех, кто может смотреть удалённые, не влом, пусть приведут ссылку, куда смотреть.

Хватит уже врать, надоело это читать.

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

Нет.

Почему?

Вообще-то это тема для флейма.

Ну это кому как. Мне вот интересно, как оно на самом деле с 10k pthread.

Простой прокси написать вроде не должно быть сложно?

Может и не сложно, но далеко не тривиально и не быстро.

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

А нисчем не сравнивал. Он там болтал то, что использование более 300тредов несостоятельно. Обосновывал это c10k.

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

Таким образом нет никаких свидетельств того, что c10k работать не может. Ядро что рид позвать из разных тредов не сможет? Я там ниже это спрашивал.

И далее пациент поплыл. Начал утверждать, что вебсервер на тредах в рамках 10к коннекшенов НЕВОЗМОЖЕН( он загнётся) и начал сливаться. Т.е. ставить «сделай быстрее нгинкса» и прочее.

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

Поэтому я ему и написал, что он поплыл. При этом раз в раках его логики вебсервер == c10k, а вебсервер НЕВОЗМОЖЕН, то и c10k невозможно.

И сейчас он просто пытается юлить. Я конечно, идиот, что не вывел его на прямые показания. Но я не думал, что он настолько невменяем. Тут да, простите.

Поэтому никаких сравнений с епулом/селектом он не предлагал. Вообще. И сейчас это просто слив. А сравнение предложил автор темы, хотя это уже совсем другая история, нежели моя. И автор специально, либо не специально обелил данного балабола.

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

Ну давай сделай веб-сервер по принципу одно соединение — один тред. Посмотрим, сколько он выдаст и когда он загнётся.

Вот тут. Загнётся - это чёткий и явный синоним невозможности. При этом тут явно видно, что с темы изначально c10k ты слился.

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

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

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

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

Рано или поздно тут появятся вменяемые рефери, которые будут щёлкать подобные попытки на раз два, но пока приходится это делать мне.

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

Ок. Я не компетентен. Так а что по поводу эффективности предсказания переходов? И их влияния на удельную стоимость исключений?

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

Почему?

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

Мне вот интересно, как оно на самом деле с 10k pthread.

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

Может и не сложно, но далеко не тривиально и не быстро.

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

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