Long way to the application, №2.

Привет! Продолжаем изучать маршрут сетевого пакета по подсистемам ядра linux. В первой части мы разобрали отрезок от сетевой карты гипервизора до txqueue - очередь перед виртуальной машиной в которой и крутится наш сервис. Теперь разберем следующий отрезок - от сетевой карты ВМ и до самого приложения. RX queue Процесс обработки трафика виртуальной машиной идентичен с гипервизоров - softirqd демоны разгребают RX очереди. Ничего нового. Различия начинаются на уровнях сетевого стека, точнее перед ним....

May 14, 2024 · 3 min

Long way to the application, №1.

Прежде чем сетевой пакет из сервиса А попадет в сервис Б, ему следует миновать множество систем по середине…

April 21, 2024 · 4 min

Tooling. Cache Hit Ratio

Об утилите cachestat я узнал из статьи Brendan Gregg - Analyzing a High Rate of Paging. В ней расследуются причины аномально долгого процессинга файлов размером в 100Gbytes, тогда как файлы в 40Gbytes обрабатывались на несколько порядков быстрее. В том кейсе точно поставить диагноз - большой объект не помещался в кеш, что приводило к trashing’у страниц памяти, автору помог инструмент cachestat. Если в кратце, то утилита подсчитывает соотношение попаданий в кеш файловой системы относительно общего числа операций на чтение - cache hit ratio:...

April 16, 2024 · 2 min

Tooling. Latency I/O операций

Проблематика Чтобы оценить производительность ввода/вывода обычно принято обращаться к метрикам дисковой подсистемы, благо они богато представлены “стандартными” инструментами linux - sar, iostat, atop, etc. Проблема данного подхода, в упрощении общей картины, он игнорирует такой важный компонент в работе I/O подсистемы как файловая система. Например: приложение может использовать асинхронную модель записи и flush на диск происходит порциями и когда-то потом; приложение хочет прочитать 1 байт данных, но считать с диска возможно только блоком в 4096 байт; используется read-ahead при последовательном чтении; чтение происходит из кеша файловой системы - запросов на чтение много, а диск почти не загружен; и так далее....

April 5, 2024 · 3 min

Haproxy memory leak

На днях диагностировал утечку памяти в кластере haproxy, в процессе исследования допустил несколько ошибок, что привело к более долгой локализации проблемы. На примере данного кейса хочу провести небольшое ретро. Моя основная деятельность связана с поиском и устранением проблем, негативно влияющих на производительность системы в целом, будь то runtime приложения, сеть, слой виртуализации, база данных или что-угодно еще. В этот раз по OOM прибило несколько экземпляров haproxy - согласитесь событие нестандартное. Требовалось понять причины и предложить решение....

March 31, 2024 · 6 min