วันเสาร์ที่ 25 ตุลาคม พ.ศ. 2557

NUMA Architecture รู้ไว้ช่วยเรื่อง Virtual Machine Performance ได้

clip_image0015
NUMA (Non-Uniform Memory Access) เป็นสถาปัตยกรรมระหว่าง CPU กับ Memory ของ Multiprocess (SMP) โดยจะแบ่ง CPU และ Memory เป็นชุดๆ เรียกว่า Node ครับ โดยจะเรียก CPU และ Memory ที่อยู่ Node เดียวกันว่า Local Node และเรียก CPU และ Memory ที่อยู่ต่าง Node ว่า Remote Node เมื่อมีใช้งาน CPU หรือ Memory ข้าม Node นั้นจะช้ากว่าการที่ใช้งาน Local Node มากครับ ทำให้เมื่อมีการใช้งานข้าม Node จะทำให้มีผลในเรื่องของ Preformance พอสมควรครับ (ข้อมูลในเชิงลึกค้นหาใน Intrernet นะครับ ที่ผมจะเขียนถึงนี้จะเป็นแนวทางในการนำมาใช้งานกับ VMware ร่วมถึง Hyper-V ด้วย) ในการใช้งานจริงนั้นถ้าทำการกำหนด Virtual Machine เช่น 4 vCPU Memory 8 GByte ถ้า NUMA Node ของ Physical Server เกิน 1 NUMA Node ก็จะไปใช้งานใน Remote Node ทำให้ Performance Drop ได้ เพราะฉะนั้นในการจัดหา Physical Server ควรคำนึงถึงการนำมาใช้งานด้วยว่า Max ของ Virtual Machine นั้นต้องใช้เท่าไรแล้วจัดหา Physical Server ให้เหมาะสมกับการนำมาใช้งานจะได้ Preformance ที่ดีครับ ผมขอนำตัวอย่าง Physical Server มาให้ดูแล้วอธิบาย พร้อมทั้ง Command ในการดู NUMA Node ดังนี้นะครับ
Numa-03

ESXi Server ตามรูปจะเป็น DELL C6145 CPU 4 Sockets 16 Core = 64 Core Memory 1 TByte เมื่อทำการ Run Command ก็จะเห็นดังรูปด้านล่างว่า มี NUMA Node 8 Node ครับ

Numa-02

Run Command ที่ ESXi Server เพื่อดูว่ามี NUMA Node มีอยู่กี่ Node เพื่อใช้งานการออกแบบ VIrtual Machine Command esxcli hardware memory get | grep NUMA เพื่อดูว่า Physiacl Server มี NUMA Node เท่าไรครับ ในกรณีนี้ผมใช้ Server 4 CPU Socket ละ 16 Core Memory 1024 GByte เมื่อ Run Command ก็จะบอกว่า NUMA Node 8 Node ทำให้เรารู้ว่าต่อ 1 NUMA Node จะเท่ากับ 1024 / 8 จะได้ 1 Node เท่ากับ 8 CPU Core และ Memory 128 GByte ดังนั้นในทางปฎิบัติถ้าจะไม่ให้ข้าม NUMA Node ก็ควรให้ Virtual Machine ไม่ควรเกิน 8 vCPU Memory 128 Gbyte นั้นเองครับ ถ้ากรณีต้องใช้เกินก็จะมีทางช่วยให้ Performance ไม่กระทบมากนักนั้นก็เป็นคือเลือกใช้งาน  Software ที่ Support NUMA อย่าง Windows 2008, WIndoiws 2012 นั้น Support NUMA ก็จะทำการเรียกใช้งาน Process ต่างๆ ไม่ให้เกิน 1 Node SQL Server ตั้งแต่ 2005 ขึ้นไปก็ Support NUMA ครับ Software ใหม่จะ Support NUMA แล้วโดยจะมีคำว่า NUMA-aware  ถ้า Software ตัวไหนมีคำว่า NUMA-aware ก็จะ Support NUMA จะทำให้ช่วยลดปัญหาเรื่องการใช้งานข้าม NUMA Node ได้ครับ Linux Server ก็ Support แล้วครับ

Web นี้อธิบายเรื่อง NUMA ได้ดีมากครับลองเข้าไปอ่านได้เลยครับเห็นภาพเลยว่ามีผลกระทบกับ VIrtual Machine อย่างไร Link NUMA Concept มี Video ให้ดูด้วยเข้าใจง่ายครับ

ผมหวังว่าบทความนี้จะช่วยให้การใช้งาน Virtual Machine ได้อย่างมีประสิทธิภาพมากขึ้นครับ เจอกันในบทความหน้าครับ

ข้อมูลเพิ่มเติมเกี่ยวกับ NUMA
Link : VMware What is NUMA
Link : Understanding Non-uniform Memory Access
Link : How SQL Server Supports NUMA
Link : Optimizing Applications for NUMA

ไม่มีความคิดเห็น: