ESXI Host server

ازاى يكون عندك ESXI Host server عليه 64GB من الرامات Memory وانت عامل 5 من VMs كل واحده 12 GB من Memory وتروح على ESXI Host Server بتاعك وتلاقى ان لسه فيه 20 GB من Memory لسه متاحه ؟ طول لو الوقت بنسمع مصطلح overcommitting طيب ياترى VMware بتوصل للنقطه دى ازاى عشان تفهم الجزء ده هات قهوتك وركز معايا

قبل ما نبداء فى شرح الفكره خلينا نعرف شويه معلومات اساسيه

Memory Page
بدون الدخول فى اي تعقيد الموضوع باختصار اى بروسيس Process نظام التشغيل OS هيبتدى ينفذها بيحولها الى Logical Memory وال Logical Memory دي بتكون موجوده على Storage وبتتقسم الى Memory page لاجزاء متساويه وبتتكون من رقم بيكون 2 اوس حاجه يعنى ممكن يكون 2 اس 2 او 2 اس 3 وبعدين بيروح يحطها فى Physical Memory ولان Physical Memory متقسمه الى Frame برضوا اجزاء متساويع ساعتها هنحتاج الى Page Table يقدر يقولنا ان Memory page اللى رقمها كذا مثلا logical address موجوده فى Frame اللى رقمه كذا physical Address وده بيحلنا مشكله الفرجمنتيشن وساعتها CPU لما بيجى يقوم باى عمليه فى وحده معالجه اسمها MMU ودر اختصار Memory Management Unit (MMU) هى اللى بتروح تشوف Page Table وتجيب منها المعلومات عشانCPU يعرف يروح لاى جزء فى Physical Memory عشان يشوف الدتا ويعملها بروسيس انا مش عاوز اتعمق اكتر من كده فى النقطه دى لانها فعلا كبيره جدا ومعقده وتقدر تعرف عنها اكتر لو تحب

Overcommitting
مصطلح overcommitting معناه انى مثلا عندك ESXI Server فيه 20 GB من Memory وانت عامل 5 من VMs كل واحده فيها 4GB من memory مجموعهم هيبقى 20 GB بس انت روحت على ESXI Server بتاعك لاقيت ان لسه فى 10GB من Memory لسه متاحه available هو ده بالزبط فكره overcommitting انى اقدر اخليك تستخدم اكتر من الموجود بطريقه ما وVMware بتستخدم اكتر من طريقه عشان تقدر توصل للنقطه دى
1. Transparent Page Sharing
2. Memory ballooning
3. Memory Compression
4. Hypervisor-level memory swapping
احنا كنا شرحنا Memory ballooning تعالو النهارده نشرح Transparent Page Sharing (TPS)

VMware Transparent Page Sharing (TPS)
هو تكنيك بتستخدمه VMware موجود بالتحديد ESXI hypervisor بيقدر يتتبع ويحدد Memory page المتطابقه الموجوده فى VMs اللى عليها نفس OS وبيحط عليها hash value وبعدين يبتدى يقارن Memory page دى bit by bit فى حاله انه لاقى فى تطابق Memory page اللى موجوده فى نفس VMs بشرط تكون نفس OS وموجوده على نفس ESXI Host Server هيحط Memory Page دى مره واحده بس فى Physical Memory وهيحط تحديد مسار او مرجع Pointer يعرف بيها VMs المشتركه فى نفس Memory page مكان Memory page فى Physical Memory بمعنى اننا استخدمنا مساحه Memory page واحده بس فى Physical Memory وبقيت VMs استخدمت Pointer عشان تعرف تروح الى Memory page ساعتها هنكون وفرنا مساحه Memory page المشتركه

من اول اصدار vSphere 6 بقى عندنا نوعين من Transparent Page Sharing (TPS) وهما Intra-VM – TPS , Inter-VM – TPS

Inter-VM – TPS
النوع ده هيقدر يتتبع ويحدد Memory page المتطابقه الموجوده فى كل VMs اللى عليها نفس OS والموجوده على نفس ESXI Host Server وهيستخدم نفس التكنكيك اللى شرحناه فوق انه لو لاقى اي تطابق هيحط Memory page مره واحده بس فى Physical Memory وبقيت VMs هتقدر توصلها عن طريق Pointer والنوع ده بيكون مقفول disable فى الاعدادت الاساسيه default setting لبعض الاسباب الامنيه

Intra-VM – TPS
النوع ده هيقدر يتتبع ويحدد Memory page المتطابقه الموجوده فى نفس VM وهيستخدم نفس التكنكيك اللى شرحناه فوق انه لو لاقى اي تطابق هيحط Memory page مره واحده بس فى Physical Memory وبقيت الامكان المكرره هتقدر توصلها عن طريق Pointer ومش هيشارك Memory page مع اي VMs تانيه والنوع ده بيكون مفتوح enable فى الاعدادت الاساسيه default setting

ومش بس كده VMware كمان عملت لينا salting بسبب بعد المشاكل الامنيه فى Transparent Page Sharing (TPS) وفكره عمل salting هى اضافه Advanced Option على ESXI Host Server بتقدر تتحكم منه فى عمليه Transparent Page Sharing (TPS) الاوبشين ده هتلاقى موجود فى ESXI  Advanced System Setting اسمه Mem.ShareForceSalting وهتلاقى القيمه بتاعته 2 بمعنى ان Transparent Page Sharing (TPS) شغاله بنظام Intra-VM وال Memory page مش هيحصلها اى مشاركه مع اى VMs تانيه
طيب لو غيرنا القيمه دى الى 1 ساعتها Transparent Page Sharing (TPS) هتبقى شغاله بنظام Inter-VM وال Memory page المتطابقه هيحصلها مشاركه Sharing مع نفس VMs اللى هتكون نفس OS وموجوده على نفس ESXI Host Server وكمان القيمه الموجوده فى sched.mem.pshare.salt واحده طيب لو غيرنها الى 0 وده معانه اننا قفلنا salting خالص Transparent Page Sharing (TPS) هيتشغل بالفكره الاساسيه ولكن ده هيكون خطر على الشبكه High Risk والاعدادات الاساسيه لل Mem.ShareForceSalting هى القيمه 2 عشان كده قولنا ان فى الاعدادات الاساسيه Intra-VM مفتوحه و ال Inter-VM مقفوله
يعنى نفهم من كل الكلام اللى احنا قولنا ده ان فكره salting هى تحكم control وزياده مستوى الامان Security فى Transparent Page Sharing (TPS)

اخيرا لازم تكون عارف ان Transparent Page Sharing (TPS) مابتشتغلش مع Large Memory Pages وبتشتغل مع Default اللى هى بتكون 4 KB وكمان فى حاله انك غيرت اعدادات Transparent Page Sharing (TPS) مش محتاج تعمل reboot لل ESXI يكفى انه تعمل Migrate لل VMs الى ESXI تانى وترجعهم تانى على نفس الهوست
ولو حبيت تشوف Transparent Page Sharing (TPS) وتشوف انت وفرت Memory اد ايه من Transparent Page Sharing (TPS) مافيش غير انك تطبق امر ESXTOP مع M عن طريق SSH

اتمنى اكون وصلت الفكره ببساطه