Tishka17
Я проглядел ссылку
koder
https://github.com/koder-ua/network_ping_test/blob/master/perf_report.md#%D1%81%D0%BE%D0%B2%D0%B5%D1%80%D1%88%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D1%8B
вот кусок смотри - там есть расклады по системным вызовам с affiniti и без
koder
без афинити на каждый recv - 15 futex_wait
koder
там хитрая фигня выходит - в добавок ОС начинает елозить потоки по все доступным ядрам CPU равномерно
koder
мусорит кеши и прочее
Unat
Unat
Да можно ссылку на строчку кода кинуть, я открою :) а то ты там, кажется, диссертацию так скоро напишешь.
Tishka17
Tishka17
Размер данных
Floss
Необходимо собрать по дизайн-эскизам экранов весь функционал для магазина, на Django.
Все стандартно: api для стыковки с фронтом, мультиязычность, мультивалюстность, фингерпринты, авторизация через соцсети, подбор товара, конструктор товара, оплата через платежный шлюз, чат. Для админки можно использовать шаблон аля jet.
Фронт на angular уже готов. От вас нужен только бек на django.
#работа #удаленка
koder
А где создаётся много асинков? Из шелла?
тааак. все корутины (они же асинки) живут в одном потоке OC. Но корутин у тебя столько же, сколько и потоков.
А, я тебя понял. Если в тестируемой части начать делать дополнительные операции, а не только пинг-понг, то расклады
будут чутка другими. Долго писать. Но в общем этот тест не про симуляцию реальной нагрузки - он про накладные расходы.
Накладные разходы зависят только от количества соединений. Потоки проседяют быстрее остальных про этим. Если у тебя будет
МНОГО медленных клиентов - то потоки будут смотреться хуже, чем если их мало. Но все равно лучше async по пропусной способности. Но так то у async есть другие проймузества
koder
Tishka17
Tishka17
Черт дохуя мало
koder
я гонял и на 2к
Tishka17
Давай-ка 100к хотя бы
koder
А смысл?
Tishka17
Асинкио обещали быстрее за счёт экономии на чтении их буфера
koder
ты просто начнешь тратить время на tcp стек, а не на свой код
koder
я не понимаю как так может быть
Tishka17
Мол треды переключаются когда ты читаешь, а тут сразу
Tishka17
На маленьких размерах никто не обещал
Tishka17
И да, у тебя код с тредами не умеет дочитывать данных, остальные не с смотрел
Unat
Tishka17
koder
ээээ, я не понял.
Когда ты используешь асинк - ты делаешь сначала poll и получаешь список сокетов на которых есть данные.
Дальше ты из этих сокетов точно так же, как и в потоковой системе, читаешь данные. Тем же самым recv
koder
Разницы ни в буферах ни в ос тут нет
Tishka17
Ну вот у тебя есть 100к данных. В асинке пока не прочитаешь не переключишься
Tishka17
А треде - можешь
koder
нет
Tishka17
Там именно эту часть тюнили
Tishka17
Проверь, иначе это все теория
koder
а кто мешает сделать в потоке recv(100000)
koder
так а что проверять то - я и так те скажу
koder
делаешь в потоке recv с большим размером буфера и читаешь все что есть
koder
причем ровно одним запросом в ядро
koder
это один вызов ядра
Tishka17
Можно подумать питон именно так и сделает
koder
какие переключения?
koder
да
Tishka17
Tishka17
Короче, имхо твой тест не полностью корректный
koder
в смысле пруф? когда ты на сокете делаешь
socket.recv(10000000) - вызов узодит в ядро с таким за размером требуемого буфера
koder
если там нет данных - ты блокируешься
koder
если дам есть хоть байт данных - ты получишь обратно все что есть
Tishka17
Не хочешь проверить поведение на большем объеме - твое дело. Но в реальности ради 50байт никто не будет такое писать, так что нагрузка у тебя нереальная
koder
запусти под strace и посмотри
koder
Tishka17
Ну ок
Unat
Так никто не спорит с тем, что нагрузка не реальная
koder
сори, но хоть посмотри как работает ядро и питон с сокетами
Tishka17
Unat
Вот это я и пытаюсь понять
koder
накладные расходы разных систем на передачу блока данных
Tishka17
Ну а размер блока не важен, ага. Мы должны проверить
Tishka17
Зачем тогда тесты, если все принимаем на веру
Unat
Но тут вопрос - почему потоки множатся, а корутина одна
Tishka17
Зато на одно ядро пинили
koder
Tishka17
koder
может пробелы быстрее букв 'a' идут?
koder
может в субботу быстрее asyncio?
Unat
Да, или я не могу найти где множатся корутины
koder
некоторые из таких предположений не требуют проверки - я знаю и так ответ
koder
на 100к ты будешь насиловать tcp стек и ядро
Tishka17
Следующий
Unat
Токсичное русское коммьюнити :(
Tishka17
Tishka17
О том как ведут себя разных подходы
koder
на каждый новый коннект ядро делает корутину
koder
ты просто увеличишь накладные расходы оси на пересылку данных по сети и уменьшишь rpc, в итоге накладные расходы твоей либы потерябтся на фоне времени передачи данных и различие уменьшится
koder
стека?
koder
какое отноешени к tcp стеку имеет планировщик задач?
koder