بررسی کارایی پلتفرم‌های ذخیره‌ساز دائمی اطلاعات مبتنی بر فناوری 3D XPoint

بررسی کارایی پلتفرم‌های ذخیره‌ساز دائمی اطلاعات مبتنی بر فناوری 3D XPoint


در قسمت پیشین مقاله “بررسی کارایی پلتفرم‌های ذخیره‌ساز دائمی اطلاعات مبتنی بر فناوری 3D XPoint” با یکدیگر پیشینه‌ای از حافظه‌های مذکور و نحوه چگونگی استفاده از آن‌ها به‌عنوان بستری جهت ذخیره‌سازی دائمی اطلاعات را آموختیم. حال در این بخش، ادامه نوشته را با پرداختن به مباحث اقدامات پیشتر انجام شده در این حوزه و بهینه‌سازی‌های سخت‌افزاری به پیش برده و ادامه مطلب را در بخش‌های آتی نیز کامل می‌کنیم. جهت مطالعه قسمت اول نوشته به لینک زیر مراجعه نمایید:

“بررسی کارایی پلتفرم‌های ذخیره‌ساز دائمی اطلاعات مبتنی بر فناوری 3D XPoint – بخش اول”

3. قدمت یک دهه بهینه‌سازی و انجام کارهای مرتبط

در سال 2008 میلادی، ما از احتمال عرضه نسل جدیدی از حافظه‌های جامد با دستور زمانی پاسخ سریع‌تری نسبت به حافظه‌های جامد مبتنی بر تراشه‌های حافظه NAND اطلاع داشته و لذا بررسی فرآیندهای بهینه‌سازی مورد نیاز در دیگر بخش‌های سیستم برای دسترسی مؤثر به این دسته از حافظه‌ها را شروع کردیم. بررسی‌های مربوطه با اندازه‌گیری و سنجش میزان تأخیرهای موجود در سطح سیستمی و سربارهای پردازشی توسط تیم ما شروع گشتند.  در طی بررسی‌های انجام شده ما به استفاده از سیستم‌عامل لینوکس بر روی پلتفرمی مبتنی بر پردازنده مرکزی Xeon کمپانی اینتل به‌عنوان سیستمی مرجع جهت حفظ و نگهداری بنایی مشترک با برخورداری از انعطاف‌پذیری کافی برای اعمال تغییرات مورد نیاز پرداختیم. ما بر این عقیده‌ایم (و عقیده خود را از لحاظ تجربی نیز به اعتبار رسانده‌ایم) که بینش معماری به دست آمده به‌صورت عمومی قابل اعمال بر دیگر نرم‌افزارهای سیستمی نیز می‌باشد. یک مسیر ذخیره‌سازی حداقلی به‌طور کلی متشکل  از مواردی نظیر نرم‌افزار انباره، درایورهای راه‌انداز، پروتکل‌های ذخیره‌سازی و کنترل‌گرها می‌باشد (عکس 2).

بررسی کارایی پلتفرم‌های ذخیره‌ساز دائمی اطلاعات مبتنی بر فناوری 3D XPoint - بخش دوم

ما تمامی مسیرهای ذخیره‌سازی اشاره شده در پاراگراف پیشین را با استفاده از کدهای ابزار دقیق نرم‌افزاری و آنالیزور سخت‌افزاری شکاف‌های توسعه PCI Express و درگاه‌های ساتا در اختیارمان قرار دادیم. پس از آن نمایه (پروفایل) زمان ورودی و خروجی اطلاعات یک اپلیکیشن به سمت یک درایو جامد مبتنی بر درگاه ساتا، بر روی پلتفرم و سیستم‌عاملی که قدمت عرضه آن‌ها به سال 2008 میلادی باز می‌گردد مورد بررسی توسط تیم ما قرار گرفته است. در آن زمان، پارامتر تأخیر هنوز هم تحت سلطه دستگاه ذخیره‌سازی اطلاعات قرار داشت. یک حافظه جامد مبتنی بر تراشه‌های حافظه NAND از میزان تأخیری برابر با 140 میکروثانیه برخوردار بوده است، در حالی که دیگر بخش‌های نرم‌افزاری و سخت‌افزاری سیستم (تمامی واسطه‌های موجود از اتصالات داخلی موجود در بین دستگاه‌های ذخیره‌ساز تا بسترهای نرم‌افزاری) مسئولیت 40 میکروثانیه تأخیر دیگر را بر عهده داشته‌اند. همان‌طور که در توضیحات آینده این بخش به آن اشاره‌ای می‌کنیم، اگرچه میزان تأخیر موجود در سیستم به‌عنوان یک پارامتر گلوگاه در سال 2008 میلادی مطرح نبوده است، محدودیت‌های آن برای حافظه‌های جامد Optane واضح و آشکار می‌باشد. بر همین اساس و با عنایت به این دانش، ادامه عملیات را با سه هدف معماری به پیش بردیم:

