<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>voidbytes.dev</title>
  <subtitle>Записки о низком уровне</subtitle>
  <link href="https://voidbytes.dev/"/>
  <link rel="self" href="https://voidbytes.dev/feed.xml"/>
  <id>https://voidbytes.dev/</id>
  <updated>2026-10-06T09:00:00Z</updated>
  <author><name>Антон Решетов</name><email>anton@voidbytes.dev</email></author>
  <entry>
    <title>Фьютекс в профиле: p99 держал глобальный мьютекс</title>
    <link href="https://voidbytes.dev/futex.html"/>
    <id>tag:voidbytes.dev,2026:futex</id>
    <updated>2026-10-06T09:00:00Z</updated>
    <category term="конкурентность"/><category term="профилирование"/>
    <summary>Сервис раз в сотню запросов отвечал на три миллисекунды дольше обычного. Я неделю подозревал аллокатор, а виноват был один общий мьютекс и очередь на нём.</summary>
  </entry>
  <entry>
    <title>Арена вместо malloc: девять раз и цена в RSS</title>
    <link href="https://voidbytes.dev/arena.html"/>
    <id>tag:voidbytes.dev,2026:arena</id>
    <updated>2026-09-18T09:00:00Z</updated>
    <category term="аллокаторы"/><category term="память"/>
    <summary>Заменил поштучные malloc на bump-аллокатор и получил 1,42 с → 0,158 с. А потом алерт по памяти показал, что я заплатил за это полутора гигабайтами RSS.</summary>
  </entry>
  <entry>
    <title>Промахи TLB: шесть гигабайт случайного доступа</title>
    <link href="https://voidbytes.dev/tlb.html"/>
    <id>tag:voidbytes.dev,2026:tlb</id>
    <updated>2026-08-12T09:00:00Z</updated>
    <category term="mmu"/><category term="кэш"/><category term="профилирование"/>
    <summary>Хеш-таблица на шесть гигабайт тормозила на ровном месте. Я был уверен, что это кэш последнего уровня, а счётчики показали обход страниц.</summary>
  </entry>
  <entry>
    <title>Ложное разделение: счётчики в одной кеш-линии</title>
    <link href="https://voidbytes.dev/false-sharing.html"/>
    <id>tag:voidbytes.dev,2026:false-sharing</id>
    <updated>2026-05-05T09:00:00Z</updated>
    <category term="конкурентность"/><category term="кэш"/>
    <summary>Добавил потоков - стало медленнее. Восемь счётчиков лежали в одной 64-байтной линии, и ядра дрались за неё по шине.</summary>
  </entry>
  <entry>
    <title>Девяносто два процента сисколлов - мои же</title>
    <link href="https://voidbytes.dev/strace.html"/>
    <id>tag:voidbytes.dev,2026:strace</id>
    <updated>2026-04-02T09:00:00Z</updated>
    <category term="сисколлы"/><category term="профилирование"/>
    <summary>Демон жёг 140 % CPU без полезной работы. Я начал с strace, прочитал его вывод неправильно и три часа подозревал epoll.</summary>
  </entry>
  <entry>
    <title>Профиль показал memcpy, а дело было в кеше</title>
    <link href="https://voidbytes.dev/perf-lie.html"/>
    <id>tag:voidbytes.dev,2025:perf-lie</id>
    <updated>2025-11-20T09:00:00Z</updated>
    <category term="профилирование"/><category term="кэш"/>
    <summary>Три дня оптимизировал копирование, которое стояло на вершине профиля, и получил минус один процент. Счётчики кеша объяснили, почему.</summary>
  </entry>
  <entry>
    <title>SIGBUS раз в три дня: packed и атомарный доступ</title>
    <link href="https://voidbytes.dev/sigbus.html"/>
    <id>tag:voidbytes.dev,2025:sigbus</id>
    <updated>2025-06-11T09:00:00Z</updated>
    <category term="падения"/><category term="выравнивание"/><category term="arm"/>
    <summary>Падало на двух узлах из девяти, раз в двое-четверо суток, и только на aarch64. Санитайзер нашёл причину за сорок миллисекунд.</summary>
  </entry>
  <entry>
    <title>Восьмой аргумент: прототип короче определения</title>
    <link href="https://voidbytes.dev/abi.html"/>
    <id>tag:voidbytes.dev,2024:abi</id>
    <updated>2024-10-08T09:00:00Z</updated>
    <category term="abi"/><category term="падения"/>
    <summary>Функция возвращала правильный результат ровно до тех пор, пока на стеке под ней лежал нуль. Разбор по SysV AMD64 и дизассемблеру.</summary>
  </entry>
  <entry>
    <title>RSS после free: фрагментация, а не утечка</title>
    <link href="https://voidbytes.dev/rss.html"/>
    <id>tag:voidbytes.dev,2024:rss</id>
    <updated>2024-03-19T09:00:00Z</updated>
    <category term="память"/><category term="аллокаторы"/>
    <summary>Два гигабайта остались в резидентной памяти после освобождения всего. Valgrind говорил «ноль потерь», и прав был он.</summary>
  </entry>
</feed>
