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.