อะไรคือผลกระทบของลำดับความสำคัญและนโยบายของเธรดใน cpuset ที่ไม่มีการควบคุม


12

ฉันมีระบบลีนุกซ์ที่เราใช้ cgroups เพื่อสร้างสอง cpu_exclusive cpusets, A และ B และที่ที่เราโอนย้ายเธรดผู้ใช้ทั้งหมดและเคอร์เนลเธรดที่ไม่ได้ผูกทั้งหมดไปยัง cgroup ที่แนบกับ cpuset A สิ่งที่ทำงานใน cpuset A มีนโยบายที่แตกต่างกัน และลำดับความสำคัญที่แตกต่างกันและมีหลายเธรดที่ทำงานอยู่ใน cpuset A มากกว่าที่มีแกนใน cpuset A

นอกจากนี้ยังมีโพรเซสที่ใช้งานอยู่จำนวนเล็กน้อยที่เชื่อมต่อกับ cpuset B ซึ่งจำนวนเธรดผู้ใช้ทั้งหมดในกระบวนการเหล่านี้ไม่เคยมากกว่าจำนวนคอร์ที่มีเฉพาะใน cpuset B เป้าหมายคือเพื่อป้องกันงานสำคัญเหล่านี้ที่ทำงานใน cpuset B จากกิจกรรมอื่น ๆ บนเครื่องและเพื่อลดความหน่วงในการประมวลผล

ในการตั้งค่าเช่นนี้นโยบายการกำหนดเวลา / ลำดับความสำคัญของเธรดผู้ใช้ที่ทำงานใน cpuset B มีผลที่สังเกตได้หรือไม่? ระบุไว้แตกต่างกัน: จะเปลี่ยนนโยบายการตั้งเวลาของเธรด B cpuset จาก SCHED_OTHER เริ่มต้นเป็น SCHED_FIFO หรือ SCHED_RR มีผลกระทบใด ๆ ดีหรือไม่ดี

ดูเหมือนว่าคำตอบควรเป็น 'ไม่' เนื่องจากตัวกำหนดตารางเวลาควรสามารถกำหนดแต่ละเธรดที่ทำงานใน cpuset B ของแกนหลักเฉพาะของตัวเองดังนั้นจึงไม่มีอะไรจะจัดลำดับความสำคัญหรือกำหนดเวลาดังนั้นนโยบายและลำดับความสำคัญสัมพัทธ์ของ B หัวข้อ cpuset จะไม่สำคัญ ในทางตรงกันข้ามมีเคอร์เนลที่ถูกผูกไว้และแง่มุม 'โดเมนของตัวกำหนดตารางเวลา' ที่ต้องกังวลและอาจเป็นอย่างอื่นที่ฉันไม่ได้พิจารณา

นโยบายการกำหนดตารางเวลาและลำดับความสำคัญของเธรดที่ทำงานใน cpuset พิเศษที่มีการ overprovisioned ไม่ว่าจะเป็นในทางปฏิบัติหรือไม่?

คำตอบ:


4

การแบ่งเวลาที่ใช้จะสำคัญสำหรับงานที่ใช้งาน CPU มากซึ่งต้องใช้การคงอยู่ของแคชเว้นแต่คุณจะล็อกแกนหลักเฉพาะกับแต่ละ PID คุณสามารถเพิ่มการแบ่งเวลาด้วยนโยบายตัวกำหนดตารางเวลา SCHED_BATCH และปรับปรุงประสิทธิภาพได้ถึง 300% ในบางกรณีในขณะที่ลดการตอบสนองแบบโต้ตอบ ผลตรงกันข้ามของตัวแบ่งเวลาขนาดเล็กเกิดขึ้นกับ SCHED_RR (ซึ่งจะลดปริมาณงาน แต่เพิ่มการตอบสนองแบบเรียลไทม์)

คุณสามารถใช้ schedtool เพื่อตั้งค่านโยบายของ PID เฉพาะสำหรับ PID ทั้งหมดในชุด B เป็นคำสั่งเดียว นอกจากนี้ยังสามารถใช้เพื่อล็อค PID ที่เฉพาะเจาะจงไปยังแกนที่เฉพาะเจาะจงซึ่งจะเป็นทางออกที่ดีที่สุดตั้งแต่นั้นมาการคงอยู่ของแคชไม่ขึ้นอยู่กับการแบ่งเวลาอีกต่อไป แต่จะต้องใช้ความพยายามมากขึ้นเนื่องจากคุณต้องเรียกใช้คำสั่ง


1

หากแต่ละกระบวนการมีแกนเป็นของตัวเองก็จะไม่มีข้อ จำกัด ด้านลำดับความสำคัญ

อย่างไรก็ตามหากคุณกำหนดเวลากระบวนการที่ใช้เวลา 30 นาทีในการทำงานทุก ๆ 15 นาทีคุณจะต้องมีการจัดลำดับความสำคัญเนื่องจากกระบวนการจะเริ่มทับซ้อนกัน

อย่างไรก็ตามไม่มีนโยบายการตั้งเวลาที่ดีที่สุด

พวกเขาขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ แต่ในตอนแรกฉันจะปล่อยให้ SCHED_OTHER เป็นค่าเริ่มต้นและสังเกตสักพักก่อนที่ฉันจะลองทำอะไรที่เชี่ยวชาญมากกว่านี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.