Як я можу налаштувати групи, щоб справедливо ділитися ресурсами між користувачами?


11

Раніше в cgroups був параметр config ядра під назвою sched_user або подібний. Це дозволило (наскільки мені відомо) всім користувачам справедливо ділитися системними ресурсами. У 2.6.35 вона недоступна. Чи можна налаштувати мою систему на автоматичний обмін ресурсами io / cpu / пам'яті між усіма користувачами (включаючи root?) Я ніколи раніше не створював групу, чи є хороший підручник для цього? Велике спасибі.


Ну, я взяв лут у пакеті cgroups-bin на Ubuntu, і я впевнений, що він "робить це" за замовчуванням, якщо я просто встановлю його. Я припускав, що це потребує налаштування, однак я вважаю, що це просто так, якщо у вас є особливі потреби. Я перевіряв напругу, працюючи з 2 процесорними потоками під коренем і 2 під моїм користувачем, і всі 4 потоки, здається, ділять 50% вгорі, що змушує мене думати, що це працює. Це може "вирішити" для мене, проте якщо я хотів би мати більш чіткий спосіб підтвердити, або краще уявити, як це налаштувати, ще раз дякую!
NightwishFan

Відповіді:


12

Ядро документація забезпечує загальний охоплення контрольних груп з прикладами.

cgroups-binПакет (який залежить від libcgroup1) вже передбачено розподіл має бути в порядку.

Конфігурація проводиться шляхом редагування наступних двох файлів:

/etc/cgconfig.conf

Використовується libcgroup для визначення груп управління, їх параметрів та точок монтажу.

/etc/cgrules.conf

Використовується libcgroup для визначення груп управління, до яких належить процес.

Ці файли конфігурації вже мають приклади, тому спробуйте їх підлаштувати під свої вимоги. Сторінки людини досить добре висвітлюють їх конфігурацію.

Після цього запустіть менеджер робочого навантаження та правила демона:

service cgconfig restart
service cgred restart

За розподіл ресурсів відповідає менеджер завантаження (cgconfig).
Додавання нового процесу до менеджера:

cgexec [-g <controllers>:<path>] command [args]

Додавання вже запущеного процесу до менеджера:

cgclassify [-g <controllers>:<path>] <pidlist>

Або автоматично над файлом cgrules.conf та Daemon Правилами CGroup (cgred), що змушує кожен новостворений процес у вказаній групі.


Приклад /etc/cgconfig.conf:

group group1 {
    perm {
            task {
                    uid = alice;
                    gid = alice;
            }
            admin {
                    uid = root;
                    gid = root;
            }
    }

    cpu {
            cpu.shares = 500;
    }

}

group group2 {
    perm {
            task {
                    uid = bob;
                    gid = bob;
            }
            admin {
                    uid = root;
                    gid = root;
            }
    }

    cpu {
            cpu.shares = 500;
    }

}

mount {
    cpu = /dev/cgroups/cpu;
    cpuacct = /dev/cgroups/cpuacct;
}

Приклад /etc/cgrules.conf:

alice            cpu             group1/
bob              cpu             group2/

Це поділить ресурси процесора приблизно 50-50 між користувачем 'alice' та 'bob'


Навчальні групи, додавши це до закладок. Спасибі.
Jigar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.