1) کاهش میزان تأخیرهای سیستم؛

2) بهبود مقیاس توان عملیاتی؛ و

3) بهبود راندمان محاسبات نرم‌افزاری سیستم (در صورت نیاز).

3-1. بهینه‌سازی سخت‌افزاری پلتفرم

در طی بررسی‌های انجام پذیرفته و پیشرفت در طی روند عملیات، ما مشاهده کردیم که استفاده از درگاه‌های ساتا (SATA) یا SAS به‌عنوان نقاط اتصال ذخیره‌سازی در افزودن سربارهای چشمگیر تأخیری به مسیر ذخیره‌سازی بسیار تأثیرگذار می‌باشند. استفاده از یک آداپتور میزبان باس (HBA) جهت تبدیل مقادیر پیش‌فرض شکاف توسعه PCIe (اتصالات داخلی ورودی و خروجی‌های هم‌اکنون حاضر پردازنده مرکزی) به پروتکل‌های درگاه‌های SATA یا SAS لازم و ضروری به شمار می‌رود. به‌کارگیری چنین آداپتوری در افزودن تأخیری به میزان 25 میکروثانیه به مسیر ذخیره‌سازی تأثیرگذار می‌باشد. اما در طرف مقابل،  نقش اساسی یک آداپتور تجمیع تعداد چندین دستگاه ذخیره‌سازی دارای پهنای باند پایین (چند صد مگابایت بر ثانیه) با یکدیگر جهت تطابق پهنای باند ارسال اطلاعات اتصال داخلی سیستم (مبتنی بر واحد گیگابایت بر ثانیه) می‌باشد. بستر اشاره شده برای زیرسیستم‌های ذخیره‌سازی کندتر از منطق و برهان برخوردار می‌باشد، اما برای دستگاه‌های ذخیره‌سازی مبتنی بر پهنای باند بالا و یا دارای زمان پاسخ‌دهی پایین خیر. یک رابط بهینه و مطلوب برای حافظه‌های جامد دارای میزان تأخیر اندک باید از آداپتور واسط HBA برخوردار نبوده و به‌صورت مستقیم به واحد پردازنده مرکزی متصل شده باشد.

اتصال مستقیم حافظه‌های جامد به باس سیستمی PCIe در فراهم آوردن پهنای باند مقیاس‌پذیر با پردازنده‌های مرکزی دارای قابلیت پشتیبانی از مسیرهای انتقال اطلاعات PCIe نیز تأثیرگذار می‌باشد. قانون متعادل‌کننده سیستم امدال بیان می‌دارد که سیستم به یک بیت از ورودی و خروجی‌های موجود بر هرکدام از دستورالعمل‌های واحد پردازنده مرکزی نیازمند می‌باشد. یک سیستم سرور مدرن از توان محاسباتی بیش از 100 گیگاهرتز برخوردار می‌باشد. با فرض یک CPI (زمان کلاک بر هر دستورالعمل) برابر با مقدار 1، چنین سیستمی به پهنای باند ورودی و خروجی 12.5 گیگابایت بر ثانیه و یا سه میلیون عملیات IOPS چهار کیلوبایتی از فرآیندهای تصادفی بر یک ثانیه نیازمند می‌باشد. این مهم به معنای تعداد 20 تا 40 درایور جامد SATA یا SAS و یا 20 تا 30 هزار دیسک سخت می‌باشد (با فرض دسترسی تصادفی). یک پردازنده سرور نوین و امروزی قادر است تا با در معرض قرار دادن مستقیم پهنای باندی بیشتر از 40 گیگابایت بر ثانیه به پشتیبانی از این حجم از درخواست‌های ورود و خروجی بپردازد. انتخاب بهتر جهت دستیابی به تعادل قانون امدال استفاده از تعداد چهار حافظه جامد مبتنی بر کاشف توسعه PCIe با برخورداری از پهنای باند 4 گیگابایت بر ثانیه می‌باشد که خود در فراهم آوردن سهولت در گسترش، توان مصرف کمتر و هزینه پایین‌تر تأثیرگذار می‌باشد.

