Skenario spesifik saya adalah sebagai berikut. Saya meluncurkan wadah buruh pelabuhan dengan cpuset tertentu:
docker run --cpuset-cpus="0-2" # ...
di dalam wadah itu saya menjalankan skrip shell sebagai titik masuk dan skrip shell itu akan berjalan make
di beberapa titik. Saya ingin mengetahui berapa jumlah pekerjaan yang baik ( -j
). Saya tentu saja bisa melewati jumlah CPU yang dialokasikan melalui lingkungan, tetapi cara otomatis untuk mendeteksinya akan jauh lebih disukai.
Saya tahu saya dapat menggunakan taskset -c -p $$
atau cat /proc/self/status | grep Cpus_allowed_list
untuk mengambil Cpus_allowed
untuk proses saat ini, tetapi saya tidak tahu bagaimana cara mengambil jumlah aktual dari CPU yang diizinkan. Saya ingin menghindari parsing output dari perintah-perintah atau mengutak-atik Cpus_allowed
topeng, tetapi akan melakukannya, ketika keluar dari opsi.
nproc
- cetak jumlah unit pemrosesan yang tersediaJawaban:
Anda dapat menggunakan
nproc
alat skrip shell.Jadi itu akan berada
-j$(nproc)
di baris perintah make yang dimaksud.sumber
--cpus="2"
tidak membatasi jumlah unit pemrosesan dan setara dengan-cpu-period="100000" and --cpu-quota="200000"
.