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 make
tạ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_list
truy xuất Cpus_allowed
quy 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_allowed
mặ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