نسخه‌های اولیه از درایوهای جامد مبتنی بر شکاف‌های توسعه PCIe در سال 2007 میلادی به بازار عرضه شده‌اند ]18[. با توجه به اینکه نیاز به رابطی استاندارد و بهینه جهت استفاده از حداکثر پتانسیل نهان در این دسته از حافظه‌های ذخیره‌ساز کاملاً احساس می‌شود، کمپانی اینتل به همکاری با دیگر صنایع موجود جهت خلق مشخصات فنی NVM Express (یا به‌اختصار NVMe) برای درایوهای جامد PCIe پرداخت.

3-2. بهینه‌سازی نرم‌افزاری سیستم

در سال 2008 میلادی، یک پشته ذخیره‌سازی معمول نرم‌افزاری (به‌عنوان مثال سیستم‌عامل ویندوز کمپانی مایکروسافت و یا پلتفرم لینوکس) در ایجاد تأخیری به میزان 12 میکروثانیه در پردازش فرآیندهای مختلف تأثیرگذار بوده است ]16[. با استفاده از سخت‌افزارهای دیسک سخت، نیازمندی‌های محاسباتی یک پشته نرم‌افزاری به هیچ مشکل‌ساز به شمار نمی‌رفت، اما با پای در میدان گذاشتن حافظه‌های جامد با قابلیت فراهم آوردن تعداد یک میلیون عملیات اعداد صحیح بر یک ثانیه (million-IOPS)، نیازمندی‌های محاسباتی ضروری برای پشتیبانی از تنها یک حافظه جامد به اشباع تعداد ده هسته فیزیکی از پردازنده مرکزی منتهی می‌شده است. یک سرور کالا در حالت میانگین به میزبانی از تعداد 20 تا 40 هسته فیزیکی پرداخته و علاوه بر آن چهارچوب کیس یک سرور تجاری 2U قادر است تا تعداد 24 حافظه جامد 2.5 اینچی را در بطن خود جای دهد، بر همین اساس استفاده کامل و بهینه از حافظه‌های مذکور نیازمند بهبود راندمان پردازشی پشته ذخیره‌سازی جهت اطمینان از عدم بروز گلوگاه‌ از هر دو سمت می‌باشد. آنالیز و بررسی‌های انجام پذیرفته توسط تیم ما موفق به کاهش میزان نیازمندی محاسباتی اشاره شده از دو طریق مختلف شده است:

1) طراحی رابط کنترلری جهت تکمیل فرآیندهای ورودی و خروجی به‌صورت مستقل به جای وابستگی تدارک این مهم به رجیسترهای خوانش میزبان وضعیت نظیر فرآیندهای مورد استفاده توسط رابط کنترلر میزبان اپلیکیشن‌های نرم‌افزاری (به‌اختصار AHCI) و؛

2) فراهم آوردن بستری جهت تطبیق مقیاس کارایی با توجه به تعداد هسته‌های حاضر در بطن سیستم به‌وسیله هدایت اتمام پردازش عملیات ورودی و خروجی به سمت هسته فیزیکی مورد درخواست (از طریق استفاده از تعداد چندین صف و وقفه‌های برداری). هر دو روش اشاره شده توسط فناوری NVMe مورد پشتیبانی قرار گرفته‌اند.

