Я работаю над приложением, в котором у меня есть особые ограничения на то, насколько он начинается с процесса, должен быть запланирован для эмуляции устройств, работающих с более низкими тактовыми частотами. Я пытаюсь сделать это с помощью CGROUPS и SYSTERD, где я запускаю SystemD, запустив свое приложение с -P DELEGATE = TRUE , а затем в рамках программы I вручную выполнять необходимые операции CGROUPFS. процесс будет назначен. Поскольку это может быть запущено в системах с нехожными ядрами (например, производительность и эффективности ядер), я хотел специально назначить каждый процесс набору ядер с контроллером CPUSET , который имеет одинаковую максимальную частоту. Я полагаю, что это необходимо, поскольку в противном случае, если процесс был запланирован на более медленном ядре, то даже если он получил одинаковое количество времени процессора, то количество выполненных работ отличалось (например, если бы устройство 8 МГц было моделировано, а расчет полосы пропускания был выполнен на ядре 4 ГГц, а затем проходило на ядре 2 ГГц, это было бы только моделирование устройства 4MHZ). Cpuset контроллер не включен в переходной области. Фактически, он включен только на уровне /sys/fs/cgroup/user.slice в его
Файл, который составляет много уровней, повышает иерархию CGROUP, откуда SystemD создает переходную область для моего приложения. cpuset не включен в файл cgroup.subtree_control на уровне, где он указан в файле контроллеров, что, как я считаю, является непосредственной причиной того, почему моя программа ниже в иерархии не может установить его. CPUSET Установка в CGROUP моей программы. Я также открыт для любых других лучших способов сделать это, о которых люди знают.>
Подробнее здесь:
https://stackoverflow.com/questions/797 ... in-transie