สถานการณ์เฉพาะของฉันมีดังต่อไปนี้ ฉันเปิดตัว docker container ด้วย cpuset เฉพาะ:
docker run --cpuset-cpus="0-2" # ...
ภายในคอนเทนเนอร์นั้นฉันเรียกใช้เชลล์สคริปต์เป็นจุดเริ่มต้นและเชลล์สคริปต์นั้นจะทำงานmakeในบางจุด ฉันต้องการทราบว่าจำนวนงานที่ดี ( -j) จะเป็นเท่าไหร่ แน่นอนว่าฉันสามารถส่งผ่านจำนวน CPU ที่จัดสรรผ่านสภาพแวดล้อม แต่วิธีตรวจสอบอัตโนมัติจะเป็นที่ต้องการมากกว่า
ฉันรู้ว่าฉันสามารถใช้taskset -c -p $$หรือcat /proc/self/status | grep Cpus_allowed_listดึงข้อมูลCpus_allowedสำหรับกระบวนการปัจจุบัน แต่ฉันไม่ทราบวิธีการเรียกจำนวน CPU ที่แท้จริงที่อนุญาต ฉันต้องการหลีกเลี่ยงการแยกวิเคราะห์ผลลัพธ์ของคำสั่งเหล่านั้นหรือเล่นซอกับCpus_allowedหน้ากาก แต่จะทำเมื่อไม่มีตัวเลือก
@Brian นั่นมันง่ายเกินไป
—
pmr
nproc- พิมพ์จำนวนหน่วยประมวลผลที่มีอยู่