(часть 1, 2)
PSI (Pressure Stall Information) – это метрика показывает сколько времени задачи ждут доступа к ресурсам системы (CPU, память, диск). То есть отражает уровень насыщения (saturation): если значение больше нуля => есть конкуренция за ресурсы.
PSI делится на два типа:
- Some – одна и более задач ждут ресурс (это плохо, но может быть не критично)
- Full – все задачи находятся в ожидании ресурса (а это уже коллапс)
Примечание №1. Сегодня речь только про CPU.
Примеры:
- 2 CPU, 1 runnable задача → конкуренции за CPU нет, PSI = 0
- 2 CPU, 2 runnable задачи → конкуренции всё ещё нет, PSI = 0
- 2 CPU, 4 runnable задачи → две задачи исполняются, две ждут, PSI > 0 (две из четырех задач всегда ожидают своей очереди).
Примечание №2: под
runnable я подразумеваю как исполняемые в данный момент, так и готовые к исполнению задачи.Формула подсчета PSI (упрощенная):
threads = min(runnable_tasks, num_cpus)
SOME = min(delayed_tasks / threads, 1)
FULL = (threads - min(active_tasks, threads)) / threads
где:
- runnable_tasks – общее число задач, готовых к выполнению;
- num_cpus – количество доступных CPU;
- delayed_tasks – задачи, ожидающие ресурсы;
- active_tasks – задачи, выполняемые в данный момент.
Примеры:
- для 2 CPU и 1 runnable задачи:
threads = min(1, 2) = 1
SOME = min(0 / 1, 1) = 0
FULL = (1 - min(1, 1)) / 1 = 0
- для 2 CPU и 4 runnable задачи:
threads = min(4, 2) = 2
SOME = min((4 - 2) / 2, 1) = min(2 / 2, 1) = 1 # или 100%
FULL = (2 - min(2, 2)) / 2 = 0 # или 0%
Это значит, что какие-то задачи всегда ожидают CPU (
some), но в целом что-то да исполняется на процессоре.Так чем полезен PSI?
Он даёт 100% чистый сигнал: если PSI > 0, значит, есть ожидание процессора, значит система замедляется.
Есть и недостаток - PSI не показывает тренды и реагирует лишь постфактум, когда проблема УЖЕ появилась.
Теперь вернемся к Load Average и представим сколько дополнительной информации нам потребуется, чтобы выявить перенасыщение CPU.
Ну как минимум количество runnable процессов и CPU на машине. Три показателя!
При этом рост LA может быть связан не только с CPU, но и с I/O, что усложняет интерпретацию и требует дополнительного времени на анализ.
А так хочется один простой показатель, по которому сразу понятно, есть проблема или
——————-
❓На засыпку: почему на уровне системы может быть только PSI some? Бывают ли случаи когда появляется PSI full?
P.S. Скрин "на поразглядывать"
