Вопрос или проблема
В планировщике CFS cgroup v2 ядра Linux, как учитывается throttled_usec
, когда cgroup с несколькими потоками ограничивается в течение одного периода квоты? В частности, отслеживается ли throttled_usec
как общее время по часам, в течение которого cgroup в целом была ограничена, или это сумма ограниченного времени всех отдельных потоков?
Версия ядра: “5.14.0-284.11.1.el9_2.x86_64 #1 SMP PREEMPT_DYNAMIC Вт Май 9 11:41:53 PDT 2023 x86_64 x86_64 x86_64 GNU/Linux” Дистрибутив: Oracle Linux 9.x
.
Ответ или решение
Вопрос относительно учёта времени в параметре throttled_usec
, который является частью статистики cpu в cgroup v2 на Linux-ядре версии 5.14.x, связан с вычислением времени, в течение которого группа процессов (cgroup) была ограничена по использованию CPU.
В контексте CFS (Completely Fair Scheduler) в cgroup v2, параметр throttled_usec
отражает общее время в микросекундах, в течение которого данная группа находилась в состоянии ограничения ресурсов по CPU. В данном случае, важен принцип учёта времени и учёт всех процессов внутри cgroup.
Когда группа процессов ограничивается, это значит, что используемый ею процессорный ресурс превышает установленные пределы, и CFS вынужден временно приостановить выполнение этих процессов, чтобы соблюсти заданные границы. throttled_usec
в этой ситуации представляет собой время, когда групповые ресурсы были исчерпаны и процесс выполения заморожен.
Важно понимать, что throttled_usec
учитывается на уровне всей группы в целом, а не на уровне индивидуальных потоков или процессов внутри этой группы. Таким образом, если несколько потоков исполняются внутри одной cgroup и эта группа в какой-то момент времени ограничивается, throttled_usec
будет увеличиваться на время, в течение которого вся группа была под ограничением, а не просто суммируя отдельные периоды бездействия каждого потока.
С технической точки зрения это значит, что когда речь идет об ограничении вычислительных ресурсов, ключевым моментом является фактическое время полной или частичной недоступности этих ресурсов для группы в целом, что позволяет более реалистично оценивать эффективность и производительность при планировании ресурсов.
Говоря о дистрибутиве Oracle Linux 9.x, данная версия ядра поддерживает эти операции, обеспечивая современные возможности мониторинга и управления cgroup на основе CFS, укрепляя ту самую предсказуемость и контроль над серверными ресурсами, которых требует реальный бизнес.