چرا برای قابلیت PCI Passthrough باید CPU و Ram رزرو شود ؟

چرا برای قابلیت PCI Passthrough باید CPU و Ram رزرو شود ؟

دلیل اصلی رزرو CPU و RAM در VMware ESXi با قابلیت PCI Passthrough در این است که VM بتواند منابع لازم را به‌صورت تضمین‌شده و بدون جابه‌جایی توسط Hypervisor در اختیار داشته باشد.

نحوه محاسبه Reservation رم در ESXI

اگر شما می خواهید به ماشین مجازی خود 8GB  رم اختصاص دهید باید مقدار رم اختصاص داده شده را بر ۱۰۲۴ ضرب نمایید .

به طور مثال :

VM = 8 GB RAM

Memory Reservation = 8192 MB

Reservation حداقل مقدار RAM که ESXi باید برای این VM تضمین کند. اگر 8GB RAM دارید و Reservation را 8GB بگذارید، کل 8GB برای VM رزرو می‌شود.

چرا RAM در VMware ESXi با قابلیت PCI Passthrough رزرو می شود؟

وقتی یک PCIe Device را Passthrough می‌کنید، دستگاه مستقیماً به VM اختصاص داده می‌شود. ESXi باید مطمئن باشد حافظه موردنیاز VM همیشه در دسترس باشد.

بدون Reservation، ESXi در شرایط فشار حافظه می‌تواند از تکنیک‌هایی مثل Ballooning , Memory Compression , Swapping استفاده کند.

برای VM دارای Passthrough این موضوع می‌تواند مشکل‌ساز شود، چون Device مستقیماً با VM و حافظه آن درگیر است.

Limit سقف مصرف RAM VM. اگر روی Unlimited باشد، VM می‌تواند تا مقدار RAM تنظیم‌شده خودش استفاده کند. معمولاً بهتر است Unlimited باشد.
Shares اولویت VM در زمان کمبود منابع. معمولاً گزینه‌های Low / Normal / High دارد. این مقدار RAM اضافه ایجاد نمی‌کند؛ فقط هنگام رقابت VMها تعیین می‌کند کدام VM اولویت بیشتری داشته باشد.
Memory Hot Plug امکان اضافه‌کردن RAM به VM در حال روشن بودن، بدون خاموش کردن VM؛ البته Guest OS و VM Hardware باید از آن پشتیبانی کنند.

نحوه محاسبه Reservation سی پی یو در ESXI

اگر شما می خواهید به ماشین مجازی خود  ۲core cpu اختصاص دهید باید مقدار CPU اختصاص داده شده را بر فرکانس پایه ضرب نمایید .

به طور مثال :

Intel® Xeon® Silver 4410Y Processor 30M Cache, 2.00 GHz 12 Total Cores CPU , 24 Total Threads دارد که برای تخصیص  دادن ۲ Cores  باید ۲ را ضرب در فرکانس پایه کرد

2*2000=4000

1. در بخش CPU تعداد vCPUهایی است که به VM اختصاص می‌دهید.

مثلاً:

CPU = 2 → ماشین مجازی 2 vCPU دارد.
CPU = 4 → ماشین مجازی 4 vCPU دارد.

این مقدار به این معنی نیست که حتماً 2 یا 4 هسته فیزیکی به VM اختصاص داده شده؛ ESXi منابع CPU را بین VMها زمان‌بندی می‌کند.

2. Cores per Socket

تعیین می‌کند vCPUها داخل چند Socket مجازی قرار بگیرند.

مثال ساده

فرض کنیم VM شما 4 vCPU دارد:

حالت 1:

  • CPU: 4 vCPU
  • Cores per Socket: 4
  • نتیجه: 1 Socket × 4 Core

حالت 2:

  • CPU: 4 vCPU
  • Cores per Socket: 2
  • نتیجه: 2 Socket × 2 Core

حالت 3:

  • CPU: 4 vCPU
  • Cores per Socket: 1
  • نتیجه: 4 Socket × 1 Core

در هر سه حالت، مجموعاً 4 vCPU در اختیار VM است؛ این گزینه لزوماً تعداد واقعی هسته‌های فیزیکی اختصاص‌یافته به VM را تغییر نمی‌دهد.

