ฉันพยายามเรียกใช้การวัดแบบหลายเธรดในชุดของซีพียูแบบแยกตัว ตัดเรื่องยาวสั้นผมเริ่มพยายามกับisolcpusและtasksetแต่ตีปัญหา ตอนนี้ฉันกำลังเล่นกับ cgroups / csets
ฉันคิดว่ากรณีการใช้ "แบบง่าย" cset shieldควรใช้งานได้ดี ฉันมี 4 คอร์ดังนั้นฉันจึงต้องการใช้คอร์ 1-3 สำหรับการเปรียบเทียบ (ฉันได้กำหนดค่าแกนเหล่านี้ให้อยู่ในโหมดติ๊กปรับตัว) แล้วแกน 0 สามารถใช้กับทุกสิ่งอื่นได้
ต่อไปนี้การสอนที่นี่มันควรจะง่ายเหมือน:
$ sudo cset shield -c 1-3
cset: --> shielding modified with:
cset: "system" cpuset of CPUSPEC(0) with 105 tasks running
cset: "user" cpuset of CPUSPEC(1-3) with 0 tasks running
ดังนั้นตอนนี้เรามี "shield" ซึ่งแยกได้ (user cset) และ core 0 สำหรับทุกอย่าง (system cset)
เอาล่ะดูดีมาก htopตอนนี้ให้ดูที่ กระบวนการทั้งหมดควรย้ายไปยัง CPU 0:
ฮะ? กระบวนการบางอย่างจะแสดงเป็นทำงานบนแกนป้องกัน ในการแยกแยะกรณีที่ฮ็อพมีข้อผิดพลาดฉันก็ลองใช้tasksetเพื่อตรวจสอบความสัมพันธ์ของรูปแบบที่แสดงว่าอยู่ในโล่
บางทีงานเหล่านั้นอาจไม่สามารถเคลื่อนย้ายได้ ลองถอนกระบวนการโดยพลการแสดงว่าทำงานบน CPU3 (ซึ่งควรอยู่ใน shield) ในhtopและดูว่ามันจะปรากฏใน cgroup ระบบตามcset:
$ cset shield -u -v | grep 864
root 864 1 Soth [gmain]
vext01 2412 2274 Soth grep 864
อ๋อที่ทำงานบนระบบ cgroup csetตาม ดังนั้นhtopและcsetไม่เห็นด้วย
แล้วเกิดอะไรขึ้นที่นี่? ใครที่ฉันสามารถไว้วางใจ: ซีพียูชอบพอ ( htop/ taskset) หรือcset?
ฉันสงสัยว่าคุณไม่ควรใช้csetและชอบใจกัน บางทีโล่ทำงานได้ดีและฉันควรละเว้นมาสก์ความสัมพันธ์และhtopผลลัพธ์ ฉันพบความสับสนนี้ ใครบางคนสามารถส่องแสงบ้างไหม?
numactlและcgconfigและcgrules/ cgredเพื่อปรับปรุงสิ่งที่คุณทำ สิ่งเหล่านี้อาจใช้ได้สำหรับ Debian ที่มีงานบางอย่าง