با اعمال بهینه‌سازی‌های اشاره شده، تحلیل و بررسی‌های انجام شده توسط ما نمایانگر تقسیم عملیات پردازش به‌صورت کاملاً مساوی در سیستم پرونده‌ها (فایل‌ها)، بلاک ورودی و خروجی و پروتکل پردازشی، مکانیسم تغییر محتوا و درایورهای راه‌انداز بوده‌اند. توسعه‌دهندگان درایور NVMe سیستم‌عامل لینوکس لایه‌های پروتکلی معمول نظیر SCSI/ATA را نادیده گرفته و در عوض به اتصال مستقیم بلوک و لایه‌های درایور به یک پشته ذخیره‌سازی بسیار بهینه برای حافظه‌های جامد NVMe نمودند. وصله Bjorling blk-mq (لایه بلوکی چند ضلعی) به کاهش تعداد دستورالعمل‌های و مغایرت‌های موجود در پشته ورودی و خروجی منتسب به بلوک ذخیره‌سازی پرداخته است که نتیجه آن به نزول نیازمندی‌های محاسباتی مورد نیاز برای پشته ذخیره‌سازی سیستم‌عامل لینوکس از 9 به 4 میکروثانیه منتهی شده است. پس از آن مؤلف Yang et al با جداسازی سویچ‌های محتوا از مسیر موجود درون فرآیند نمونه‌برداری به نمایش تجربی حداقل 1.5 میکروثانیه برای پشته ذخیره‌سازی پرداخته است.

با توجه به اینکه بسیاری از اپلیکیشن‌های مختلف به حافظه ذخیره‌سازی با استفاده از بستر سیستم فایل می‌پردازند، ما علاوه بر آن به بررسی سربارهای پردازشی ایجاد شده توسط پسوند فرمتی Ext3 نیز پرداخته و دانستیم که مسیر کد در حالت کلی دارای سربار نسبتاً کوچکی به‌اندازه 1.5 میکروثانیه می‌باشد (در نتایج نشان داده نشده است). اگرچه، ما همچنین نیز مشاهده کردیم که قالب‌های خط و مشی (Policies) و متادیتا (Metadata) مبتنی بر مفروضات دیسک سخت (به عبارتی دیگر بهینه‌سازی شده برای دسترسی متوالی و پی‌درپی) بوده و تأثیر بیشتری بر کارایی نهایی سیستم داشته‌اند. در زمان تحلیل و بررسی، تلاش‌های مختلفی جهت طراحی سیستم‌های فایلی آگاه از فناوری NVM در حال جریان بوده‌اند.

