Memory Contention (مقابله با کمبود مموری)

Memory Contention

مجازی سازی

رایانش ابری

تا به حال به احتمال زیاد برای شما هم پیش آمده که Memory یک Host شما پر شده باشد و تنها چند گیگ فضا داشته باشد. در این شرایط ESXi سعی می کند با خالی کردن فضای Memory با این مشکل مبارزه کند. به طور کلی ESXi برای این شرایط 4 عکس العمل دارد که در ادامه این مطلب به آن می پردازیم .

پر شدن فضای Memory باعث می شود که ابتدا سرعت ماشین های مجازی کاهش یابد و در نهایت باعث می شود که تمام ماشین های مجازی متوقف شده و سرویس ها به صورت کامل مختل شوند.

مکانیزم هایی که به ترتیب بررسی خواهیم کرد از این اتفاقات جلوگیری می کند.

 

  • Transparent Page Sharing

برای فرا گرفتن این مطلب ابتدا باید بدانیم که سیستم Memory ماشین های مجازی چگونه کار می کند.

زمانی که به ماشین های  مجازی مقدار خاصی Memory اختصاص می دهیم ، این مقدار Memory را در قالب Page های مختلف از Memory ذخیره می کند. حال سوال این است که اگر 20 عدد ویندوز داشته باشیم آیا احتیاج است که 20 بار DLL های ویندوز را در Memory قرار دهیم.

قابلیتی وجود دارد که می تواند به جای اینکه 20 بار DLL ها را در Cache قرار بدهد، یکبار آنها را در Memory قرار دهد و 19 بار دیگه آن را پاک کند که تقریبا شبیه به Deduplication می باشد. پس ESXi با دیدین Page های شبیه به آن یکی از آنها را پاک می کند تا فضای Memory خالی گردد.

این اتفاق متاسفانه زمانی که مموری پر نشده است کار نمی کند و دلیل آن به شرح زیر می باشد.

به طور پیش فرض اندازه Page ها 3 مگابایت می باشد و ESXi با خود می گوید که این مقدار بسیار زیاد است و امکان اینکه 2 Page 3 مگابایتی با هم یکی باشند ، بسیار کم است برای همین از TPS استفاده نمی شود. اما زمانی که مموری سرور ESXi پر شود ، این Page ها به قطعه های کوچکتری شکسته می شود که این امر به Deduplication کمک می کند.

یعنی ESXi با خود می گوید زمانی که سایز این Page ها 8 کیلو بایت باشد احتمال یکی بودن، دو یا چند Page را بسیار بالا می برد که در اینصورت ESXi تمام Page های اضافه را حذف می کند.

ESXi_TPS_Image

  • Ballooning

ماشین های مجازی فکر می کنند که مموری که به آنها اختصاص داده شده است ، مموری واقعی یا فیزیکی می باشد ولی در اصل اینطوری نیست.برای همین ماشین های مجازی هر چیزی که در داخل مموری خود قرار می دهد حتی اگر هم با آن کار نداشته باشد هیچ تلاشی برای پاک کردنش نمی کند.

این اتفاق زمانی که ما مموری زیاد داریم مورد بخشش است و می توانیم به ماشین های مجازی اجازه دهیم از تمام مموری استفاده کند . اما زمانی که مقدار مموری در دست یک سرور کاهش پیدا می کند باید ماشین ها از حداقل مموری استفاده کنند برای همین باید تمام فایل هایی که در Cache دارند و از آنها استفاده نمی کنند را پاک کنند. این امر توسط یک درایوری صورت می گیرد که در داخل VMware Tools  وجود دارد و اسم آن VMMEMCTL می باشد. این راهکار تمامی فایل های اضافه در مموری و Page Sharing را که مورد استفاده قرار نمی گیرند را پاک سازی می کند.

balloon-diagram

 

  • Compression

در این مدل سرور ESXi با فشرده سازی مموری ماشین های مجازی فضایی را بر روی سرور خالی می کند که این امر نیز باعث افزایش فضای خالی هر ذخیره سار میدهد.این لایه آخرین خط دفاعی در برابر استفاده بیش از حد از مموری می شود.

MemoryCompression

 

  • SWAP

بدترین شرایط برای مقابله با استفاده بیش از حد از مموری، ایجاد کردن SWAP توسط ESXi می باشد.

این موضوع به این دلیل بد است که ESXi از داخل ماشین های مجازی هیچ خبری ندارد و نمی داند کدام اطلاعات را در داخل مموری باید بگذارد و کدام اطلاعات را در داخل هارد ها SWAP کند، به همین دلیل این کار اشتباه ترین کارممکن است ولی در مرحله ای که به اینجا می رسیم چاره ای به غیر از این نخواهیم داشت.

image008

نظرات