В зависимости от того, что именно вас интересует, есть два варианта:
Просто подсчитайте строки в файле tasks
для контрольной группы. Этот файл будет автоматически обновляться при создании или удалении потока или процесса в контрольной группе.
Это немного сложнее. Вы можете получить список процессов/потоков в контрольной группе из вышеупомянутого файла tasks
, а затем проверить использование для каждого PID с помощью /proc
, но у этого подхода так много условий гонки, что вы можете монетизировать его как соревновательный вид спорта. В качестве альтернативы, если вы используете контрольные группы версии 2, вы можете проверить файл cpu.stat
в контрольной группе. В этом файле будет пара строк с подсчетом микросекунд процессорного времени, потребляемого контрольной группой, поэтому вы можете получить приблизительную оценку использования, проверив его два раза с интервалом в одну секунду и разделив разницу на 10, чтобы получить процент использования (100 % для полной загрузки одного ядра,200% за полное использование двух и т. д. ). Аналогичный подход может быть реализован с cgroups версии 1 с помощью контроллера cpuacct (. Создайте контрольную группу под этим контроллером, отражающую ту, которую вы создали под контроллером cpuset ).
Это одна из целей контейнеров :— предоставить способ определить поддерживающую инфраструктуру для приложения (или службы ), а затем запустить их в любом месте, где есть соответствующая среда выполнения контейнера.
Ваш контейнер должен нормально работать на RHEL 8, независимо от того, где он был собран. Предварительно проверять особо нечего, запускаем контейнер и проверяем, что он работает корректно.