ยังคงมีการใช้งานสำหรับความไม่สมดุลของฮาร์ดแวร์ที่ทันสมัยหรือไม่?


39

ก่อนหน้านี้มีการถามคำถามนี้ แต่ฉันเชื่อว่าโลกเปลี่ยนไปมากพอที่จะให้ถามอีกครั้ง

irqbalance มีการใช้งานในระบบทุกวันนี้ที่เรามีซีพียูที่รองรับ NUMA ที่มีการแชร์หน่วยความจำระหว่างคอร์หรือไม่?

การรันirqbalance --oneshot --debugแสดงให้เห็นว่าแขกเสมือนบนสภาพแวดล้อม VMware ESXi ที่ทันสมัยกำลังแบ่งปันโหนด NUMA ระหว่างคอร์

# irqbalance --oneshot --debug 3
Package 0:  numa_node is 0 cpu mask is 0000000f (load 0)
    Cache domain 0:  numa_node is 0 cpu mask is 0000000f  (load 0)
            CPU number 0  numa_node is 0 (load 0)           
            CPU number 1  numa_node is 0 (load 0)
            CPU number 2  numa_node is 0 (load 0)
            CPU number 3  numa_node is 0 (load 0)

ในกรณีนี้ irqbalance จะตรวจพบว่ามีการเรียกใช้บนระบบ NUMA และออก สิ่งนี้ยุ่งเหยิงไปกับกระบวนการตรวจสอบของเรา

เราควรพิจารณาการใช้numadแทน irqbalance ในระบบดังกล่าวหรือไม่?

สิ่งนี้น่าสนใจสำหรับเซิร์ฟเวอร์เสมือนของ VMware

คำตอบ:


27

นี่คือหนึ่งคำตอบจากช่างเทคนิคใน RedHat แม้ว่าฉันจะเชื่อว่าฮาร์ดแวร์ขององค์กรส่วนใหญ่มีความสามารถ NUMA และเท่าที่ฉันรู้ VMware จะพยายามปรับให้เหมาะสมกับ VMs ของคุณบนโหนด NUMA เดียวกันตราบใดที่การกำหนดค่า CPU ของมันเหมาะสม

ประสบการณ์ (โดยเฉพาะเกี่ยวกับ VMware) จะได้รับการชื่นชมอย่างมาก

นี่เป็นความจริง "เพราะ" ของเซิร์ฟเวอร์ที่ทันสมัย โปรดทราบว่า Multi-CPU / Muli-Core นั้นไม่เหมือนกับ NUMA มีระบบ Multi-CPU / Core จำนวนมากที่ไม่มี NUMA

ก่อนอ่านคำอธิบายของฉันด้านล่างโปรดอ่านเอกสาร IRQ Affinity ด้านบนรวมถึงคำแนะนำต่อไปนี้:

คู่มือการปรับแต่ง RHEL 6

การปรับแต่งประสิทธิภาพ Latency ต่ำสำหรับ RHEL 6

อ่านแล้วทั้งหมดเหรอ? เยี่ยมมากคุณต้องไม่ต้องได้ยินอะไรเพิ่มเติมจากฉัน! ;-) แต่ในกรณีที่คุณใจร้อนนี่คือเหตุผลที่คุณต้องการพวกเขา ...

IRQbalance ป้องกันการร้องขอ IRQ ทั้งหมดจากการสำรองข้อมูลบน CPU เดี่ยว ฉันได้เห็นระบบจำนวนมากที่มี 4 คอร์ซีพียูทำงานช้าเพราะกระบวนการทั้งหมดในซีพียูต่างๆกำลังรอซีพียู 0 เพื่อประมวลผลเครือข่ายหรือจัดเก็บคำขอ IRQ CPU 0 ดูยุ่งมาก CPU อื่น ๆ ทั้งหมดไม่ยุ่ง แต่แอพช้ามาก แอพช้าเพราะพวกเขากำลังรอคำขอ IO จาก CPU 0

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

คุณควรใช้ irqbalance เว้นแต่:

คุณกำลังปักหมุดแอปของคุณ / IRQ ไปยังคอร์เฉพาะด้วยตนเองด้วยเหตุผลที่ดีมาก (เวลาแฝงต่ำ, ความต้องการเรียลไทม์ ฯลฯ )

แขกเสมือน มันไม่สมเหตุสมผลเพราะถ้าคุณตรึงผู้เยี่ยมชมเฉพาะซีพียูและ IRQ และฮาร์ดแวร์ / การจัดเก็บข้อมูลโดยเฉพาะคุณจะไม่เห็นประโยชน์ที่คุณทำกับโลหะเปลือย แต่ KVM โฮสต์ / RHEV ของคุณควรจะใช้ irqbalance และnumadและปรับ

เครื่องมือปรับแต่งที่สำคัญอื่น ๆ ได้แก่ โปรไฟล์ที่ปรับจูนและจำนวน อ่านเกี่ยวกับพวกเขา! ใช้มัน!

Numad คล้ายกับ irqbalance ซึ่งพยายามทำให้แน่ใจว่ากระบวนการและหน่วยความจำอยู่ในเขต numa เดียวกัน ด้วยหลายคอร์เราเห็นการลดความหน่วงที่สำคัญส่งผลให้ประสิทธิภาพที่เชื่อถือได้ราบรื่นขึ้นภายใต้แรงกระทำ

หากคุณมีทักษะขยันหมั่นเพียรและตรวจสอบอย่างสม่ำเสมอหรือมีปริมาณงานที่คาดการณ์ได้มากคุณอาจได้รับประสิทธิภาพที่ดีขึ้นโดยการปักหมุดกระบวนการ / IRQ ไปยัง CPU ด้วยตนเอง แม้ในสถานการณ์เหล่านี้ความไม่สมดุลและตัวเลขก็เข้ามาใกล้มาก แต่ถ้าคุณไม่แน่ใจหรือภาระงานของคุณไม่แน่นอนคุณควรใช้ irqbalance และ numad


5
FWIW บางคู่มือ 10GbE ขอแนะนำให้ปิดการใช้งาน irqbalance ที่จะได้รับผ่านดีกว่า ...
rogerdpack

8
เพื่อให้ได้จำนวนสูงสุดอย่างแน่นอนเพื่อให้ตรงกับหมายเลขมาตรฐานของพวกเขาใช่คุณต้องรวมสิ่งต่าง ๆ เข้าด้วยกันในทางใดทางหนึ่ง แต่โดยทั่วไปเกณฑ์มาตรฐานเหล่านี้ไม่ตรงกับงานในชีวิตจริง หากคุณมีแอปพลิเคชั่นหนึ่งตัวที่ทำงานอยู่ในเซิร์ฟเวอร์ที่มีความต้องการความละเอียดอ่อนมากในรูปแบบการใช้งานที่คาดเดาได้ดีให้ดำเนินการต่อและกำหนดค่าความสัมพันธ์ของตัวประมวลผลด้วยตนเองสำหรับสิ่งต่างๆ แต่ถ้าแอปพลิเคชันเป็นกรณีการใช้งานในโลกแห่งความเป็นจริงมากกว่าซึ่งสิ่งต่าง ๆ อาจแตกต่างกันไปตามกระบวนการและโหลดที่หลากหลายฉันเห็นด้วยกับเทคโนโลยี Red Hat Linux NUMA balancing กำลังดำเนินไปอย่างดี
GeorgeB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.