CPU Throttling и Runqueue
Объём ресурсов, потребляемый контейнером, учитывается на уровне cgroup, к которой он относится. Контейнер состоит из одного или более процессов, а процесс — из одного или более тредов. Абстракцию можно углубить, разбивая тред на «зелёные потоки», в зависимости от рантайма это могут быть горутины (Golang), корутины (Kotlin/Python), виртуальные треды (Java) и другие. Но о «зелёных» потоках Linux не знает, для него единицей планирования является тред (в терминах ядра — task_struct). Именно он планируется, выполняется и вытесняется другими тредами для выполнения на CPU....
Kafka и медленная запись
Разработчики провели нагрузочные тесты и выявили значительные задержки при записи данных в Kafka, что приводило к накоплению лага. Я подключился к анализу причин низкой производительности. Сильно упрощенный флоу: приложение пишет в Kafka (кластер на виртуальных машинах); Kafka работает в режиме acks=all и не поспевает за потоком событий; на приложении копится очередь на запись. Прежде чем детально разбираться с Kafka, я бегло проверил сетевые ресурсы и состояние машин. Аномалий выявлено не было....
"bash: curl: command not found"
Или как траблшутить контейнеры когда нечем.
TCP Congestion Control in Action
Протестировал работу TCP Congestion Control в Linux в различных по качеству окружениях, поделюсь результатами.
Thread State Analysis
Сессия траблшутинга - это не только конечный результат, но и процесс, протекающий с различной степенью эффективности. Одного умения пользоваться инструментами, знать флаги и уверенно работать в консоли недостаточно. Необходима систематизация.