Kịch bản cụ thể của tôi là như sau. Tôi khởi chạy một container docker với một cpuset cụ thể:
docker run --cpuset-cpus="0-2" # ...
bên trong container đó tôi chạy một kịch bản shell là điểm vào và kịch bản shell đó sẽ chạy maketại một số điểm. Tôi muốn tìm ra một số lượng tốt các công việc ( -j) sẽ là gì. Tất nhiên tôi có thể vượt qua số lượng CPU được phân bổ thông qua môi trường, nhưng một cách tự động để phát hiện nó sẽ được ưu tiên hơn nhiều.
Tôi biết tôi có thể sử dụng taskset -c -p $$hoặc cat /proc/self/status | grep Cpus_allowed_listtruy xuất Cpus_allowedquy trình hiện tại, nhưng tôi không biết cách truy xuất số lượng CPU thực tế được phép. Tôi muốn tránh phân tích cú pháp đầu ra của các lệnh đó hoặc thay đổi với Cpus_allowedmặt nạ, nhưng sẽ thực hiện nó khi không có tùy chọn.
nproc- in số lượng đơn vị xử lý có sẵn