Linux, Performance and Troubleshooting

with Aleksandr Lebedev

CPU Throttling и Runqueue

Объём ресурсов, потребляемый контейнером, учитывается на уровне cgroup, к которой он относится. Контейнер состоит из одного или более процессов, а процесс — из одного или более тредов. Абстракцию можно углубить, разбивая тред на «зелёные потоки», в зависимости от рантайма это могут быть горутины (Golang), корутины (Kotlin/Python), виртуальные треды (Java) и другие. Но о «зелёных» потоках Linux не знает, для него единицей планирования является тред (в терминах ядра — task_struct). Именно он планируется, выполняется и вытесняется другими тредами для выполнения на CPU....

October 20, 2024 · 4 min

Kafka и медленная запись

Разработчики провели нагрузочные тесты и выявили значительные задержки при записи данных в Kafka, что приводило к накоплению лага. Я подключился к анализу причин низкой производительности. Сильно упрощенный флоу: приложение пишет в Kafka (кластер на виртуальных машинах); Kafka работает в режиме acks=all и не поспевает за потоком событий; на приложении копится очередь на запись. Прежде чем детально разбираться с Kafka, я бегло проверил сетевые ресурсы и состояние машин. Аномалий выявлено не было....

October 14, 2024 · 2 min

"bash: curl: command not found"

Или как траблшутить контейнеры когда нечем.

August 27, 2024 · 3 min

TCP Congestion Control in Action

Протестировал работу TCP Congestion Control в Linux в различных по качеству окружениях, поделюсь результатами.

August 8, 2024 · 2 min

Thread State Analysis

Сессия траблшутинга - это не только конечный результат, но и процесс, протекающий с различной степенью эффективности. Одного умения пользоваться инструментами, знать флаги и уверенно работать в консоли недостаточно. Необходима систематизация.

July 10, 2024 · 4 min