اخیراً مؤلف Sehgal et al به تائید اعتبار بررسی‌های انجام پذیرفته توسط تیم ما به‌وسیله مقایسه تجربی جامعی از فایل‌های سیستمی آگاه از فناوری NVM (پسوندهای PMFS و F2FS) با تعداد شش مکانیسم انتخابی دیگر (فایل‌های سیستمی Ext 2، Ext3، Ext4، XFS و NILFS2) مبادرت ورزیده است. منبع مذکور نمایانگر رویکرد تدارک فایل‌های سیستمی در پنج درصد پسوند PMFS برای سربارهای پردازشی بنچمارک‌های جهان حقیقی با انتخاب خط و مشی‌های مناسب و درست (حالات نشر، خط و مشی‌های تخصیص و اجتناب از بافر کش با استفاده از فرامین اجرا در مکان) می‌باشد. با مرتفع‌سازی این مهم، عملکرد فایل‌های سیستمی جدیدتر نظیر NOVA ]25[ به فراتر از پساوند ضمیمه معمول نظیر PMFS افزایش پیدا کرده است.

در نهایت ما به دنبال تائید اعتبار میزان پایداری پشتیبانی از مدل‌های مبتنی بر بسط حافظه اصلی دینامیک از طریق فرآیندهای پیجینگ (Paging) رفتیم (عکس 1 (b)). به لحاظ تاریخی، فرآیند پیجینگ به دلیل وجود میزان تاخیرات ذخیره‌سازی بالا، حتی در قالب حافظه‌های جامد مبتنی بر تراشه‌های حافظه NAND گزینه ایده‌آلی به شمار نمی‌رفت. منبع Yang نشان داد که با استفاده از نسخه 2.x هسته کرنل سیستم‌عامل لینوکس، خط و مشی‌های پیجینگ محور دیسک‌های سخت به بروز سرچشمه‌های بالا (بیشتر از 60 میلی‌ثانیه) منتهی می‌شود. تحلیل و بررسی‌های انجام پذیرفته توسط ما (از زمان عرضه نسخه 3.18 هسته کرنل لینوکس) نشانگر آن می‌باشند که با ایجاد تغییرات در خط و مشی‌های مربوطه، کدهای مورد نیاز جهت تعبیه‌سازی قابلیت پیجینگ منجر به بروز تأخیری تنها به میزان 5 میکروثانیه در سیستم ذخیره‌سازی می‌شود. خط و مشی پیش‌فرض جهت پیش انتقال (Prefetch) و مبادله تعداد چندین بلوک ممکن است برای دیسک‌های سخت مطلوب به شمار روند، اما برای حافظه‌های جامد Optane خیر.

با توجه به‌اندازه‌های انجام پذیرفته در نسخه 4.6.7 هسته کرنل لینوکس با استفاده از تنها یک هسته فیزیکی، فرآیند از دست دادن یک صفحه نیازمند میزان زمانی برابر با 92 میکروثانیه به‌صورت میانگین برای یک حافظه جامد NAND می‌باشد، در حالی که این مقدار در یک حافظه جامد مبتنی بر فناوری Optane کمپانی اینتل به 16 میکروثانیه تحلیل پیدا می‌کند. به‌منظور بهبود مقیاس کارایی عملیات پیجینگ در حالت چند هسته‌ای، توسعه‌دهندگان سیستم‌عامل لینوکس در حال کار جهت جداسازی منابع مغایرت می‌باشند. ما به نمایش نتایج میزان پایداری استفاده از حافظه‌های جامد Optane کمپانی اینتل برای گسترش قابلیت استفاده از حافظه‌های دینامیک در سربارهای پردازشی جهان حقیقی در بخش‌های بعدی مقاله می‌پردازیم.

صرفه نظر از ناکارآمدی اشاره شده، ما دریافتیم که مکانیسم‌های نرم‌افزاری و سخت‌افزاری سیستم، از جمله فایل‌های سیستمی و پیاده‌سازی‌های پیجینگ در وضعیت مطلوبی به سر می‌برند. ما با توجه به سیاست‌ها و خط و مشی‌هایی نظیر وقفه‌های تلفیق موجود در درایورهای راه‌انداز، ادغام ورودی و خروجی‌های حاضر در فرآیندهای زمان‌بندی و پیش انتقال موقتی داده‌ها که برای ذخیره‌سازی آهسته بهینه شده‌اند به افشا نمودن غلظت تأخیر با استفاده از ساختارهای لاگ به جای رویه‌های به‌روزرسانی در مکان و همچنین به‌کارگیری یک بافر کش واسط پرداختیم. چنین خط و مشی‌هایی از دلیل و منطق برای دیسک‌های سخت و حتی حافظه‌های جامد NAND برخوردار می‌باشند، اما برای حافظه‌های جامد Optane کمپانی اینتل، نقطه تعادل سیستم با تغییراتی همراه گشت؛ پیاده‌سازی زمان‌‌بندی‌های ورودی و خروجی مصنوعی و سطح بالا علاوه بر اینکه لازم و ضروری به شمار نرفته، بلکه به‌عنوان محدودیتی در سد راه نیز قرار می‌گیرند. معمولاً تغییرات خط و مشی اشاره شده برای پیاده‌سازی از سهولت برخوردار می‌باشند که خود در ارائه بهترین نرخ بازگشت منابع بهینه‌سازی تأثیرگذار می‌باشد.

عکس 3  با استفاده از رسم نمودارهای IOPS نسبت به میزان تأخیر سیستم برای تعداد سه پلتفرم مختلف (ساتا، HBA، SAS HBA و حافظه جامد مبتنی بر شکاف PCIe؛ تماماً با برخورداری از یک لینک دارای پهنای باند چهار گیگابایت بر ثانیه به سمت میزبان) نمایانگر تأثیر بسیاری از کارهای چند صنعته توصیف شده در این بخش می‌باشد. ذکر این نکته ضروری است که تنها بخش نرم‌افزار و تأخیر سیستم و نسبت توان عملیاتی در نمودارهای فوق به نمایش درآمده و تأخیر چندرسانه‌ای جهت معطوف نمودن تمرکز بر تأثیرات اعمال شده بر سیستم به از نتایج مستثنی شده‌اند. برای نقاط داده ساتا و SAS، ما به اتصال تعداد کافی حافظه‌های جامد NAND به‌منظور اشباع نمودن تعداد یک بستر ساتا یا SAS HBA برای فراهم آوردن شرایط منصفانه جهت مقایسه پرداختیم. ترکیب بهینه‌سازی نرم‌افزاری و سخت‌افزاری سیستم یک رابط NVMe را قادر ساختند تا به میزان حداکثر بار تئوری قابل تحمل توسط شکاف‌های PCIe (در حدود تعداد هشت‌صد هزار عدد صحیح چهار کیلوبایتی بر یک ثانیه) دست پیدا کند.

بررسی کارایی پلتفرم‌های ذخیره‌ساز دائمی اطلاعات مبتنی بر فناوری 3D XPoint - بخش دوم

عکس 3: نمودار زمان پاسخ‌گویی 99.99 درصد (به‌غیر از چند رسانه‌ای) نسبت به پارامتر IOPS برای خوانش دسته‌ای چهار کیلوبایتی از اطلاعات برای سه رابط درایو جامد مختلف.

در نهایت ما به تلفیق یک سیستم کاملاً بهینه شده با حافظه‌های مبتنی بر فناوری 3D XPoint پرداخته و نتایج تاخیرات به دست آمده از حافظه‌های جامد Optane کمپانی اینتل را در عکس 4 به نمایش درآوردیم. برای مقایسه، ما داده‌های حافظه‌های جامد ساتای به جا مانده از سال 2008 و یک حافظه NAND مبتنی بر فناوری NVMe را در نتایج دخیل کردیم. مقدار زمان مورد نیاز به‌منظور دسترسی به یک بلوک چهار کیلوبایتی از یک حافظه جامد Optane کمپانی اینتل و سنجیده شده در باس PCIe هنگام نوشتن اطلاعات توسط فناوری NVMe برای تکمیل یک وقفه کمتر از هشت میکروثانیه می‌باشد که این خود نمایانگر نتایج بهینه‌سازی‌های موجود جهت کاهش میزان تاخیرات پیاده‌سازی شده در حافظه‌های جامد Optane کمپانی اینتل و پیشتر بحث شده است. زمان نهایی موجود در فیمابین اپلیکیشن و حافظه جامد در حدود 11 میکروثانیه می‌باشد که این خود نمایانگر افزودن میزان تأخیری کمتر از چهار میکروثانیه توسط سیستم است. سیستم‌های موجود (هنگام پیکربندی و یا بهینه‌سازی صحیح) منافع ذخیره‌سازی بسیار پایینی را برای اپلیکیشن‌های موجود از خود به نمایش گذاشتند.

بررسی کارایی پلتفرم‌های ذخیره‌ساز دائمی اطلاعات مبتنی بر فناوری 3D XPoint - بخش دوم

عکس 4: از مقایسه‌ای از میزان تاخیر نرم‌افزار تا دستگاه ذخیره‌ساز در درایورهای جامد Optane و حافظه‌های NAND معمولی.

پست های مرتبط

دیدگاه خود را بنویسید