
در بسیاری از زیرساختهای مجازیسازی، پردازنده دیگر تنها عامل محدودکننده تعداد ماشینهای مجازی نیست. ممکن است یک ESXi Host هنوز ظرفیت پردازشی مناسبی داشته باشد، اما به دلیل کمبود حافظه RAM نتوان ماشین مجازی بیشتری روی آن اجرا کرد. در چنین شرایطی، افزایش DRAM معمولاً اولین راهحل است؛ اما با افزایش ظرفیت سرورها، هزینه حافظه میتواند بخش قابلتوجهی از هزینه سختافزار را تشکیل دهد.
قابلیت Memory Tiering در VMware برای پاسخ به همین مسئله طراحی شده است. این فناوری به ESXi اجازه میدهد علاوه بر حافظه DRAM، از تجهیزات پرسرعت NVMe بهعنوان لایه دوم حافظه استفاده کند. در نتیجه ظرفیت حافظه قابل استفاده برای ماشینهای مجازی افزایش پیدا میکند، بدون اینکه تمام این ظرفیت الزاماً با DRAM گرانقیمت تأمین شود. البته Memory Tiering به این معنا نیست که NVMe میتواند بهطور کامل جای RAM را بگیرد. تفاوت سرعت و تأخیر میان DRAM و NVMe همچنان قابلتوجه است. آنچه VMware انجام میدهد، مدیریت هوشمند صفحات حافظه و قرار دادن دادههای فعال و غیرفعال در لایه مناسب است. قابلیت Memory Tiering ابتدا در vSphere 8.0 Update 3 بهصورت Tech Preview ارائه شد و سپس در VMware Cloud Foundation 9.0 به قابلیت عمومی یا GA تبدیل شد.
Memory Tiering در VMware چیست؟
Memory Tiering در VMware یک معماری دولایه برای مدیریت حافظه ESXi است. در این معماری، حافظه به دو بخش اصلی تقسیم میشود. لایه اول یا Tier 0 همان DRAM فیزیکی سرور است. این بخش سریعترین لایه حافظه محسوب میشود و صفحات حافظهای که بهطور مداوم توسط ماشینهای مجازی استفاده میشوند، در آن نگهداری میشوند. لایه دوم یا Tier 1 از NVMe پرسرعت تشکیل میشود. صفحاتی از حافظه که فعالیت کمتری دارند میتوانند به این لایه منتقل شوند.
ESXi بهصورت خودکار میزان فعالیت صفحات حافظه را ارزیابی میکند و تلاش میکند صفحات پرتکرار یا اصطلاحاً Hot را در DRAM و صفحات کماستفاده یا Cold را در NVMe نگه دارد. این مدیریت در سطح Hypervisor انجام میشود و سیستمعامل مهمان و برنامههای داخل ماشین مجازی معمولاً نیازی به تغییر ندارند. به زبان ساده، Memory Tiering تلاش میکند ظرفیت NVMe را به انعطافپذیری فضای حافظه اضافه کند، در حالی که DRAM همچنان لایه سریع اصلی باقی میماند.
اهمیت Memory Tiering در VMware
فرض کنید یک ESXi Host دارای پردازنده قدرتمندی است و CPU آن تنها ۴۰ تا ۵۰ درصد استفاده میشود، اما تقریباً تمام RAM سرور در اختیار ماشینهای مجازی قرار گرفته است. در این وضعیت، شما عملاً نمیتوانید تعداد زیادی VM جدید به Host اضافه کنید؛ حتی اگر پردازنده هنوز ظرفیت خالی داشته باشد.
بیشتر بخوانید: بررسی آسیبپذیریهای اجرای کد از راه دور در VMware NSX و ارائه چکلیست امنیتی مقابله با این تهدیدات
یکی از راهها اضافهکردن RAM است. اما در سرورهای دارای حافظه بالا، خرید DIMMهای پرظرفیت میتواند هزینه زیادی ایجاد کند و گاهی محدودیت تعداد DIMM Slot نیز وجود دارد. Memory Tiering اجازه میدهد بخشی از ظرفیت حافظه از طریق NVMe تأمین شود و در نتیجه تعادل بهتری میان منابع CPU و Memory ایجاد شود. VMware نیز یکی از اهداف اصلی این فناوری را بهبود نسبت Consolidation ماشینهای مجازی و استفاده بهتر از ظرفیت پردازنده اعلام کرده است.
افزایش ظرفیت حافظه ESXi با NVMe
فرض کنیم یک ESXi Host دارای ۱ ترابایت DRAM می باشد. در معماری معمولی، ظرفیت حافظه فیزیکی Host همان ۱ ترابایت است، اما با فعالسازی Memory Tiering و اضافهکردن NVMe مناسب، میتوان یک لایه حافظه ثانویه نیز در اختیار ESXi قرار داد. در پیکربندی پیشفرض فعلی Memory Tiering در VCF 9، نسبت DRAM به NVMe برابر 1:1 است. بنابراین یک Host با ۱ ترابایت DRAM میتواند در این مدل، ۱ ترابایت NVMe نیز به حافظه Tiered اضافه کند و ظرفیت منطقی بیشتری در اختیار Workloadها قرار دهد. اما نکته بسیار مهم این است که: 2 ترابایت حافظه منطقی به معنی داشتن ۲ ترابایت RAM با سرعت DRAM نیست.
جهت مشاوره رایگان و یا راه اندازی زیرساخت مجازی سازی دیتاسنتر با کارشناسان شرکت APK تماس بگیرید. |
DRAM همچنان سریعتر است و ESXi باید تصمیم بگیرد چه صفحات حافظهای در RAM باقی بمانند و چه صفحاتی به NVMe منتقل شوند. بنابراین هدف Memory Tiering افزایش ظرفیت با کمترین تأثیر ممکن بر Performance است، نه تبدیل NVMe به DRAM.
ESXi چگونه تصمیم میگیرد چه اطلاعاتی وارد NVMe شوند؟
مکانیزم Memory Tiering رفتار صفحات حافظه ماشینهای مجازی را بررسی میکند. صفحهای که دائماً توسط برنامه مورد استفاده قرار میگیرد، Hot Page محسوب میشود و نگهداری آن در DRAM اولویت دارد. در مقابل، ممکن است یک ماشین مجازی 64 GB RAM داشته باشد اما بخش قابلتوجهی از آن در یک بازه زمانی فعالیت کمی داشته باشد.
بیشتر بخوانید: بررسی آسیبپذیریهای VMware ESXi و تهدید VM Escape در زیرساختهای مجازی
این صفحات Cold میتوانند به Tier مبتنی بر NVMe منتقل شوند. اگر دوباره به آن داده نیاز باشد، ESXi میتواند آن را مدیریت کرده و صفحات موردنیاز را بین Tierها جابهجا کند. این رفتار پویا باعث میشود DRAM گرانقیمت بیشتر در اختیار Working Set فعال ماشینها قرار بگیرد. در نسخههای جدید،VMware همچنین مدیریت Memory Tiering را در سطح صفحات کوچک بهینه کرده است تا ESX بتواند تصمیم دقیقتری درباره Hot و Cold بودن صفحات بگیرد.
آیا Memory Tiering همان Swap است؟
خیر. این دو مفهوم نباید با یکدیگر اشتباه گرفته شوند. Swap در ESXi معمولاً یکی از روشهای بازیابی حافظه در شرایط فشار حافظه است و استفاده زیاد از آن میتواند نشانه کمبود منابع باشد. اما Memory Tiering از ابتدا بهعنوان بخشی از معماری حافظه Host طراحی شده است. NVMe در این حالت یک Tier حافظه مدیریتشده محسوب میشود و ESX بهطور فعال تصمیم میگیرد چه صفحات VM در DRAM و چه صفحاتی در NVMe قرار بگیرند. بنابراین Memory Tiering را نباید صرفاً نسخه سریعتر Swap دانست.
آیا تمام حافظه ESXi میتواند روی NVMe قرار گیرد؟ خیر. یکی از نکات مهم طراحی این قابلیت این است که حافظه مورد استفاده خود VMkernel همچنان در DRAM باقی میماند. Memory Tiering عمدتاً برای حافظه ماشینهای مجازی استفاده میشود و ESXi برای عملکرد حیاتی خود به DRAM وابسته باقی میماند. این موضوع نشان میدهد که NVMe قرار نیست RAM سرور را حذف کند؛ بلکه در کنار RAM قرار میگیرد تا ظرفیت بیشتری برای Workloadها فراهم شود.
Workloadهای مناسب برای Memory Tiering
همه Workloadها الگوی مصرف حافظه یکسانی ندارند. محیطهایی که تعداد زیادی VM دارند و هر ماشین فقط بخشی از حافظه اختصاصیافته خود را بهصورت فعال مصرف میکند، معمولاً گزینههای مناسبی برای Memory Tiering هستند. برای مثال، محیطهای VDI، سرورهای Application، محیطهای Development/Test و بسیاری از Workloadهای عمومی سازمانی دارای ترکیبی از صفحات Hot و Cold هستند و میتوانند از این معماری بهره ببرند.
حتی برخی پایگاههای داده با الگوی مصرف حافظه متعادل نیز میتوانند گزینه مناسبی باشند. VMware در راهنمای فعلی خود، مجازیسازی عمومی، VDI ،Dev/Test ،Web/Application Server و Databaseهایی با فعالیت حافظه متوسط را از کاربردهای مناسب این قابلیت معرفی کرده است. اما برای Workloadهایی که تقریباً تمام حافظه اختصاصیافته آنها دائماً فعال است و Latency حافظه اهمیت بسیار بالایی دارد، باید Performance پیش از استقرار گسترده آزمایش شود.
معیارهای انتخاب NVMe مناسب برای Memory Tiering
انتخاب NVMe مناسب اهمیت زیادی دارد، یکی از اشتباهات احتمالی این است که تصور کنیم هر NVMe SSD برای Memory Tiering مناسب است. در این معماری، NVMe برخلاف یک Storage معمولی ممکن است حجم بسیار زیادی از عملیات خواندن و نوشتن مربوط به حافظه را تحمل کند. بنابراین، کارایی، میزان تأخیر و بهویژه دوام نوشتاری دستگاه اهمیت زیادی دارند. VMware نیز تأکید کرده که انتخاب NVMe مناسب یکی از عوامل کلیدی موفقیت Memory Tiering می باشد و هنگام طراحی باید علاوه بر ظرفیت، عملکرد و دوام نوشتن دستگاه نیز بررسی شود. به همین دلیل استفاده از NVMeهای Enterprise و سختافزار تأییدشده برای نسخه VMware مورد استفاده اهمیت دارد.
Memory Tiering چه تأثیری بر vMotion، HA و DRS دارد؟ یکی از نقاط قوت این فناوری آن است که Memory Tiering در سطح ESX پیادهسازی شده و با قابلیتهای اصلی محیط مجازیسازی یکپارچه است. VMware اعلام کرده است که در نسخه عمومی این قابلیت، ویژگیهایی مانند vMotion ،DRS ،HA و vSAN همچنان در معماری Memory Tiering قابل استفاده هستند. البته هنگام طراحی Cluster باید Hostها، میزان DRAM، ظرفیت NVMe و نسبت Tiering با دقت بررسی شوند تا جابهجایی Workloadها بین میزبانها باعث عدم تعادل منابع نشود. باید توجه داشت که Memory Tiering جایگزین Capacity Planning نیست افزایش ظرفیت حافظه ممکن است وسوسه ایجاد کند که تعداد زیادی VM جدید روی Host قرار دهیم. اما ظرفیت منطقی بیشتر نباید باعث Oversubscription بدون کنترل شود.

