سیستمهای دارای Non Uniform Memory Access یا به اختصار NUMA، پلتفرمهای پیشرفته سروری با بیش از یک گذرگاه سیستمی (System Bus) هستند. این دسته از پلتفرمها میتوانند تعداد زیادی پردازشگر را با عملکرد بالا و مناسبترین هزینه در یک SSI یا Single-System Image کنترل نمایند. شاید به نظر مفهوم NUMA کمی سخت به نظر بیاید اما پایه و اساس منطق کارکرد آن نسبتا ساده است که در این مقاله به آن میپردازیم.
امروزه با توجه به اینکه طی یک دهه گذشته سرعت Clock پردازنده، افزایش قابل ملاحظهای داشته است اما یک CPU چند گیگاهرتزی برای استفاده موثر از توان پردازشیِ خود، باید از پهنای باند حافظهی مناسبی نیز برخوردار باشد. حتی میتوان یک CPU که بارکاری زیاد و در نتیجه نیاز به حافظه زیاد و فشرده ای مانند برنامههای محاسباتی با کاربرد علمی را دارد، بوسیلهی پهنای باند حافظه، محدود نمود.
این مشکل در سیستمهای Symmetric Multiprocessing یا به اختصار (SMP) شدت مییابد که تعداد زیادی از پردازندهها برای پهنای باند در یک System Bus رقابت میکنند. برخی سیستمهای High-End غالبا تلاش میکنند تا با ایجاد یک Data Bus پرسرعت، این مشکل را رفع نمایند. ضمن اینکه این راهکار پرهزینه بوده و در قابلیت مقیاسپذیری محدودیت ایجاد میکند.
در این شرایط، NUMA به عنوان راهکار جایگزین در نظر گرفته میشود که چندین Node کوچک و مقرونبهصرفه را با ایجاد یک اتصال با کیفیت به یکدیگر مرتبط میسازد. هر Node شامل چندین پردازنده و حافظه میشود که شباهت زیادی به یک سیستم کوچک SMP دارد. با این وجود، کنترلر پیشرفته حافظه این امکان را فراهم میکند که یک Node از حافظهی تمامی Nodeهای دیگر استفاده نموده و در عین حال یک SSI ایجاد نماید. در صورت دسترسی پردازنده به یک حافظه در خارج از Node اصلی خودش یا به عبارت دیگر حافظه Remote، دادهها باید از طریق اتصال NUMA انتقال یابند که در مقایسه با دسترسی به یک حافظه Local کندتر صورت میگیرد. لازم به ذکر است که زمان دسترسی به حافظه یکسان نیست و همانطور که از نام این تکنولوژی پیداست، به موقعیت مکانی حافظه و Nodeیی که دسترسی از آن ایجاد میشود، بستگی دارد.
چالشهای پیش روی سیستمعاملهای مختلف
از آنجایی که معماری NUMA به ارائه یک SSI میپردازد، معمولا قادر به اجرای یک سیستمعامل بدون نیاز به بهینهسازی خاص آن میباشد.
تاخیر زیاد در دسترسی به حافظه Remote ممکن است از کارایی پردازندهها کاسته و موجب معطلی در هنگام انتقال دادهها به Local Node شود؛ به علاوه اینکه ممکن است اتصال NUMA برای برنامههای کاربردی با درخواست پهنای باند بالا، به یک Bottleneck تبدیل شود. به علاوه ممکن است عملکرد چنین سیستمی کاملا متغیر باشد. برای مثال اگر برنامه کاربردی دارای حافظهای باشد که به صورت Local در یک عملیات ارزیابی جانبی (Benchmarking) قرار میگیرد، طی عملیات بعدی تمامی این حافظه در یک Remote Node قرار خواهد گرفت و این موضوع ممکن است فرآیند برنامهریزی برای ظرفیت را دشوار سازد.
برخی سیستمهای UNIX High-End از این قابلیت برخوردارند که از بهینهسازی NUMA در کامپایلرها و مجموعه آرشیوهای برنامهنویسی خود پشتیبانی کنند. این پشتیبانی مستلزم آن است که توسعهدهندگان برای دستیابی به عملکرد بهینه، برنامهها را مجددا تنظیم و کامپایل نمایند. لازم به ذکر است که بهینهسازیهای صورتگرفته برروی یک سیستم الزاما به معنای تضمین کارکرد مطلوب آنها برروی نسخه بعدی همان سیستم نخواهد بود. سیستمهای دیگر به مدیران اجازه میدهد تا مشخصا در مورد Nodeیی تصمیمگیری کنند که برنامه کاربردی بر روی آن اجرا میشود. علیرغم قابلقبول بودن این موضوع برای برخی برنامههای کاربردی خاص که برای Local بودن نیاز به 100 درصد حافظه دارند، احتمالا این مورد موجب تحمیل محدودیتهای اجرایی بر سیستم و بروز عدم تعادل بین Nodeها در هنگام تغییر بارهای کاری میشود.
در شرایط ایدهآل، نرمافزار سیستم به صورت Transparent از NUMA پشتیبانی مینماید، بنابراین برنامههای کاربردی بدون نیاز به اصلاحات از این پشتیبانی بهرهمند میشوند. سیستم بدون نیاز به مداخله مداوم ادمین، استفاده از حافظه Local را به بالاترین حد ممکن رسانده و برنامهها را به صورت هوشمندانه زمانبندی مینماید. در نهایت ضروری است سیستم بدون لطمه به صحت عملکرد به خوبی پاسخگوی شرایط درحالتغییر باشد.
زمانبندی ESXi NUMA و نحوه عملکرد آن
ESXi از ابزار پیچیده برنامهریزی و زمانبندی NUMA برای ایجاد تعادل داینامیک بین بار پردازنده و موقعیت مکانی حافظه یا تعدیل بار پردازنده استفاده مینماید.
1- هر یک از ماشینهای مجازی توسط یکی از ابزارهای زمانبندی NUMA مدیریت شده و به یک Home Node اختصاص مییابند. Home Node در واقع یکی از Nodeهای NUMA میباشد که شامل چندین پردازنده و حافظه Local میشود و از طریق System Resource Allocation Table یا SRAT نشان داده میشود.
2- در صورت اختصاص حافظه به ماشین مجازی، ESXi Host ترجیحا اختصاص از Home Node را در اولویت قرار میدهد. عملکرد CPUهای مجازی در ماشین مجازی به Home Node محدود میشود تا قابلیت موقعیت مکانی حافظه را به حداکثر برسانند.
3- ابزار زمانبندی NUMA میتواند Home Node مربوط به یک ماشین مجازی را به صورت داینامیک تغییر دهد تا قادر به پاسخگویی به تغییرات بار در سیستم باشد. این ابزار ممکن است یک ماشین مجازی را به Home Node جدیدی منتقل نماید تا عدم تعادل در بار پردازنده را کاهش دهد. از آنجاییکه احتمالا بخش بیشتری از حافظه در نتیجه این امر Remote میگردد؛ ممکن است ابزار زمانبندی، حافظه ماشین مجازی را به صورت دینامیک به یک Home Node جدید منتقل کند تا بدین طریق موقعیت مکانی حافظه بهبود یابد. همچنین این امکان وجود دارد که ابزار زمان بندی NUMA، ماشینهای مجازی را بین Nodeها مبادله نماید تا موقعیت مکانی حافظه کلی را بهبود بخشد.
لازم به ذکر است که برخی ماشینهای مجازی را نمی توان با ابزار زمانبندی ESXi NUMA مدیریت نمود. برای مثال در صورتیکه پردازنده یا رابط حافظه برای یک ماشین مجازی به صورت دستی تنظیم شده باشد، ممکن است این ابزار قادر به مدیریت این ماشین مجازی نباشد. علاوه بر این، ماشینهای مجازی که توسط این ابزار مدیریت نمیشوند هنوز قابلیت اجرای صحیح را دارند اما امکان بهرهمندی از فرآیندهای بهینهسازی ESXi NUMA را نخواهند داشت.
Policyهای مربوط به استقرار حافظه و زمانبندی NUMA در ESXi این قابلیت را دارند تا تمامی ماشینهای مجازی را به صورت Transparent مدیریت نمایند؛ به این ترتیب مدیران نیازی به توجیه پیچیدگیهای موجود در فرآیند ایجاد تعادل در ماشینهای مجازی بین Nodeها نخواهند داشت.
فرآیندهای بهینهسازی صرفنظر از نوع سیستمعامل مهمان به صورت یکپارچه عمل میکنند. ESXi به ارائه پشتیبانی NUMA حتی برای ماشینهای مجازی میپردازد که از سختافزار NUMA پشتیبانی نمیکنند که از آن جمله میتوان از Windows NT 4.0 نام برد. در نتیجه میتوان از مزایای سختافزارهای جدید حتی با سیستمعاملهای قدیمی بهره برد.
به علاوه امکان مدیریت خودکار برای انواعی از ماشینهای مجازی وجود دارد که تعداد پردازندههای مجازی آن بیش از تعداد هستههای فیزیکی پردازنده موجود در یک Node سختافزاری است. ابزار زمانبندی NUMA با توسعه Nodeهای NUMA میتواند با این نوع از ماشین مجازی تطبیق یابد. به عبارت دیگر، ماشین مجازی در قالب چند NUMA Client تفکیک شده و هرکدام از آنها به یک Node اختصاص داده میشود و سپس با ابزار زمانبندی به عنوان یک Client معمولی و بدون محدوده مدیریت میگردند. این مکانیسم میتواند عملکرد برخی بارهای کاری ویژه به صورت Memory-Intensive را بهبود دهد.
لازم به ذکر است که ESXi 5.0 و نسخههای بعدی ESXi میتوانند توپولوژی مجازی NUMA را در اختیار سیستمعاملهای مهمان قرار دهند.
ــــــــــــــــــــــــــــــــ