بیشتر برای این موارد اهمیت دارد:

  • لایسنس نرم‌افزارها که بر اساس تعداد Socket یا Core محاسبه می‌شوند.
  • سازگاری بعضی نرم‌افزارها با ساختار CPU.
  • نحوه‌ای که Windows/Linux توپولوژی CPU را می‌بیند.
  • بعضی سناریوهای خاص NUMA و Performance.

برای بیشتر VMهای جدید، معمولاً:
1 Socket × چند Core انتخاب ساده‌تری است.

3. CPU Hot Plug

یکی از قابلیت های بسیار جالب vmware قابلیت cpu hot plug است که به شما این امکان را می دهد که بدون نیاز به خاموش کردن ماشین مقدار cpu ان را تغییر دهید.

نکته: فعال‌کردن Hot Add می‌تواند روی بعضی قابلیت‌های vCPU و عملکرد/Topology اثر داشته باشد؛ بنابراین برای VMهایی که نیاز واقعی به Hot Add ندارند، معمولاً لازم نیست فعال شود.

4.CPU Reservation (حداقل CPU تضمین‌شده)

مقدار حداقل پردازنده‌ای که یک VM به آن نیاز دارد و همیشه در اختیارش خواهد بود (صرف‌نظر از بار کاری سایر VMها). بعنوان مثال اگر یک VM دارای ۲ vCPU باشد و هرکدام ۱۰۰۰ مگاهرتز Reservation داشته باشند، این ماشین همیشه حداقل ۲ گیگاهرتز از پردازنده را خواهد داشت. برای ماشین‌هایی که بار پردازشی حساس دارند (مثل دیتابیس یا اپلیکیشن‌های بلادرنگ) و همیشه باید منابع CPU در دسترسشان باشد.

نکته: اگر مجموع CPU Reservationهای ماشین‌های مجازی بیشتر از پردازنده فیزیکی باشد، برخی از VMها دچار مشکل خواهند شد و ESXi نمی‌تواند همه‌ی درخواست‌ها را برآورده کند.

یعنی:

حداقل مقدار CPU که ESXi برای این VM تضمین می‌کند.

مثلاً CPU Host شما:

2.0 GHz

است.

اگر Reservation را روی:

1000 MHz

بگذارید، ESXi برای VM حداقل 1000 MHz ظرفیت CPU را تضمین می‌کند، مشروط به محدودیت‌های معماری/منابع Host.

Reservation برای VMهای حساس که باید حداقل CPU مشخصی داشته باشند استفاده می‌شود.

مثلاً:

* Database
* سرویس‌های حیاتی
* بعضی Applianceها
* VMهایی که SLA مشخص دارند

برای VM معمولی، اغلب می‌توان آن را روی:

None

گذاشت.

5. Limit

این گزینه برعکس Reservation است.

Limit = حداکثر CPU که VM اجازه دارد مصرف کند.

مثلاً VM شما 4 vCPU دارد ولی Limit را روی:

2000 MHz

قرار دهید.

حتی اگر CPU کاملاً آزاد باشد، VM از سقف تعیین‌شده عبور نمی‌کند.

بنابراین برای VMهای معمولی:

Limit = Unlimited

معمولاً انتخاب مناسب‌تری است.

یکی از اشتباهات رایج این است که برای کنترل مصرف CPU، Limit را خیلی پایین می‌گذارند و بعد VM کند می‌شود.

5.CPU Limit (حداکثر CPU مجاز برای یک VM)

حداکثر مقدار CPU که یک ماشین مجازی می‌تواند مصرف کند، حتی اگر هاست ظرفیت بیشتری داشته باشد. بعنوان مثال اگر یک ماشین مجازی دارای ۸ vCPU باشد ولی Limit آن ۲ گیگاهرتز تنظیم شود، حتی اگر هاست ۱۰ گیگاهرتز آزاد داشته باشد، این VM نمی‌تواند بیش از ۲ گیگاهرتز استفاده کند.

نکته: استفاده از Limit می‌تواند باعث کاهش عملکرد شود، مخصوصاً اگر اشتباهاً مقدار آن خیلی پایین تنظیم شود. در تصویر زیر مقدار Limit به اشتباه تنظیم شده است.

مدیریت RAM در VMware ESXi: تفاوت Reservation، Limit و Share در ماشین‌های مجازی

6.CPU Shares (اولویت‌بندی در هنگام کمبود منابع)

