در این مطلب آموزشی به صورت بسیار ریز به NUMA می پردازیم و سعی می کنیم با استفاده از Use Case های مختلف به کاربران آموزش دهیم که چگونه بتوانند سرعت ماشین های مجازی خود را دو برابر کنند. فقط در نظر داشته باشید که درک این مطلب ممکن مقداری برای دوستان سخت باشد زیرا قسمت اهم این تکنولوژی مربوط به سخت افزار می باشد.
(NUMA (Non-Uniform Memory Access: همانطور که می دانید این کلمه مخفف می باشد و به صورت غیر مخفف Non-Uniform Memory Access است ولی معنی آن در واقع چیست؟
باید بدانید که هر CPU از مموری Local خودش به خودش Assign می کند که به این ترکیب یک NUMA Node می گویند. در واقع:
**Local MEM + CPU CORES = NUMA Node**
شکل زیر تفاوت بین سیستم هایی را نشان می دهد که از ساختار NUMA آگاه هستند و سیستم هایی که نمی دانند این قابلیت چیست.
NUMA بسیار اهمیت دارد زیرا هر CPU را قادر می سازد که از مموری Local خود با سرعت بسیار بالاتری نسبت به مموری غیر Local (مموری که برای یک CPU دیگر می باشد و یا بین دو CPU به صورت shared وجود دارد) خود بهره ببرد.
vNUMA چیست؟
این قابلیت شفافیت و نمایان ساختن NUMA بین ماشین مجازی و سیستم عامل را از بین می برد و این قابلیت را به صورت مستقیم در اختیار سیستم عامل می گذارد. اگر در بحث تکنولوژی جایی صحبت از Wide NUMA نیز شنیدید همین vNUMA مد نظر می باشد.
همانطور که تا به حال متوجه شده اید امکان این وجود دارد که یک ماشین مجازی بین چند NUMA Node جابجا شود اما وقتی یک ماشین مجازی روشن می شود و معماری NUMA به سیستم عامل آن Present می شود، سیستم عامل ساختار NUMA را برای نرم افزار های خود قفل می کند که این امر مسبب بالا رفتن سرعت و بهره وری نرم افزار ها می شود. فقط در نظر داشته باشید در صورتی که ماشین مجازی بین سرور ها vMotion شود دو حالت زیر اتفاق خواهد افتاد:
معماری در CPU به صورت یکسان باشد: هیچ تغییری بر روی Performance نرم افزار های سیستم عامل مربوط صورت نمی گیرد.
معماری در CPU ها یکسان نباشد: در این صورت سرعت و بهره وری نرم افزار ها حتما دستخوش تغییر منفی خواهد شد.
منبع: aminpourmirza