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 tersedia