สถานการณ์เฉพาะของฉันมีดังต่อไปนี้ ฉันเปิดตัว 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
- พิมพ์จำนวนหน่วยประมวลผลที่มีอยู่