PYMALLOC, MALLOC, аллокаторы, CPython: ад пуст, все бесы здесь.
00:00 Напоминаю на чем остановились https://www.youtube.com/watch?v=uAbKUC_vaug и подчеркиваю фундаментальную роль аллокаторов. 02:14 Фрагментация - главный враг аллокаторов. 05:42 Опять идем в CPython и исходники: вчитываемся в происходящее в `Objects/obmalloc.c`: именно то место, где живет `pymalloc` из прошлого выпуска. 11:24 Конфигурация аллокатора CPython через переменные среды вроде `PYTHONMALLOC`. 13:55 Ключевая время - время в наносекундах, проведенное в точках входа в аллокацию внутри CPython. Рассуждаю о том, какая метрика будет ключевой, какие недостатки у такого подхода и как с этим работать в статистическом смысле. 16:04 Еще раз о фрагментации. Упоминаю `tracemalloc`: изнутри и снаружи. 18:04 Динамическе uprobes/uretprobes Линукса. Показываю как использовать `perf` для динамической трассировки (в прошлый раз был eBPF). 24:08 Переходим к `perf record`: собственно, сам процесс трассировки как он есть. 30:02 Задумываюсь о том, как именно дать нагрузку на echo веб-сервер: упоминаю "нормальное" и "равновероятное" распредления, /dev/random и /dev/urandom. Показываю как `bash` можно на лету дружить с `python`: Блаженный `bash`: вставай и e-`bash`. 39:35 Заключение и задел на следующий стрим: `perf script`. Этот стрим продолжает https://www.youtube.com/watch?v=uAbKUC_vaug. В прошлый раз остановились на проблемах аллокаторов на примере CPython (так уж вышло), заговорили о "паттернах аллокации" и об их подмене и тьюнинге. Не путаем (более фундаментальную) проблему аллокации и деаллокации памяти "вообще" с сборкой мусора, кстати! Показываю как использовать `perf` для динамического трейснига uprobe и uretprobe, как статистически благоразумно подходить к задаче, - в моем стиле, не покидая строги чертоги терминального окошечка. Заканчиваю на том, что получены некие - весьма сомнительные и грязные в силу нечистоты эксперимента - статистические данные и им необходим пост-процессинг. To be continued. Комментарии и дискуссии - приветствуются, делитесь *вашими* выводами и ходом мыслей.
Название:
PYMALLOC, MALLOC, аллокаторы, CPython: ад пуст, все бесы здесь.
Категория:
Разное