Hitung jumlah CPU yang diizinkan dalam wadah Docker

Skenario spesifik saya adalah sebagai berikut. Saya meluncurkan wadah docker dengan CPU 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 pada titik tertentu. Saya ingin mencari tahu apa yang baik jumlah pekerjaan (-j) akan. Saya tentu saja dapat meneruskan jumlah CPU yang dialokasikan melalui lingkungan, tetapi cara otomatis untuk mendeteksinya akan lebih disukai.

Saya tahu saya bisa 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 cara mengambil jumlah sebenarnya dari CPU yang diizinkan. Saya ingin menghindari parsing output dari perintah tersebut atau mengutak-atik Cpus_allowed masker, tetapi akan melakukannya, ketika keluar dari pilihan.

Anda dapat menggunakan nproc alat skrip shell.

Jadi itu akan menjadi -j$(nproc) di baris perintah make yang dimaksud.

` nproc ’ - cetak jumlah unit pemrosesan yang tersedia

@ Brian itu terlalu mudah.