Можно ли использовать cpu.shares с cpu.cfs_quota_us

Я настраиваю конфигурацию cgroups для своей исследовательской группы. На сервере 8 процессоров. Член команды мог использовать только часть процессорного времени, поэтому для команды я установил cpu.cfs_quota_us = 400000. Я также хочу добавить приоритет задач с помощью cpu.shares.

например, вот моя конфигурация cgroup:

group team {
    cpu {
        cpu.cfs_period_us = 100000;
        cpu.cfs_quota_us = 400000; #4 CPUs
    }
}

group team/user1 {
    cpu {
        cpu.shares = 256;
    }
}

group team/user2 {
    cpu {
        cpu.shares = 768;
    }
}

cpu.shares работают только в том случае, если я установил для cpu.cfs_quota_us родительской группы значение -1 и все процессоры используются.

Могут ли cpu.cfs_quota_us и детские cpu.shares работать вместе?


person Naich An    schedule 19.02.2019    source источник


Ответы (1)


cpu.shares не предназначено для установки приоритета задачи.

Он используется для определения относительного (абстрактного) объема совместного использования ЦП, то есть когда ЦП выделяется для задач определенной группы/пользователя, а не другого.

Здесь вы в основном говорите, что team/user2 будет иметь в три раза (768/256) больше времени для вычислений, чем team/user1 для своих задач. Другими словами, team/user2 будет использовать 75% процессорного времени, а team/user1 только 25%.

cpu.shares и cpu.cfs_quota_us делают одно и то же, но двумя разными способами. Первый использует относительное представление разделения времени, а второй использует точную количественную оценку в микросекундах. Поскольку они оба используются для определения разделения времени ЦП, их нельзя использовать вместе.

Некоторые документы: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/sec-cpu

person A. Gille    schedule 19.02.2019
comment
спасибо, какие-нибудь предложения, если я хочу установить относительное разделение времени процессора внутри cgroup? установить виртуальную машину будет работать, но это слишком тяжело. - person Naich An; 20.02.2019
comment
Сначала вы хотели узнать, как установить приоритеты для задач, что невозможно, вы можете только установить разделение времени процессора (двумя разными способами). Ваш ответ правильный, чтобы установить разделение времени процессора на группу. Вы устанавливаете, что группа team/user1 будет иметь меньше процессорного времени, чем team/user2. См. access.redhat.com/documentation /en-us/red_hat_enterprise_linux/ - person A. Gille; 21.02.2019
comment
@A.Gille Можете ли вы предоставить более конкретные доказательства того, почему их нельзя использовать вместе? Я просмотрел предоставленную вами ссылку, но не смог подтвердить это. Кроме того, этот ответ SO, похоже, интерпретирует его по-разному: - person oxley; 17.12.2020
comment
@oxley Сначала прочитайте документы. В 3.2.1. Настраиваемые параметры CFS. Следующие параметры можно использовать для настройки принудительного ограничения ИЛИ относительного совместного использования ЦП. Как я уже сказал, это два разных способа/манеры/подхода к достижению одной и той же цели. Попробуй сам. access.redhat.com/documentation/en- мы/red_hat_enterprise_linux/ - person A. Gille; 21.12.2020