مقدار نسبی CPU که یک ماشین در صورت رقابت با سایر VMها دریافت می‌کند. بعنوان مثال اگر دو VM داشته باشیم، یکی با Shares = 2000 و دیگری با Shares = 1000، در صورت کمبود منابع، ماشین اول دو برابر بیشتر CPU دریافت می‌کند.
کاربرد: برای اولویت‌بندی ماشین‌ها در هنگام استفاده‌ی بیش از حد از CPU هاست.

نکته: CPU Shares فقط در زمانی اثر دارد که هاست دچار کمبود CPU شود. در غیر این صورت، همه‌ی VMها آزادانه از CPU استفاده می‌کنند.

Shares تعیین می‌کند وقتی چند VM همزمان برای CPU رقابت می‌کنند، اولویت نسبی آنها چه باشد.

معمولاً سه سطح می‌بینید:

* Low
* Normal
* High

مثلاً:

VM1 = High
VM2 = Normal
VM3 = Low

اگر CPU Host تحت فشار باشد، VM1 نسبت به VM2 و VM3 سهم بیشتری از CPU خواهد گرفت.

اما Shares به معنی رزرو CPU نیست.

مثلاً:

Shares = High

به این معنی نیست که CPU مشخصی برای VM رزرو شده است.

Hardware Virtualization

این قسمت برای قابلیت‌های مجازی‌سازی سخت‌افزاری CPU است.

CPUهای جدید Intel/AMD قابلیت‌هایی مانند:

* Intel VT-x
* AMD-V

دارند.

VMware از این قابلیت‌ها برای اجرای VM استفاده می‌کند.

در بعضی سناریوهای خاص، مخصوصاً زمانی که داخل VM می‌خواهید قابلیت‌های مجازی‌سازی را در اختیار VMهای دیگر قرار دهید، این قسمت اهمیت بیشتری پیدا می‌کند.

مثلاً:

ESXi Host → VM → Hypervisor داخل VM

که به آن Nested Virtualization می‌گویند.

7.Expose hardware-assisted virtualization to the guest OS:

این گزینه امکان اجرای Nested Virtualization را فراهم می‌کند، یعنی اجرای یک Hypervisor (مانند VMware ESXi، Hyper-V، یا KVM) داخل یک ماشین مجازی. اگر می‌خواهید داخل یک ماشین مجازی ESXi یا Hyper-V اجرا کنید، باید این گزینه را فعال کنید. برای محیط‌های آزمایشگاهی و تست Hypervisor مناسب است البته CPU باید از فناوری Intel VT-x یا AMD-V پشتیبانی کند.

8.Expose IOMMU to the guest OS:

IOMMU (Input-Output Memory Management Unit) تکنولوژی‌ای است که امکان Direct Memory Access (DMA) را برای دستگاه‌های PCIe داخل یک VM فراهم می‌کند. این قابلیت امکان دسترسی مستقیم دستگاه‌های PCI (مانند کارت گرافیک، کارت شبکه، و کنترلرهای ذخیره‌سازی) به حافظه ماشین مجازی را می‌دهد. اگر می‌خواهید مثلا یک کارت گرافیک NVIDIA را مستقیما به یک مشاین مجازی اختصاص دهید باید این گزینه را فعال کنید. این قابلیت معمولاً در سرورهای جدیدتر با پشتیبانی از VT-d (در پردازنده‌های Intel) یا AMD-Vi (در پردازنده‌های AMD) فعال می‌شود. بدون IOMMU، دستگاه‌های سخت‌افزاری نمی‌توانند به‌صورت مستقیم به یک ماشین مجازی متصل شوند.

I/O MMU مربوط به مدیریت و نگاشت دسترسی دستگاه‌های I/O به VM است.

در سناریوهایی مانند:

* PCI Passthrough
* DirectPath I/O
* بعضی تجهیزات PCI
* برخی سناریوهای SR-IOV

اهمیت پیدا می‌کند.

9.Enable virtualized CPU performance counters:

این گزینه به سیستم‌عامل مهمان اجازه می‌دهد تا از شمارنده‌های عملکرد پردازنده (Performance Counters) در داخل VM استفاده کند. این قابلیت برای مانیتورینگ و پروفایلینگ پردازنده در محیط‌های توسعه و تست مفید است. ابزارهایی مانند Perf (در لینوکس)، Windows Performance Monitor (در ویندوز)، و ابزارهای دیگر تحلیل عملکرد پردازنده می‌توانند از این شمارنده‌ها استفاده کنند. توسعه‌دهندگان نرم‌افزار از این قابلیت برای تحلیل عملکرد کدهای سطح پایین و بهینه‌سازی CPU Usage استفاده می‌کنند.

