Тема: performance
-
Непрерывное профилирование в продакшене: постоянно включённое сэмплирующее профилирование и на какие вопросы оно отвечает
Непрерывное профилирование систематически снимает профили CPU и памяти во времени и хранит их как размеченные серии, поэтому команда может спросить, какая функция потребила больше всего CPU по всему парку серверов вчера, или что изменилось между двумя версиями; сэмплирующие профилировщики делают это достаточно дёшево, чтобы держать их включёнными постоянно, а сами профили поставляют рантайм-эндпоинты вроде /debug/pprof/ в Go или eBPF-агенты.
-
Summarizing time in system calls with strace -c, its overhead, and perf trace as an alternative
strace -c counts time, calls and errors per system call instead of printing every call, but strace's own manual warns that a traced process runs more slowly than an untraced one; perf trace, described as a strace-inspired tool built on perf_events rather than ptrace, is the lower-ceremony alternative when that overhead matters.
-
Бенчмаркинг изменения: прогрев, повторы, разброс и что указывать в отчёте
Сравнение по времени выполнения — это результат только тогда, когда он устойчив к шуму: зафиксируйте нагрузку, отбросьте прогревочные прогоны, чередуйте много повторов каждого варианта, выбирайте статистику до того, как посмотрите на данные, и указывайте разброс и окружение рядом с каждым числом. Разница меньше разброса между прогонами — это не находка.
-
A first look at Solaris performance: prstat, vmstat, mpstat, iostat and zpool iostat
prstat -a/-Z, vmstat, mpstat, iostat -xnz and zpool iostat are five read-only commands that cover most first-look performance questions on Solaris 11.4, with zone-aware and disk-latency detail that the similarly-named Linux tools present differently.
-
Метод USE для поиска узких мест производительности
Для каждого ресурса — CPU, памяти, дисков, сети, блокировок — проверяйте загрузку, насыщение и ошибки. Метод USE — это контрольный список, позволяющий быстро находить узкие места, не начиная с догадок на уровне приложения.
-
Сжатие ответов: где выполнять и что исключать
Сжимайте текстовые ответы (HTML, JSON, Markdown) на прокси или в приложении, пропускайте уже сжатый и потоковый контент, обеспечивайте корректность ETag при разных кодированиях и задавайте Vary: Accept-Encoding.
-
How much of an agent's context is tool output in real runs, and does trimming it change task success?
Open question: the MCP specification says clients should validate tool results before passing them to the model but leaves the amount to the client; in recorded agent runs, what share of tokens is tool output rather than instructions or reasoning, and does truncating, summarising or filtering tool output change task success, cost and latency?
-
Адаптивные изображения с srcset, sizes и picture
srcset с дескрипторами ширины и атрибут sizes позволяют браузеру выбрать наименьший файл, заполняющий место изображения при текущих размере области просмотра и плотности пикселей. Дескрипторы x дают варианты фиксированного размера для разных плотностей; picture с source управляет композицией и запасными форматами. Сохраняйте width и height, чтобы загрузка не сдвигала макет.
-
Sampling Windows Server performance counters with Get-Counter and exporting them to CSV
Get-Counter samples named counter paths at a chosen interval, continuously or for a fixed count; Export-Counter (Windows PowerShell 5.1 only) preserves every field in the native BLG format, and relog converts a capture to CSV afterwards even without the original Export-Counter command.
-
Сгенерировать, оценить, исправить: когда цикл самопроверки оправдывает затраты
Цикл, в котором модель оценивает и исправляет собственный ответ, улучшает результат, если у проверки есть внешний сигнал (тесты, валидатор, источник) и фиксированные критерии; без такой опоры опубликованные результаты показывают возможное ухудшение ответов, а каждый раунд добавляет как минимум два вызова, объём входных данных которых растёт вместе с черновиком.
-
VACUUM, autovacuum и разрастание таблиц
После обновлений и удалений механизм MVCC в PostgreSQL оставляет мёртвые версии строк. VACUUM освобождает их место для повторного использования, поддерживает статистику и защиту от переполнения идентификаторов транзакций. Autovacuum следует оставлять включённым и настраивать для активно используемых таблиц.
-
Загрузка веб-шрифтов: font-display, preload, подмножества unicode-range и запасные шрифты с подобранными метриками
Показывайте текст при первой отрисовке и загружайте фирменный шрифт без скачков макета: делите начертания на подмножества через unicode-range, чтобы загружались только используемые письменности, выбирайте font-display по роли — optional для основного текста, swap для заголовков, — предзагружайте первые файлы с crossorigin и задавайте запасное начертание с size-adjust и переопределением ascent/descent, чтобы переносы строк совпадали до и после замены.
-
ES module builds with declared side effects shrink consumer bundles more than CommonJS builds
Hypothesis: for a library of many independent functions, a consumer that imports a few of them gets a smaller bundle when the library ships ES modules with a sideEffects declaration than when it ships CommonJS, because tree shaking depends on static import/export structure; a fixture-based comparison is proposed.
-
Когда asyncio помогает, а когда — нет
asyncio выполняет в одном потоке множество задач, ограниченных вводом-выводом, приостанавливая их в точках await. Он не ускоряет код, ограниченный вычислениями, а блокирующие вызовы внутри корутин останавливают весь цикл событий.
-
Web Vitals: что измеряют LCP, INP и CLS
Core Web Vitals — три метрики реального использования: Largest Contentful Paint — время отрисовки самого большого видимого элемента, ориентир 2.5 с; Interaction to Next Paint — наибольшая задержка взаимодействия, ориентир 200 мс; Cumulative Layout Shift — неожиданное смещение, ориентир 0.1. Каждую оценивают по 75-му перцентилю загрузок страниц.
-
When does client-side routing still pay off now that browsers offer bfcache, prerendering and cross-document view transitions?
Open question: in-page routers were adopted to avoid full page loads, at the cost of shell serving, 404 handling, scroll and focus restoration and a bundle that must arrive first; the back/forward cache, the Speculation Rules API and cross-document view transitions now address the original motivations in multi-page sites. For which sites and interaction patterns does an in-page router still measurably win?
-
Поиск утечки памяти по снимкам tracemalloc
Начните трассировку заранее через PYTHONTRACEMALLOC или tracemalloc.start(nframe), сделайте снимок после прогрева и ещё один после N итераций, отфильтруйте шум импортов и изучите compare_to(..., 'lineno'), ища строки, для которых размер растёт пропорционально N. Перейдите к группировке 'traceback', чтобы увидеть вызывающий код.
-
Performance diagnosis from the macOS Terminal: top, vm_stat, memory_pressure, fs_usage, and powermetrics
macOS ships BSD-heritage and Apple-specific tools that overlap with what top/vmstat/iostat/strace do on Linux, under different names, units and privilege requirements: top -o cpu, vm_stat, memory_pressure, iostat, fs_usage, powermetrics, and sample <pid>.
-
Per-process CPU and I/O with pidstat and /proc/<pid>/io: finding what causes I/O wait
pidstat reports per-task CPU, memory and disk I/O without grepping a name out of top; reading /proc/<pid>/io directly separates logical I/O (rchar/wchar, including cache) from the physical read_bytes/write_bytes that actually reach the device.
-
Выбор между потоками, процессами и asyncio для нагрузки Python
Сначала определите характер горячего пути: для ожидания ввода-вывода подойдут asyncio (много соединений, асинхронные библиотеки) или пул потоков (немного блокирующих вызовов); для вычислений на чистом Python нужны процессы или сборка без GIL; нативный код, освобождающий GIL, может использовать потоки. Ограничивайте каждый пул, явно выбирайте способ запуска процессов и прописывайте завершение работы.
Машиночитаемо: JSON