
toby
03.06.2019
20:19:49
воу
а это круто) спасибо

Yuri
03.06.2019
20:38:06
Привет чат всем

Pavel
03.06.2019
20:38:53

Google

Vlad
03.06.2019
20:39:36
Есть питон, есть вим, не работают вместе, шо делать, какие подводные?

Tishka17
03.06.2019
20:39:53
в смысле не работают и в смысле вместе?

Vlad
03.06.2019
20:41:58
Интеграция питона в вим через джедай

koder
03.06.2019
20:43:32

Vlad
03.06.2019
20:55:56
я вообше хз, но в любом случае лучше подробнее описать проблему. Что именно не работает, что пробовал, что смотрел
Есть питон 3.7.3 64х, есть вим 8.1.чтотодальше 64х,
хотел внедрить нормальную проверку и дополнение кода, почитал что хорош jedi-vim, выполнил его установку и вим начал обильно ругаться на невозможность инициализации питона,
+python штуки в виме есть,
Команда echo has(python) даёт 0,

Глеб
03.06.2019
20:56:22
@Kdanylov прошу прощения за, возможно, тупой вопрос, но в тесте asyncio количество загруженных ядер для асинка и тредов было равным? Я перед сном в чат заглянул, меня что-то клинит на том, что асинк в один поток работает.

koder
03.06.2019
21:03:52

Глеб
03.06.2019
21:10:15
О как. А простого синхронного теста не было?
Без потоков и асинка

koder
03.06.2019
21:11:26
@nepherpitou собвственно это совершенно ожидаемый результат.
asyncio выполняет просто безумное количество питон кода на каждый await
сначала ты уходишь вних по славно задизайненному со всеми требуемыми
паттернами стеку вызовов в недра asyncio что бы она сконтруировала тебе Future
потом это future ты везешь обратно по всему своему стеку вызовов до самого loop.
loop регистрирует на него калбек и проделывает вагон метаработы
и всякой фигни. Однажды future исполнится, ему поставят done, вызовется
callback и корутину подвинут в очередь готовых. Потом обратно через весь стек
вниз прокинут результат. Выходит 400+ питоновских инструкций на каждый await.
Каждая примерно по ~50 тактов CPU. или 20к+ тактов. А переключение потоков в
ядре со всем скедуленгом и туда-сюда < 500 тактов. Так и живем
Тест будет полностью лимитироваться латентностью tcp стеков и сетки


Глеб
03.06.2019
21:20:42

Google

Глеб
03.06.2019
21:21:16
Блин, надо будет завтра поковыряться.

Карлос
03.06.2019
21:22:54
как удалить все папки в которых нету файла ПАРОЛИ ?

Глеб
03.06.2019
21:24:49
Хм... Для такого теста надо логику менять, в текущем виде асинк будет ждать каждого нового ответа, а потоки будут делать это в N раз чаще.

koder
03.06.2019
21:25:03
@nepherpitou
если сервер будет тупить, или если на клиенткой стороне будет еще какая-то активность между приемом и посылкой сообщения, то просто возрастет латентность. Сообщения же не паплайнятся. Но в таком случае ты будешь мерять не совсем то.
но вообще по мере роста количества соединений потокам становится все хуже и хуже, так что если сервер будет тупить и
открытые соединения будут копится - потоки начнут проигрывать постепенно изза повышенного потребления ресурсов при простое. Собвественно на том ноуте где я это тестит больше 20к потоков не удавалось запустить. На текущем работает с 30k,
но дальше уже не.

Tishka17
03.06.2019
21:25:15

koder
03.06.2019
21:25:30

Глеб
03.06.2019
21:26:10

Tishka17
03.06.2019
21:26:12
Они и так воюют за гил
В общем непонятно
Код теста бы

koder
03.06.2019
21:27:15
так они не воюют

Tishka17
03.06.2019
21:27:27
Я проглядел ссылку

koder
03.06.2019
21:27:49
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 и без
без афинити на каждый recv - 15 futex_wait
там хитрая фигня выходит - в добавок ОС начинает елозить потоки по все доступным ядрам CPU равномерно
мусорит кеши и прочее

Глеб
03.06.2019
21:29:59
Да можно ссылку на строчку кода кинуть, я открою :) а то ты там, кажется, диссертацию так скоро напишешь.

Google

Tishka17
03.06.2019
21:34:22
Размер данных

Floss
03.06.2019
21:34:39
Необходимо собрать по дизайн-эскизам экранов весь функционал для магазина, на Django.
Все стандартно: api для стыковки с фронтом, мультиязычность, мультивалюстность, фингерпринты, авторизация через соцсети, подбор товара, конструктор товара, оплата через платежный шлюз, чат. Для админки можно использовать шаблон аля jet.
Фронт на angular уже готов. От вас нужен только бек на django.
#работа #удаленка


