📌 Команды мониторинга и отладки
top отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)ps -eafw отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)ps -e -o pid,args --forest вывести PID’ы и процессы в виде дереваpstree отобразить дерево процессовkill -9 98989 kill -KILL 98989
«убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)kill -TERM 98989 Корректно завершить процесс с PID 98989kill -1 98989
kill -HUP 98989 заставить процесс с PID 98989 перепрочитать файл конфигурацииlsof -p 98989 отобразить список файлов, открытых процессом с PID 98989lsof /home/user1 отобразить список открытых файлов из директории /home/user1strace -c ls > /dev/null вывести список системных вызовов, созданных и полученных процессом lsstrace -f -e open ls > /dev/null вывести вызовы бибилотекwatch -n1 ‘cat /proc/interrupts’ отображать прерывания в режиме реального времениlast reboot отобразить историю перезагрузок системыlast user1 отобразить историю регистрации пользователя user1 в системе и время его нахождения в нейlsmod вывести загруженные модули ядраfree -m показать состояние оперативной памяти в мегабайтахsmartctl -A /dev/hda контроль состояния жёсткого диска /dev/hda через SMARTsmartctl -i /dev/hda проверить доступность SMART на жёстком диске /dev/hdatail /var/log/dmesg вывести десять последних записей из журнала загрузки ядраtail /var/log/messages вывести десять последних записей из системного журнала❤1
Как динамически рассчитывать CPU для контейнеров в Kubernetes
Включена возможность динамического изменения CPU для контейнеров в Kubernetes с помощью фичи
Раньше подбор CPU был трудоемким: если установить слишком много — ресурс тратится впустую, слишком мало — приложение тормозит. Давайте рассмотрим подходы к динамическому изменению CPU.
Стратегия 1: всегда использовать 80% CPU
Если приложение загружено на 50%, увеличиваем до 80% — оставляем запас в 20 % для безопасности.
Работает отлично при уменьшении, но при увеличении — вопрос: если используем 100 %, стоит ли удвоить CPU или немного прибавить? Ответ неизвестен.
Стратегия 2: всегда использовать 80%, плюс экспоненциальный рост
Как и в стратегии 1 при уменьшении. При увеличении (при нагрузке между 80 и 100 %) используется формула:
Экспоненциальное увеличение: сильно растем, если нагрузка 100 %, и умеренно — если 90 %. Эту стратегию легко применять: она используется в инструменте Kondense для подбора ресурсов в Kubernetes.
Стратегия 3: целевое использование 100% с учетом CPU-pressure
При уменьшении — устанавливаем на 100%, чтобы не терять ресурсы. При увеличении — смотрим на CPU pressure в микросекундах (время, которое контейнер не мог получить CPU). Чем выше давление, тем сильнее нужно увеличить CPU.
Теоретически это оптимально. Но на практике не всегда работает: порой CPU pressure высок, но увеличение CPU не помогает — зависит от характера приложения. Потребуется доработка формулы под конкретные кейсы.
Итог:
Динамическое изменение CPU — значительный шаг для Kubernetes. В будущем это позволит экономить ресурсы и развязывать руки администраторам. Уже сейчас стоит ознакомиться с инструментом Kondense, если планируете автоматизацию подбора ресурсов.
https://medium.com/@mathieuces/how-to-calculate-cpu-for-containers-in-k8s-dynamically-47a89e3886eb
Включена возможность динамического изменения CPU для контейнеров в Kubernetes с помощью фичи
InPlacePodVerticalScaling.Раньше подбор CPU был трудоемким: если установить слишком много — ресурс тратится впустую, слишком мало — приложение тормозит. Давайте рассмотрим подходы к динамическому изменению CPU.
Стратегия 1: всегда использовать 80% CPU
Если приложение загружено на 50%, увеличиваем до 80% — оставляем запас в 20 % для безопасности.
Работает отлично при уменьшении, но при увеличении — вопрос: если используем 100 %, стоит ли удвоить CPU или немного прибавить? Ответ неизвестен.
Стратегия 2: всегда использовать 80%, плюс экспоненциальный рост
Как и в стратегии 1 при уменьшении. При увеличении (при нагрузке между 80 и 100 %) используется формула:
new_cpu = average_cpu / 0.8 + (average_cpu / 0.8 * coeff)²
Экспоненциальное увеличение: сильно растем, если нагрузка 100 %, и умеренно — если 90 %. Эту стратегию легко применять: она используется в инструменте Kondense для подбора ресурсов в Kubernetes.
Стратегия 3: целевое использование 100% с учетом CPU-pressure
При уменьшении — устанавливаем на 100%, чтобы не терять ресурсы. При увеличении — смотрим на CPU pressure в микросекундах (время, которое контейнер не мог получить CPU). Чем выше давление, тем сильнее нужно увеличить CPU.
Теоретически это оптимально. Но на практике не всегда работает: порой CPU pressure высок, но увеличение CPU не помогает — зависит от характера приложения. Потребуется доработка формулы под конкретные кейсы.
Итог:
Динамическое изменение CPU — значительный шаг для Kubernetes. В будущем это позволит экономить ресурсы и развязывать руки администраторам. Уже сейчас стоит ознакомиться с инструментом Kondense, если планируете автоматизацию подбора ресурсов.
https://medium.com/@mathieuces/how-to-calculate-cpu-for-containers-in-k8s-dynamically-47a89e3886eb
❤1