Где мой трафик?

Наблюдаемость и простота отладки одни из важнейших свойств системы, которые следует учитывать уже на этапе выбора технологий. В противном случае может быть больно и дорого. Следующий этап - разобраться как технология устроена и желательно сделать это еще до развертывания в боевых окружениях. Но бывает конечно по всякому. Сегодня рассмотрим сеть в Kubernetes и выявим несоответствия в учете трафика, которые могут вводить в заблуждение. Дано: Kubernetes кластер; MetalLB L2 как loadBalancer; Nginx Ingress Controller; Calico на ebpf....

May 23, 2024 · 3 min

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