Uniform memory access

لو بعمل VM جديده اعدادتها 32 CPU و 64 Memory هل لو عملت 32 CPU على Socket واحد هتفرق عن لو عملتهم على اتنين Socket او اكتر وهل ده هياثر على اداء performance الخاص ب VM ولا لاء

عشان اجوبك على السؤال فلازم نفهم الاول ايه هو UMA وايه NUMA وايه VNUM وايه علاقتها باداء VM Performance هات قهوتك وركز معايا

UMA

هى اختصار Uniform memory access وهى نظام بيستخدمه CPU عشان يقدر يعمل Access على Memory عشان يقدر ياخود الدتا يعملها معالجه process خلينى اقولك انه نظام قديم جدا ومش هتسمع عنه غير فى الكتب وفكرته ان لما يكون عندك اكتر من CPU فى السرفير بتاعك الCPU بتقدر تاكسس Memory كلها عن طريق واحد بس بنسميه System Bus وده بيسبب بطئ فى النظام لانه تخيل معايا كده البروسيسور بتاعتك كلها عاوز تاكسس الميميورى الموجوده على السرفير كلها عن طريق واحد بس اللى هو System Bus واللى بينظم عمليه الاكسس دى هو Memory Controller فطبيعى جدا يكون فى بطئ فى معالجه البيانات

NUMA

هى اختصار Non-Uniform Memory Access وهى حل لمشكله UMA بمعنى ان النظام عندنا هيكون فى اكتر من System Bus تمام وهنخلى لكل برسيسور مجموعه من الميمورى هنسميها Local Memory بحيث ان CPU لما يحب يعمل معالجه لداتا موجوده على Local Memory بتاعته هتبقى اسرع لانه هيستخدم System Bus الخاصه بيه اللى بتخليه ياكسس Local Memory بتاعته وهتبتدى نقسم عدد البرسيسور اللى عندنا على الميميورى بحيث ان كل CPU هيكون ليه Local Memory الخاصه بيه ولما CPU يحب ياكسس داتا موجوده على Memory خاصه ب CPU تانى فى الحاله دى الMemory دى بتكون لل CPU اسمها Remote Memory وعشان اوضحلك النقطه دى اكتر لو فتحت اى سرفير وبصيت على الميزربورد بتاعته هتلاقى كل برسيسور حواليه شويه ميمورى تحس انها خاصه بيه هو وهى فعلا خاصه بيه لان مجموعه الميمورى دى مع CPU ده على بعض كده بيكون اسمهم NUMA Node وزى ماوضحتلك الفكره اننا لو قدرنا نخلى الدتا اللى محتاج البرسيسور انه يعملها معالجه على Local Memory الخاصه بيه هيبقى الاداء اسرع ولكن فى حاله انه احتاج ياكسس الدتا الموجوده على Remote Memory اكيد هيكون فى بطئ وخلينا فكرين النقطه دى كويس عشان هنحتجها ادام

اهم نقطه لازم تخلى بالك من هنا وانت بتعمل دزين للESXI Server هى balance بين Memory وبين Socket بمعنى لو السرفير عندى فى 2 Socket وفيه 512 Memory ساعتها لازم وانا بركب الرامات اوزعها على السوكت اللى عندى بحيث يكون كل سوكيت ليه 256 Memory عشان اتجنب اى مشكال فى performance

CPU HYPER-THREADING

زى مااحنا عارفين ان Hyper-Threading هى خاصيه موجوده فى CPU بتمكنى ان اضعاف عدد البرسيسور بمعنى ان لو عندى السوكت فى 12 core مع Hyper-Threading هيكون عندى 24 logical CPU ونخلى بالنا من كلمه logical لان فى الحقيقى انا عندى 12 Core بس مش 24 core فكره Hyper-Threading انه عن طريق OS يقدر يخلى عدد الكور الموجود الضعف عن طريق انه هيعمل logical CPU وبيتدى يوزع عليهم المهام بحيث انه يستفيد اكتر استفاده من 12 Core الاساسين وانه يحسن الاداء بس خلينى اقولك بقى ان OS لازم يكون بيدعم Support خاصيه Hyper-Threading وكمان الابلكيشن لازم يكون بيدعم خصيه Hyper-Threading عشان تقدر تستفييد منها

وخلينى اقولك كمان ان نظام NUMA عندنا ما بيحسبش عدد Logical CPU لا هو بيحسب على Core بس وفى حاله انك عاوز تفعل نظام NUMA على VM معينه او على Host Server كله هتضيف الاعدادت دى numa.vcpu.preferHT = TRUE بس خلينى اقولك انك لازم تتاكد الاول من ان الابلكيشن الموجود على VM بيدعم Hyper-Threading وانك مش محتاج تفعلها علي ESXI ولا حتى على VM الا فى حالات محدوده جدا

