นับจำนวน CPU ที่อนุญาตในคอนเทนเนอร์ Docker


14

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


1
nproc- พิมพ์จำนวนหน่วยประมวลผลที่มีอยู่
Brian

@Brian นั่นมันง่ายเกินไป
pmr

คำตอบ:


19

คุณสามารถใช้nprocเครื่องมือเชลล์สคริปต์

ดังนั้นมันจะอยู่-j$(nproc)ในบรรทัดคำสั่งทำให้เป็นปัญหา


1
"นักเทียบท่าวิ่ง --rm --cpus 2 debian nproc" -> 8?
Evan Benn

2
@EvanBenn --cpus="2"ไม่ จำกัด -cpu-period="100000" and --cpu-quota="200000"จำนวนของหน่วยประมวลผลและเทียบเท่ากับ
Brian
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.