Grupları, kaynakları kullanıcılar arasında adil bir şekilde paylaşmak için nasıl yapılandırabilirim?


11

Gruplar altında sched_user veya benzeri adı verilen bir çekirdek yapılandırma seçeneği vardı. Bu, (bildiklerime göre) tüm kullanıcıların sistem kaynaklarını adil bir şekilde paylaşmasına izin verdi. 2.6.35'te mevcut değildir. Sistemimi io / cpu / bellek kaynaklarını tüm kullanıcılar arasında (root dahil) otomatik olarak paylaşacak şekilde yapılandırabileceğim bir yol var mı? Daha önce hiç bir grup kurmadım, bunu yapmak için iyi bir öğretici var mı? Çok teşekkür ederim.


Eh, Ubuntu'daki cgroups-bin paketinde bir ganimet aldım ve sadece yüklerseniz varsayılan olarak "bunu" yaptığından oldukça eminim. Kurulum gerektireceğini varsaydım, ancak özel gereksinimleriniz varsa bunu sanıyorum. Stres altında 2 cpu iş parçacığı ve 2 kullanıcım altında stres çalıştırarak test ettim ve tüm 4 iş parçacığı üstte% 50 paylaşıyor gibi görünüyor, bu da çalıştığını düşündürüyor. Bu benim için "çözebilir", ancak herhangi bir şey onaylamak için daha net bir yol var ya da nasıl yapılandırmak için daha iyi bir fikir varsa, tekrar teşekkürler!
NightwishFan

Yanıtlar:


12

Çekirdek belgeleri örneklerle genel bir grup kapsamı sağlar.

cgroups-bin(Bağlıdır paket libcgroup1zaten dağılımı tarafından sağlanır) ince olmalıdır.

Yapılandırma aşağıdaki iki dosyayı düzenleyerek yapılır:

/etc/cgconfig.conf

Libcgroup tarafından kontrol gruplarını, parametrelerini ve bağlama noktalarını tanımlamak için kullanılır.

/etc/cgrules.conf

Sürecin ait olduğu kontrol gruplarını tanımlamak için libcgroup tarafından kullanılır.

Bu yapılandırma dosyalarında zaten örnekler var, bu yüzden bunları gereksinimlerinize göre ayarlamayı deneyin. Man sayfaları, konfigürasyonlarını oldukça iyi kapsar.

Daha sonra iş yükü yöneticisini başlatın ve arka plan programı kurallar:

service cgconfig restart
service cgred restart

İşyükü yöneticisi (cgconfig) kaynakların tahsis edilmesinden sorumludur.
Yöneticiye yeni bir işlem ekleme:

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

Yöneticiye zaten çalışan bir işlem ekleme:

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

Veya otomatik olarak cgrules.conf dosyası ve yeni oluşturulan her işlemi belirtilen gruba zorlayan CGroup Rules Daemon (cgred) üzerinden otomatik olarak.


Örnek /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;
}

Örnek /etc/cgrules.conf:

alice            cpu             group1/
bob              cpu             group2/

Bu, CPU kaynaklarını 'alice' ve 'bob' kullanıcısı arasında yaklaşık 50-50 paylaşacak


Öğrenme grupları, buna yer işareti koydu. Teşekkürler.
Jigar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.