Tek çekirdekli bir makinede 3 işlemim var. Her işlem tamamen aynıdır ve CPU'yu olabildiğince hızlı yakar (sıkı döngü). Bunlardan ikisi ( Ave B) 512 ve 512'ye ayarlanmış ayrı gruplarda cgexec ile başlatılır. Üçüncüsü ( C) cgexec ile değil, düzenli olarak başlatılır.
Her şey hazır ve çalışır Chale geldiğinde CPU'nun% 66'sını alır Ave B% 33'ü böler. Ben öldürürsem Csonra Ave B(beklendiği gibi)% 50 her olsun.
Neden C% 66 elde ediyor? Bu senaryoda her birinin% 33'ünü veya belki de% 50 (C),% 25 (A) ve% 25 (B) olmasını beklerdim. CGerçi % 66 matematik dersini nasıl yaparsam yapayım işe yaramıyor.
Genel olarak, kaynak paylaşımı söz konusu olduğunda cgexecbaşlatılan süreçlerle etkileşime girmeden başlatılan işlemlerin nasıl olduğunu anlamak istiyorum cgexec(özellikle CPU, ancak çok karmaşık değilse daha genel bir cevap takdir edilecektir).
topinanıyorum ve oldukça basit bir şekilde komut isteminden başlatıldıklarına inanıyorum: cgexec -g cpu:foo myprogramve ./myprogram. Bir süredir bu yüzden kesinlikle hatırlamıyorum.
cpu.sharesçok tuhaf bir yapılandırma seçeneğidir; Bunun cpuset.cpusyerine mümkünse işleri CPU'lar ile ayırmanızı öneririm .