vNUMA

من اول اصدار ESXI 4.1 وال VMware hypervisor بيقدر يعرف ويحدد NUMA بس فعلا من اول اصدار ESXI 5 بقت موجود الاعدادت الخاصه virtual NUMA وال vNUMهى ان VMware hypervisor بيقدر يخلى ال OS والابلكيشن يقدر يشوف ويتعامل مع NUMA Node وزى مافهمنا لو استخدمنا CPU Core وحطينا الداتا على Local Memory فى نفس NUMA Node الاداء بتاع VM هيكون اسرع وده هينعكس على ادائ الابكليشن كمان خلينى اديك مثال واقعى عشان نفهم الجزء ده بالتفصيل
من اول اصدار Windows Server 2008R2 والOS بيقدر يقرا 64 CPU Socket يعنى يقدر يقرا عدد رهيب من CPU لان زى ماعرفنا ان السكوت ممكن يكون جواه اكتر من Core ده غير Hyper-Threading اللى بتخلينى استخدم البرسيسور عندى باداء ضعف عدد الكور الموجوده وكمان خلينى اقولك ان Microsoft SQL Application موجود فيه خاصيه soft-NUMA اللى بتقدر تخليه يتعامل مع vNUMA وبيقدر يوزع الدتا بناءا على NUMA Node اللى موجوده على VMعشان يقدر يقدم افضل اداء واسرع معالجه للدتا

لو انت محتاج تعمل VMهيكون عليها SQL 2016 Standard Edition لو انت عملت اعدادت VM ان CPU يكون 8 Sockets x 1 Core per Socket ساعتها هيكون عندى 8 vCPU ولكن SQL هيقدريتعامل مع 4 vCPU من 8 vCPU لان SQL Standard Edition License بتدعم 4 Socket بس لكن لو عملت اعدادات VM انها تكون 1 Socket x 8 Cores per Socket ساعتهاSQL هيقدر يتعامل مع 8 vCPU لانها كلها فى Socket واحد كمان خاصيه soft-NUMA الموجوده فى SQL هتخلى اداء SQL Application افضل لو عملت الاعدادات مثلا 1 Socket x 8 Cores per Socket او انى عملتها 2 Socket x 4 Cores per Socket
https://learn.microsoft.com/…/soft-numa-sql-server…

من اول اصدار ESXI 6.5 حصل تحسينات كتير فى vNUMA اهمها vNUMA Considers Compute Only بمعنى انه لو عندى ESXI Server بتاعى عليه 2 physical Socket كل سوكت عليه 10 Cores وعليه 128 Memory يعنى انا عندى السرفير بتاعى على 20 core موجودين على 2 Socket وعندى 265 Memory

لو علمت VM اعدادتها 128 GB of RAM مع 1 Socket x 10 Cores per Socket ساعتها ESXI هيعملى vNUMA Node واحده وده طبيعى لكن لو عملت VM اعدادتها192 GB of RAM مع 1 Socket x 10 Cores per Socketساعتها ESXI هيعملى vNUMA Node واحده ولكن فى الحقيقه هيى هتكون شغاله على 2 physical NUMA Nodes ولكن عشان هو شغال Considers Compute Only فهيحسبها واحده وخلينى اقولك احسن اعدادت لل VM دى عشان نحصل على احسن اداء هى 96 GB of RAM مع 2 Socket x 5 Cores per Socket

طيب عشان اسهل عليك الموضوع وعشان ماتتغلبطش وانت بتعمل VM بتاعتك ديما خالى اعدادات vCPU نفس عدد Cores per Socket لحد ما تعدى او تكسر عدد physical core الموجوده فى Physical NUMA Node ساعتها هتبدى تقسم عدد Cores على عدد ال Socket ونفس الموضوع نطبقه على Memory لان زى مافهمنا كل ماكانت الدتا موجوده جوه NUMA Node كل ماكانت معالجتها اسرع

فى حاله انك محتاج تعمل VM اعدادتها اكتر من Physical Core اوMemory الموجوده جوه NUMA Node ساعتها حاول تقسم vCPU على اقل عدد Socket عشان تقدر تستخدم اقل عدد من NUMA Node

حاول ديما تتحقق وتتاكد من اعدادات VM الضخمه “Monster VM” قبل ما تعملها على virtualization technology عندك لانه فى الاغلب الفيندور بيكون مبالغ فى الاعدادات والابلكيشن مابيكونش محتاج كل الرسيورس دى وزى مااحنا فهمنا انه زياده الرسيسورس هتاثر على كفائه VM وعلى كفائه virtualization Platform كاكل

مش حابب اطول اكتر من كده ممكن نعمل مقال تانى نوضح فيها بعض الامور الزياده لو انطلب ده

اتمنى اكون فيدتكم لو بمعلومه بسيطه