این گزینه اجازه می‌دهد VM به Performance Monitoring Counters پردازنده دسترسی داشته باشد.

این Counters برای بررسی مواردی مثل:

* CPU utilization
* Cache behavior
* CPU instructions
* Performance bottleneck
* Profiling نرم‌افزار

استفاده می‌شوند.

برای VMهای معمولی معمولاً نیازی به تغییر آن ندارید.

بیشتر در:

Performance Analysis / Benchmarking / Profiling

کاربرد دارد.

نکته: فعال کردن این گزینه می‌تواند تأثیر منفی جزئی روی عملکرد VM داشته باشد، زیرا برخی از پردازنده‌ها هنگام ارائه داده‌های Performance Counters به ماشین مجازی کمی Overhead دارند. اگر ماشین‌های مجازی شما کاربرد توسعه‌ای یا تست Performance ندارند، نیازی به فعال‌سازی این گزینه نیست.

10. CPU Schedulling Affinity

CPU Schedulling Affinity: در این قابلیت شما برای VM میتوانید قابلیتی را تنظیم کنید که ماشین حق دارد از کدام Core CPU فیزیکی استفاده کند. این قابلیت در سناریوهایی کاربردی است که ماشین از نظر منابع حساس و منبع CPU از دیگر ماشینها کامل جدا باشد. فقط باید توجه داشت که برای vMotion برروی سروری انتقال یابد که تعداد CPU Coreمبدا و مقصد یکی باشد. این نکته هم باید در نظر گرفته شود که با تنظیم این مورد روی عملکرد کلی سرور تاثیر گذار است.

11.Non-Uniform Memory Access

قابلیت Non-Uniform Memory Access در واقع یک معماری در سیستمهای کامپیوتری است که Memory را بین چند CPU تقسیم میکند که این فضا میتوانند به یک یا چند CPU متصل باشند. در معماری NUMA زمان دسترسی به حافظه بستگی به مکان داده دارد تا CPU به آن دسترسی پیدا کند. در واقع این تکنولوژی سعی میکند از فضای محلی خود CPU یا Local RAM استفاده کند و باعث افزایش عملکرد و کاهش تاخیر دسترسی به Memory میشود. حال نقش VMware در این داستان این است که اولاً از NUMA پشتیبانی میکند و مطمئن میشود که زمانی که VM کار آن با Memory تمام شده است دیگر CPU دسترسی به آن آدرس را نداشته باشد. در واقع این امر که Memory بین چند سیستم به اشتراک گذاشته و مدیریت شود باعث افزایش عملکرد، کاهش تاخیر و بهبود سیستم میشود.

مثال از تنظیمات بهینه CPU برای ماشین‌های مختلف

سرورهای پایگاه داده (SQL, Oracle):

  1. Reservation بالا برای اطمینان از عملکرد ثابت
  2. Limit تنظیم نشود
  3. Shares بالا برای اولویت داشتن در پردازش

سرورهای وب (IIS, Apache, Nginx):

  1. Reservation متوسط
  2. Shares پیش‌فرض یا متوسط

ماشین‌های تست و توسعه:

  1. Shares پایین
  2. Limit کم برای جلوگیری از مصرف بیش از حد منابع

جمع‌بندی مدیریت منابع CPU در VMware ESXi

تنظیم درست Reservation، Limit و Shares برای CPU در VMware ESXi می‌تواند عملکرد ماشین‌های مجازی را بهینه کند و از مشکلاتی مثل Overcommitment و NUMA Miss جلوگیری کند.
سرورهای حیاتی باید Reservation داشته باشند، اما استفاده‌ی نادرست از Limit می‌تواند باعث کاهش کارایی شود.
در سرورهایی با چندین پردازنده فیزیکی، NUMA را در نظر بگیرید و از تخصیص vCPU بیش از حد خودداری کنید.

لطفا به محتوای ما امتیاز بدهید

0 / 5 نتایج رأی گیری 5 تعداد رأی دهندگان 1

رتبه صفحه شما: