تغییر تنظیمات پیکربندی SQL Server vNUMA توسط VMware vSphere 6.5

آخرین نسخه از vSphere Virtualization Suite که نسخه 6.5 است، به روش جدیدی vNUMA را به ماشین مجازی ارائه می دهد و احتمال زیادی دارد که پیکربندی SQL Server vNUMA مجازی شما را با مشکل مواجه کند و باعث ایجاد رفتارهای غیرعادی شود. حتی ممکن است باعث کندی عملکرد SQL Serverهای شما شود.

vmware

روش حل این مشکل:
به طور پیش فرض برای نسخه های قبل، می توانستید پیکربندی vNUMA و CPU Socketها و هسته های مجازی را از طریق صفحه پیکربندی CPU برای ماشین مجازی تنظیم کنید.

vnuma_vcpu

با این تنظیمات در نسخه های 5.0 و 6.0 vSphere با صرف نظر از پیکربندی CPU NUMA بر روی سرور فیزیکی، ماشین مجازی شما یک CPU socket و 16 Core خواهد داشت. این امکان وجود دارد که ماشین مجازی را طوری تنظیم کنید که با محدودیت های CPU NUMA فیزیکی مطابقت نداشته باشد و مشکلاتی در عملکرد سیستم ایجاد کند.
به طور پیش فرض بر روی vSphere 6.5 چنین تنظیماتی وجود ندارد. وقتی این ماشین مجازی را روشن می کنید به SQL Server نگاه کنید.

vnuma_vcpu

Hypervisor فرض کرده است که سخت افزار میزبان 10 Core CPU دارد و به طور خودکار vNUMA را بر روی پیکربندی 2×8 تنظیم کرده است تا عملکرد را بهبود ببخشد.
تلاش آنها در راستای بهبود عملکرد قابل توجه است، ولی این کار مشکلاتی در عملکرد DBAهای مرتبط ایجاد می کند. این کار، رفتار مورد انتظار از پیکربندی اصلی را بدون این که آن را به Administrator اعلام کند تغییر می دهد؛ به این معنی است که اگر یک کلاستر میزبان داشته باشیم که دارای CPUهای مختلفی باشد و بخواهیم یک ماشین مجازی را به یک سرور فیزیکی با پیکربندی CPU متفاوت، vMotion کند، (مهاجرت یک ماشین مجازی روشن از یک سرور فیزیکی به سرور فیزیکی دیگر بدون Downtime) می تواند باعث بروز مشکلاتی در مورد عدم مطابقت NUMA شود [که در بالا گفته شد] و بالطبع ایجاد مشکلاتی در عملکرد را نیز به دنبال خواهد داشت.
از سوی دیگر اگر این ماشین مجازی را روی این میزبان Restart کنیم، Hypervisor می تواند به طور اتوماتیک پیکربندی vNUMA را در زمان بوت، بسته به سخت افزار جدید تغییر دهد.
بنابراین تغییراتی در vNUMA در داخل SQL Server خواهیم داشت. لذا تنظیمات MaxDOP نیز نادرست و تغییری در رفتار Queryها خواهیم دید.
برای اینکه حداکثر کنترل را بر روی رفتار این ماشین مجازی SQL Server داشته باشید (این تنظیمات باعث کندی ماشین مجازی خواهد شد) می توانید این رفتار را با روش هایی که گفته خواهد شد، تنظیم کنید. با خاموش کردن ماشین مجازی پارامترهای پیشرفتۀ خاصی برای پیکربندی این ماشین مجازی در دسترس خواهد بود. وارد بخش تنظیمات ماشین مجازی شده، به قسمت VM Options رفته، بر روی Advanced کلیک و سپس گزینه Edit Configuration را که در کنار Configuration Parameters قرار دارد انتخاب کنید.

vnuma_vcpu

در اینجا باید تصمیم بگیرید که قرار است چند CPU داشته باشید؟ و همچنین چند گره NUMA برای ماشین مجازی لازم دارید؟
لذا این پارامترها را به پیکربندی اضافه کنید: numa.vcpu.followcorespersocket = 1

vnuma_vcpu

مقدار پارامتر cpuid.coresPerSocket را بر اساس تعداد vCPUهایی که می خواهید به یک CPU Socket ارائه دهید، تغییر دهید.

vnuma_vcpu

حال تعداد حداکثر CPU در هر گره NUMA را نیز به همین مقدار تغییر داده و این عدد را در قسمت numa.autosize.vcpu.maxPerVirtualNode وارد نمایید.

vnuma_vcpu

در حال حاضر با انجام تنظیمات بالا رفتار vNUMA به آنچه که از آن انتظار دارید مطابقت خواهد داشت.

vnuma_vcpu

شما می توانید جزئیات بیشتر در مورد این پارامترها را در اینجا بیابید و پارامترهای پیشرفته تر نیز اینجا در دسترس شما خواهند بود. با در نظر گرفتن تغییرات عملکرد قبل و بعد از اعمال تغییرات می توانید از صحت عملکرد سیستم و عدم کند شدن آن اطمینان حاصل کنید. برای ایجاد هرگونه تغییر در این تنظیمات با Administratorهای زیرساخت خود تعامل کنید تا بدانید چه توپولوژی CPU NUMA فیزیکی در زیر ساخت SQL Server مجازی خود دارید تا بتوانید بهترین تصمیم را برای زیرساخت خود بگیرید.
*منبع

برچسب ها: vNUMA, CPU NUMA, ورچوال ماشین , SQL Server vNUMA, VMware vSphere 6.5, CPU, Hypervisor, VMotion, Virtual Machine, VMware