NUMA

numa index
توسط

NUMA چیست؟

NUMA (دسترسی به حافظه غیر یکنواخت) روشی برای پیکربندی یک خوشه ریزپردازنده در یک سیستم چند پردازشی است به طوری که آنها بتوانند حافظه را به صورت محلی به اشتراک بگذارند و عملکرد و توانایی سیستم را برای گسترش بهبود بخشند. NUMA در یک سیستم چند پردازشی متقارن (SMP) استفاده می شود. یک سیستم SMP یک سیستم "به هم پیوسته"، "به اشتراک گذاری همه چیز" است که در آن چندین پردازنده که تحت یک سیستم عامل واحد کار می کنند، از طریق یک گذرگاه یا مسیر "اینترکانکت" مشترک به حافظه یکدیگر دسترسی دارند. به طور معمول، محدودیت SMP این است که با اضافه شدن ریزپردازنده ها، گذرگاه مشترک یا مسیر داده بیش از حد بارگذاری می شود و به یک گلوگاه عملکرد تبدیل می شود. NUMA سطح متوسطی از حافظه مشترک بین چند ریزپردازنده را اضافه می کند تا همه دسترسی های داده مجبور نباشند در گذرگاه اصلی حرکت کنند.

NUMA را می توان به عنوان یک "خوشه در یک جعبه" در نظر گرفت. این خوشه معمولاً از چهار ریزپردازنده (به عنوان مثال، چهار ریزپردازنده پنتیوم) تشکیل شده است که در یک گذرگاه محلی (به عنوان مثال، یک گذرگاه اتصال اجزای جانبی) به یک حافظه مشترک (به نام "حافظه L3") روی یک مادربرد به هم متصل شده اند (همچنین می تواند احتمالاً به عنوان کارت شناخته می شود). این واحد را می توان به واحدهای مشابه اضافه کرد تا یک سیستم چند پردازشی متقارن را تشکیل دهد که در آن یک گذرگاه SMP مشترک همه خوشه ها را به هم متصل می کند. چنین سیستمی معمولاً شامل ۱۶ تا ۲۵۶ ریزپردازنده است. برای یک برنامه کاربردی که در یک سیستم SMP اجرا می شود، تمام حافظه های پردازنده به صورت یک حافظه واحد به نظر می رسند.

هنگامی که یک پردازنده به دنبال داده در یک آدرس حافظه خاص می‌گردد، ابتدا در حافظه نهان L1 در خود ریزپردازنده، سپس به یک تراشه کش L1 و L2 تا حدودی بزرگتر در نزدیکی و سپس به سطح سوم حافظه پنهان که پیکربندی NUMA قبل از آن ارائه می‌کند، نگاه می‌کند. جستجوی داده ها در "حافظه راه دور" واقع در نزدیکی ریزپردازنده های دیگر. هر یک از این خوشه ها توسط NUMA به عنوان یک "گره" در شبکه ارتباطی مشاهده می شود. NUMA یک نمای سلسله مراتبی از داده ها را در تمام گره ها حفظ می کند.

داده ها بر روی گذرگاه بین خوشه های یک سیستم NUMA SMP با استفاده از فناوری رابط منسجم مقیاس پذیر (SCI) منتقل می شوند. SCI چیزی را که "همسویی کش" یا سازگاری در سراسر گره های خوشه های متعدد نامیده می شود، هماهنگ می کند.

سیستم‌های SMP و NUMA معمولاً برای برنامه‌هایی مانند داده‌کاوی و سیستم پشتیبانی تصمیم استفاده می‌شوند که در آن پردازش می‌تواند به تعدادی از پردازنده‌هایی که روی یک پایگاه داده مشترک کار می‌کنند، تقسیم شود. Sequent، Data General و NCR از جمله شرکت هایی هستند که سیستم های NUMA SMP را تولید می کنند.

NUMA چرا اهمیت دارد؟

پیاده سازی هر تکنولوژی در بستر مجازی باعث ایجاد هزنیه های Performance ای می شود.برای سیستم NUMA اگر اطلاع از وضعیت کارکرد این تکنولوژی نداشته باشید باعث می شود بر روی تراکنش های ماشین مجازی شما Latency یا تاخیر خواهد افتاد ، زیرا ماشین مجازی سعی خواهد کرد تا مموری خود را از مموری های Remote استفاده کند(از مموری سایر Node های NUMA استفاده می کند) که این مطلب باعث ایجاد تاخیر در تراکنش ها می شود.

ملزومات Performace

برای اینکه بتوانید بیشترین بهره وری و سرعت را داشته باشید باید در نظر بگیرید که تعداد نود های NUMA سرور فیزیکی چه مقدار می باشد و مقدار اختصاص یافته رم و CPU را به صورت درست انتخاب کنیم. اگر به تعداد و اندازه نود های NUMA توجه نکنیم باعث استفاده از Remote Memory می شود که در نهایت باعث ایجاد Latency بسیار زیاد خواهد شد.

Best Practice برای استفاده از NUMA

اندازه NUMA بر روی سرور خود را بدانید.از همه مهمتر زمانی که می خواهید سرور خریداری کنید از سایز NUMA حتما آگاه باشید زیرا این مطلب باعث می شود که تا بدانید چه مقدار رم و CPU برای سرور خود تهیه کنید.
اگر از CPU های نسل جدید استفاده می کنید محدودیت های بسیار کمتری برای استفاده از NUMA خواهید داشت،
اما اگر از CPU های نسل های قدیم تری استفاده می کنید مانند Dual-Core ها و Dual-Socket ها باید بسیار دقیق تر کار کنید زیرا در حال حاضر اغلب ماشین های مجازی نیاز به بیشتر از ۴ عدد CPU برای پیاده سازی دارند.
در استفاده از رم نیز اگر بر روی هر سرور مقدار کمی رم دارید ولی تعداد سرور هایتان زیاد است باز هم دچار مشکل خواهید شد ، زیرا در حال حاضر نرم افزار ها به مقدار زیادی رم برای پیاده سازی احتیاج دارند.پس حالت بهتر داشتن رم های زیاد بر روی سرور ها و در صورت امکان تعداد سرور های زیاد برای قابلیت Fail دادن است.
ماشین های مجازی خود را بهینه تنظیم کنید به عنوان مثال در سیستمی که دارای ۶ Core می باشد می توانید ماشین های مجازی خود را طوری پیاده سازی کنید که مقدار CPU های آن کسر صحیحی از CPU باشد یعنی ۲ یا ۳ یا ۶Core باشد . در این مورد تنظیم کردن CPU ماشین مجازی بر روی ۴ کار اشتباهی می باشد.
زمانی که Hyper Threading را بر روی سرور خود روشن می کنید باید به ESXi و یا ماشین مجازی و یا هر دوی آنها بفهمانید که از این قابلیت استفاده کنند و به ماشین های مجازی بگویید که CPU ها را در کنار هم قرار دهند که در قسمت سوم از این مطلب آموزشی این مورد را آموزش خواهم داد


پست های توصیه شده