koder
03.06.2019
21:34:40
А где создаётся много асинков? Из шелла?
тааак. все корутины (они же асинки) живут в одном потоке OC. Но корутин у тебя столько же, сколько и потоков.
А, я тебя понял. Если в тестируемой части начать делать дополнительные операции, а не только пинг-понг, то расклады
будут чутка другими. Долго писать. Но в общем этот тест не про симуляцию реальной нагрузки - он про накладные расходы.
Накладные разходы зависят только от количества соединений. Потоки проседяют быстрее остальных про этим. Если у тебя будет
МНОГО медленных клиентов - то потоки будут смотреться хуже, чем если их мало. Но все равно лучше async по пропусной способности. Но так то у async есть другие проймузества

Tishka17
03.06.2019
21:35:12
Черт дохуя мало

koder
03.06.2019
21:35:26
я гонял и на 2к

Tishka17
03.06.2019
21:35:35
Давай-ка 100к хотя бы

koder
03.06.2019
21:35:43
А смысл?

Tishka17
03.06.2019
21:35:55
Асинкио обещали быстрее за счёт экономии на чтении их буфера

koder
03.06.2019
21:35:57
ты просто начнешь тратить время на tcp стек, а не на свой код
я не понимаю как так может быть

Tishka17
03.06.2019
21:36:11
Мол треды переключаются когда ты читаешь, а тут сразу
На маленьких размерах никто не обещал
И да, у тебя код с тредами не умеет дочитывать данных, остальные не с смотрел

Глеб
03.06.2019
21:36:55

Tishka17
03.06.2019
21:37:15

koder
03.06.2019
21:37:19
ээээ, я не понял.
Когда ты используешь асинк - ты делаешь сначала poll и получаешь список сокетов на которых есть данные.
Дальше ты из этих сокетов точно так же, как и в потоковой системе, читаешь данные. Тем же самым recv
Разницы ни в буферах ни в ос тут нет

Google

Tishka17
03.06.2019
21:37:48
Ну вот у тебя есть 100к данных. В асинке пока не прочитаешь не переключишься
А треде - можешь

koder
03.06.2019
21:38:00
нет

Tishka17
03.06.2019
21:38:03
Там именно эту часть тюнили
Проверь, иначе это все теория

koder
03.06.2019
21:38:24
а кто мешает сделать в потоке recv(100000)
так а что проверять то - я и так те скажу
делаешь в потоке recv с большим размером буфера и читаешь все что есть

Tishka17
03.06.2019
21:39:02

koder
03.06.2019
21:39:02
причем ровно одним запросом в ядро
это один вызов ядра

Tishka17
03.06.2019
21:39:17
Можно подумать питон именно так и сделает

koder
03.06.2019
21:39:21
какие переключения?
да

Tishka17
03.06.2019
21:39:23
Короче, имхо твой тест не полностью корректный

koder
03.06.2019
21:40:05
в смысле пруф? когда ты на сокете делаешь
socket.recv(10000000) - вызов узодит в ядро с таким за размером требуемого буфера
если там нет данных - ты блокируешься
если дам есть хоть байт данных - ты получишь обратно все что есть

Tishka17
03.06.2019
21:40:35
Не хочешь проверить поведение на большем объеме - твое дело. Но в реальности ради 50байт никто не будет такое писать, так что нагрузка у тебя нереальная

Google

koder
03.06.2019
21:40:37
запусти под strace и посмотри

Tishka17
03.06.2019
21:40:53
Ну ок

Глеб
03.06.2019
21:41:14
Так никто не спорит с тем, что нагрузка не реальная

koder
03.06.2019
21:41:26
сори, но хоть посмотри как работает ядро и питон с сокетами

Tishka17
03.06.2019
21:41:31

Глеб
03.06.2019
21:41:52
Вот это я и пытаюсь понять

koder
03.06.2019
21:41:53
накладные расходы разных систем на передачу блока данных

Tishka17
03.06.2019
21:42:16
Ну а размер блока не важен, ага. Мы должны проверить
Зачем тогда тесты, если все принимаем на веру

Глеб
03.06.2019
21:42:43
Но тут вопрос - почему потоки множатся, а корутина одна

Tishka17
03.06.2019
21:42:47
Зато на одно ядро пинили

koder
03.06.2019
21:42:49

Tishka17
03.06.2019
21:42:53

koder
03.06.2019
21:43:02
может пробелы быстрее букв 'a' идут?
может в субботу быстрее asyncio?