LINUX.ORG.RU

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

 ,


11

10

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

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

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

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

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

★★★★★

Ребята! Попкорн я приёс тащите сок кто нибудь и стулья с собой несите что бы на полу не сидеть.

Dron ★★★★★
()

А что толку, что ядро может теребить 10к потоков. Ведь каждый поток ест стек в несколько мегабайт. 100 юзеров - ~гиг оперативы. Не гуманно. Или я неправильно понимаю?

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

Предоставь ему сервер с оговоренными характеристиками что бы он запустил my_app_10k http://localhost:8080 там, а ты нагрузил из вне по полной все 10k. Или может кто ради интереса имея ресурсы предоставит на сутки такой сервер. Тоесть реальные испытания, а не только гипотетические предположения, код есть же, вот и давайте протестим.

Dron ★★★★★
()

А потом можно еще на горутинах сервачок потестить, насколько сильно он проиграет

pftBest ★★★★
()

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

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

А что толку, что ядро может теребить 10к потоков. Ведь каждый поток ест стек в несколько мегабайт. 100 юзеров - ~гиг оперативы. Не гуманно. Или я неправильно понимаю?

Размер стека потока можно уменьшить до нескольких десятков килобайт. Кроме того, на современных ОС эта память может не расходоваться пока ты её не используешь, то есть можно считать, что издержки ещё меньше - 4 килобайта на поток (размер обычной страницы x86).

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

Размер стека потока можно уменьшить до нескольких десятков килобайт

А как писать код, чтобы укладываться в 10 килобайт? Все переменные держать в куче?

Кроме того, на современных ОС эта память может не расходоваться пока ты её не используешь, то есть можно считать, что издержки ещё меньше - 4 килобайта на поток

Правильно я понимаю, что даже если стек 8М - эта память будет выделяться под стек фрагментами по 4К. Т.е. создается поток, сразу начинают вызываться функции - выделяется 4К. Локальные переменные превысили 4К - ядро выделит еще 4К в каком-то другом месте кучи, но для потока это будет выглядеть как непрерывное адресное пространство

makoven ★★★★★
()

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

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

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

А как писать код, чтобы укладываться в 10 килобайт? Все переменные держать в куче?

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

Правильно я понимаю, что даже если стек 8М - эта память будет выделяться под стек фрагментами по 4К. Т.е. создается поток, сразу начинают вызываться функции - выделяется 4К. Локальные переменные превысили 4К - ядро выделит еще 4К в каком-то другом месте кучи, но для потока это будет выглядеть как непрерывное адресное пространство

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

asaw ★★★★★
()

верните контекст на родину (с)
еполле - epoll ? на одном сервере ? против сервера на 4 ядра и... каким пуллером/демультиплексором ? select ? или просто блокирующие сокеты ?
и в чем смысл спора ?
а кто вообще в курсе предыдущий тем ? а то не понятно о чем сыр бор

anonymous
()

Ты хоть болванку дай. Сделаю на pthreads сервер и протестирую на 10к клиентов.

Ну и сравним с тем, что царь родит.

// Eddy_Em

anonymous
()

Подскажите. Предположим,есть 10к потоков, к которым подключены клиенты по вебсокетам. На стороне сервера, значит, потоки приостановлены функцией чтения из сокета. А как тогда в эти сокеты писать, раз потоки приостановлены? Еще поток создавать?

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

В любом случае будет нужен примерно одинаковый набор переменных.

Что верно то верно. Спасибо

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

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

ps жаль тему быстро снесли, редко смотрю на лор

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

А как тогда в эти сокеты писать, раз потоки приостановлены?
Еще поток создавать?

Ну такой вариант тоже возможен ...

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

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

rumgot ★★★★★
()

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

а модер, который тему снёс, не очень умно поступил, прям как челы в госдуме. Может Pinkbyte в думу отправить? От модеров ЛОРа, там ему, судя по всему, понравится.

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

Какой ещё конструктив? Он же болен.

1U наверн, тебе жалко попкорна? :)

slackwarrior ★★★★★
()

Здается мне, что спор не имеет особого смысла: https://ru.wikipedia.org/wiki/Закон_Амдала#/media/File:AmdahlsLaw.svg

Если хотя бы 5% времени потоки залочены, то не имеет смысла плодить больше 512 шт.

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

Три поста в кэше? Удаленных в треде тоже нет.

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

А как писать код, чтобы укладываться в 10 килобайт? Все переменные держать в куче?

Ты не поверишь, я под BuguRTOS на 2к оперативы запускал 12 потоков и было норм!

shkolnick-kun ★★★★★
()
Ответ на: комментарий от makoven

А еще какие варианты?

Ну например по селекту в каждом треде. А Вообще вариантов хватает.

И как, интересно, такую задачу принято решать у джавистов или питонистов?

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

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

Ну например по селекту в каждом треде. А Вообще вариантов хватает

А, всмысле, select для одного сокета? Впринципе, логично

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

Далее опять пошли попытки взять «на понт».

нахрен вы мне чужие слова приписывает ? это такой лор ?
там все по делу написано, изначально задачи не стояло, началось с чьих то понтов, и далее вдруг обрисовалась задча у которой начали появляться доп условия
так решали изначально какую задачу ? ТС был прав, для reverse proxy похрен как решать, чуть больше потратится ресурсов на много процовости и тредах
а вот поставить изначально задачу, где не reverse proxy, никто из пятизвёздочных не смог, зато начали прыгать из в стороны в сторону, сливаясь на все 100%

на вас(RazrFalcon ) конкретно, мне пофиг, и кто там такой царь тоже или у кого сколько звездочек
но если не умеете ставить задачу которая не меняется
то нечего флудить

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

Этот закон говорит о взаимозависимых задачах, разве нет? Что если задачи совершенно независимы, например расчеты на отдельных юнитах GPU.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от cvv

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

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