Saya memiliki 3 proses pada satu mesin inti. Setiap proses persis sama dan membakar CPU secepat mungkin (loop ketat). Dua di antaranya ( A
dan B
) diluncurkan dengan cgexec dalam grup terpisah dengan pembagian diatur ke 512 dan 512. Yang ketiga ( C
) diluncurkan secara teratur, bukan dengan cgexec.
Setelah semuanya aktif dan berjalan, C
dapatkan 66% dari CPU sementara A
dan B
bagi 33%. Jika saya bunuh C
maka A
dan B
dapatkan masing-masing 50% (seperti yang diharapkan).
Mengapa C
mendapat 66%? Saya akan mengharapkan masing-masing 33% dalam skenario ini, atau mungkin 50% (C), 25% (A) dan 25% (B). 66% tidak akan C
berhasil tidak peduli bagaimana saya menghitungnya.
Secara umum, saya ingin memahami bagaimana proses diluncurkan tanpa cgexec
berinteraksi dengan proses yang diluncurkan dengan cgexec
ketika datang ke berbagi sumber daya (CPU pada khususnya, tetapi jawaban yang lebih umum akan dihargai jika tidak terlalu rumit).
top
dan saya percaya mereka dimulai cukup hanya dari prompt perintah: cgexec -g cpu:foo myprogram
dan ./myprogram
. Sudah lama jadi saya tidak ingat dengan pasti.
cpu.shares
adalah opsi konfigurasi yang sangat aneh; Saya merekomendasikan pemisahan hal-hal oleh CPU jika memungkinkan menggunakan cpuset.cpus
sebagai gantinya.