Docker kapsayıcısındaki izin verilen CPU sayısını sayma


14

Benim özel senaryom şudur. Belirli bir cpuset ile bir docker konteyner başlatın:

docker run --cpuset-cpus="0-2" # ...

o kabın içinde giriş noktası olarak bir kabuk komut dosyası çalıştırıyorum ve bu kabuk komut dosyası makebir noktada çalışacak . Çok sayıda işin ( -j) ne olacağını bulmak istiyorum. Tabii ki tahsis edilen CPU sayısını ortamdan geçirebildim, ancak bunu tespit etmenin otomatik bir yolu çok tercih edilirdi.

Geçerli işlem için kullanabilirsiniz taskset -c -p $$veya cat /proc/self/status | grep Cpus_allowed_listalmak Cpus_allowedbiliyorum, ama izin verilen gerçek CPU sayısını almak için nasıl bilmiyorum. Bu komutların çıktısını ayrıştırmaktan veya Cpus_allowedmaske ile uğraşmaktan kaçınmak istiyorum , ancak seçeneklerin dışındayken yapacağım.


1
nproc- mevcut işlem birimi sayısını yazdırın
Brian

@Brian Bu çok kolaydı.
pmr

Yanıtlar:


19

nprocKabuk komut dosyası aracını kullanabilirsiniz .

Yani -j$(nproc)söz konusu make komut satırında olurdu .


1
"docker run --rm --cpus 2 debian nproc" -> 8?
Evan Benn

2
@EvanBenn --cpus="2"işlem birimi sayısını sınırlamaz ve eşdeğerdir -cpu-period="100000" and --cpu-quota="200000".
Brian
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.