هر آنچه باید درباره SSD Over-Provisioning بدانید

هر آنچه باید درباره SSD Over-Provisioning بدانید

بسیاری از ما بازی مرسوم «پازل 15 مربعی» را به یاد می‌آوریم. باوجود فقط یک مربع خالی، تغییر مکان تکه‌ها به مکان‌های جدید تلاش زیادی می‌خواهد زیرا فضای بسیار کمی وجود دارد. داشتن پازل پانزدهم-شانزدهم به‌صورت کامل باعث می‌شود که انجام بازی به حالتی چالش‌برانگیز و سرگرم‌کننده تبدیل شود اما قطعاً این مورد نوعی از محدودیت عملکردی که شما در یک درایو حالت‌جامد (SSD) انتظار دارید، نیست. تصور کنید که اگر پازلی مشابه فقط با هشت تکه به حالت نیمه‌پر بود، این حالت بازی تقریباً می‌تواند بلافاصله حل شود. فضای آزاد بیشتر، امکان افزایش سرعت حرکت قطعه و تکمیل فرآیند بازی را فراهم می‌کند.

پازل 15 مربعیSSD ها بر مبنای یک اصل بسیار مشابه کار می‌کنند. یک حافظه‌ی فلش NAND را داخل یک SSD به‌مانند یک پازل تجسم کنید، البته به‌استثنای این مورد که میزان فضای آزاد در یک درایو ثابت نیست. تولیدکنندگان از روش‌های مختلفی جهت بهبود عملکرد استفاده می‌کنند و یکی از این روش‌ها، فرآیند اختصاص فضای آزاد بیشتر است که بانام over-provisioning است.

حداقل مقدار over-provisioning برای یک SSD در کارخانه تعیین می‌شود اما کاربران می‌توانند فضای بیشتری را به‌منظور عملکرد بهتر به آن تخصیص دهند. درهرصورت، به درکی متعادل و درست از over-provisioning نیاز است تا بتوان تصمیمات بهتری جهت خرید یک SSD گرفت و همچنین پیکربندی درایوها در سودمندترین راه ممکن برای هر محیط منحصربه‌فرد و حالت‌های استفاده قرار گیرد.

پیشینه و وضعیت: ماهیت نوشتن داده هارددیسک در مقایسه با SSD

یک تمرین دیگر برای تجسم کردن: تصور کنید که یک دایره المعارف 3000 صفحه‌ای دارید که کاملاً به‌صورت تصادفی چیده شده است و درواقع در این دایره المعارف هیچ‌یک از نوشته‌ها به ترتیب قرار نگرفته‌اند. تنها راه امکان‌پذیر برای یافتن هر بخش اطلاعاتی که نیاز دارید، استفاده از فهرست مندرجات که شماره صفحه‌ی هر نوشته را نگه می‌دارد، است. بدون وجود این فهرست، کتاب عمدتاً و طبیعتاً غیرقابل‌استفاده می‌شود.

این مدل نشان می‌دهد که چگونه اطلاعات به‌صورت کلی روی هارددیسک‌ها نوشته می‌شوند. داده‌ها هر جا که مناسب باشد و اغلب به‌گونه‌ای که به بهترین شکل به عمل خواندن/نوشتن کمک کنند، قرار می‌گیرند. موقعیت فیزیکی داده‌ها مهم نیست زیرا جدول فایل اصلی (Master File Table) که با عنوان MFT یاد می‌شود، هر بخشی از اطلاعات را ردیابی می‌کند. پاک کردن یک فایل در هارددیسک غیرضروری است. فقط کافی است آن را در MFT پاک‌کنید و ببینید که از دیدگاه host (میزبان) نیز حذف‌شده است. تنها زمانی که داده‌های جدید به‌طور فیزیکی داده‌های قدیمی را overwrite می‌کنند، آن‌ها واقعاً پاک می‌شوند؛ به همین دلیل یک نرم‌افزار ویژه عموماً می‌تواند فایل‌های حذف‌شده از سیستم را بازیابی کند. نکته‌ی کلیدی و مهم این است که برای هارددیسک اهمیتی ندارد که آیا در سکتورها داده‌ای وجود دارد یا خیر. host فقط سکتورهای مشغول و یا در دسترس برای نوشتن را می‌بیند.

SSD ها بسیار متفاوت عمل می‌کنند. واحد بنیادین و اصلی حافظه‌ی فلش NAND معمولاً یک صفحه‌ی 4 کیلوبایتی (4KB) است و معمولاً در یک بلوک، 128 صفحه قرار دارد. نوشتن (write کردن) می‌تواند در قالب یک صفحه در یک واحد زمان صورت پذیرد اما فقط در صفحات خالی یا پاک‌شده. صفحه‌ها نمی‌توانند به‌صورت مستقیم overwrite شوند بلکه ابتدا باید پاک شوند. بااین‌حال، پاک کردن یک صفحه بر مبنای این اصل که همه‌ی بلوک‌های صفحات باید در یک واحد زمانی پاک شوند، امری پیچیده است. هنگامی‌که host می‌خواهد در یک آدرس جدید عمل بازنویسی را انجام دهد، SSD درواقع روی یک صفحه‌ی خالی دیگر write می‌کند و سپس جدول آدرس بلوک منطقی (LBA: Logical Block Address) را به‌روز می‌کند که این مورد بسیار شبیه به جدول MFT در HDD است. در داخل جدول LBA، صفحه‌ی اصلی با عنوان «نامعتبر» مشخص‌شده است و صفحه‌ی جدید نیز با عنوان مکان فعلی برای داده‌های جدید علامت‌گذاری شده است. قطعاً SSD ها باید این صفحات نامعتبر داده‌ها را در برخی موارد پاک کنند وگرنه فضای قابل‌استفاده در SSD سرانجام پر می‌شود. SSD ها به‌صورت دوره‌ای از یک فرآیند که اصطلاحاً جمع‌آوری زباله (garbage collection) نامیده می‌شود، برای پاک کردن صفحات نامعتبر داده‌ها استفاده می‌کنند.
در طول این فرآیند، کنترل‌کننده‌ی SSD یا کنترل‌کننده‌ی فلش (flash controller) که حافظه‌ی فلش NAND در SSD را مدیریت می‌کند، تمام صفحات خوب یک بلوک را می‌خواند (پرش از صفحات نامعتبر) و آن‌ها را روی یک بلوک جدیداً پاک‌شده می‌نویسد و سپس بلوک اصلی پاک می‌شود و بدین ترتیب آن را برای داده‌های جدید آماده می‌کند.

میزان Over-Provisioning

تمام SSD ها مقدار کمی از فضا را برای این عملیات اضافی مربوط به نوشتن و همچنین برای میان‌افزار کنترل‌کننده، جایگزینی‌های ناموفق بلوک و دیگر ویژگی‌های منحصربه‌فرد که با توجه به نوع کنترل‌کننده‌ی SSD متفاوت است و تغییر می‌کند، اختصاص می‌دهند. حداقل اندوخته به بیان ساده تفاوت بین قراردادهای نام‌گذاری دودویی (باینری) و ده‌دهی (دسیمال) است. بسیاری از مردم نمی‌دانند که یک گیگابایت (1GB) دقیقاً 1,000,000,000 بایت است و یک گیبی بایت (1GiB) دقیقاً 2^30 = 1,073,741,824 بایت و یا حدود 7.37٪ برابر بیشتر از یک گیگابایت است. همچنین بسیاری از مردم نیز نمی‌دانند که میزان ذخیره سازی به درستی در مقیاس گیگابایت اندازه‌گیری می‌شود، درحالی‌که حافظه به درستی در gigabytes اندازه‌گیری می‌شود. باوجوداینکه SSD ها از تراشه‌های حافظه‌ی فلش NAND ساخته‌شده‌اند، آن‌ها به‌عنوان دستگاه‌های ذخیره سازی به بازار عرضه می‌شوند و تولیدکنندگان SSD، 7.37٪ فضای اضافی از حافظه را به‌عنوان بخشی برای فعالیت‌های پس‌زمینه‌ای به‌مانند جمع‌آوری زباله‌ها (garbage collection) ذخیره می‌کنند. به‌عنوان‌مثال، یک  SSD با ظرفیت 128 گیگابایتی به‌طور ذاتی 128 * 73,741,824 = 94.4 میلیون بایت Over-Provisiong ذاتی را شامل می‌شود.

میزان Over-Provisioning

بنابراین حتی اگر یک SSD ظاهراً پر باشد، هنوز 7.37٪ از فضای موجود در دسترس باقی خواهد ماند که منجر می‌شود کارایی و انجام عمل نوشتن (write) حفظ شود. با این وجود، به‌احتمال‌زیاد، کارایی نوشتن (write) در این سطح و مرحله تغییر می‌کند. (تصور کنید از منظر پازل 15 مربع با فقط یک مربع آزاد است).

در عمل، کارایی SSD پس از حدود 50٪ کامل شدن، شروع به کاهش یافتن می‌کند. به همین دلیل برخی از تولیدکنندگان، ظرفیت‌های موجود در اختیار کاربر را کاهش داده و آن را در کنار over-provisioning اضافی قرار می‌دهند. به‌عنوان‌مثال، یک سازنده ممکن است 28 از 128 گیگابایت را رزرو کند و پیکربندی نهایی آن را به‌عنوان یک SSD صدگیگابایتی با 28 درصد over-provisioning به بازار عرضه کند. در حقیقت، این 28 درصد علاوه بر 7.37 درصد ذاتی توکار قرارگرفته، است؛ بنابراین خوب است آگاه باشیم که چگونه فروشندگان این اصطلاحات را به‌نوعی دور می‌ریزند! همچنین کاربران باید در نظر داشته باشند که یک SSD به کار گرفته‌شده به‌ندرت کامل است. SSD ها از وجود این ظرفیت استفاده‌نشده سود می‌برند و به شکلی پویا از آن به‌عنوان over-provisioning اضافی استفاده می‌کنند.

SSD صدگیگابایتی با 28 درصد over-provisioning

درصد های over-provisioning

بعضی از تولیدکنندگان SSD ابزارهایی نرم‌افزاری را ارائه می‌دهند تا امکان over-provisioning درایوها را برای کاربر فراهم کنند. درواقع، حتی بدون یک نرم‌افزار خاص، هر کاربر می‌تواند بخشی از SSD را هنگامی‌که اولین بار آن را در سیستم قرار می‌دهد با ایجاد یک پارتیشن که از ظرفیت کامل درایو استفاده نمی‌کند، کنار بگذارد. این فضای غیر استفاده‌شده، به‌طور خودکار توسط کنترلر به‌عنوان over-provisioning پویا استفاده می‌شود.

یک اشکال آشکار در over-provisioning وجود دارد و این است که: هرچه ظرفیت استفاده‌نشده‌ی بیشتری برای افزایش سرعت write کردن ذخیره شود، ظرفیت کمتری برای ذخیره سازی وجود دارد. با استفاده از درایوهای هارد، تقریباً مشابه عمل یک ضربه‌ی کوتاه که خواندن و نوشتن در سریع‌ترین ترک (track) یا شیارهای بیرونی صفحات درایو را محدود می‌کند، دارای تاوان کمتری است زیرا هزینه‌های هر گیگابایت با رسانه‌های مغناطیسی کم‌تر است. در حدود 1 تا 3 دلار به ازای هر گیگابایت برای SSD های کلاس enterprise، تصمیم‌گیری برای جدا کردن 25 درصد یا بیشتر از ظرفیت درایو را مشکل می‌کند. بهتر می‌بود که در هنگام جدا کردن این بایت‌های گران‌بها، مزایایی ارزشمندتر موجود باشد!

در حقیقت، مزایای زیادی نیز وجود دارد اما تحت شرایطی مناسب.

over-provisioning وwrite کردن‌های به‌صورت رندوم و تصادفی در مقایسه با write کردن‌های متوالی و ترتیبی و آنتروپی

over-provisioning وwrite کردن‌های به‌صورت رندوم و تصادفی در مقایسه با write کردن‌های متوالی و ترتیبی و آنتروپی

این نمودار تست انجام‌شده توسط Seagate با استفاده از یک SSD مبتنی بر Toshiba 24nm MLC NAND flash memory و یک کنترلر فلش Seagate® SandForce® SF-2281 با تکنولوژی کاهش داده‌ی DuraWrite را نشان می دهد. در اینجا موارد بیشتری نسبت به آن‌هایی که ممکن است در ابتدا ظاهر شوند، برای در نظر گرفتن وجود دارند. حال بهتر است به توضیح چند عنصر کلیدی در رابطه با الگوهای داده‌ای تصادفی در مقایسه با متوالی، ارائه بدهیم. هنگامی‌که یک SSD جدید به‌عنوان خروجی کارخانه تولید می‌شود، نوشتن‌ها (write) به‌تدریج درایو را در یک الگوی خطی تصاعدی پر می‌کند تا زمانی که فضای ذخیره سازی قابل آدرس‌دهی به‌طور کامل نوشته شود. اساساً، این مورد بیانگر شرایط نوشتن به‌صورت ترتیبی و به شکلی مطلوب و ایده آل است. هیچ garbage collection ای در این مرحله نتوانسته است نقشی داشته باشد و توده‌های کوچکی از داده‌های نامعتبر ناشی از حذف، تاکنون بر عملکرد تأثیر گذاشته‌اند، زیرا نیازی به نوشتن در آن توده‌ها با داده‌های جدید نیست.

به‌هرحال هنگامی‌که garbage collection شروع می‌شود، روشی که داده‌ها در آن نوشته می‌شوند – به‌طور متوالی در مقابل شکل تصادفی – بر عملکرد تأثیر می‌گذارد. داده‌های به‌طور متوالی نوشته‌شده از host به‌طور مداوم تمام بلوک‌های حافظه‌ی فلش را پر می‌کند و هنگامی‌که داده‌ها جایگزین می‌شود، کل بلوک صفحات را جایگزین می‌کند. سپس در طول garbage collection تمام صفحات در آن بلوک نامعتبر هستند و نیازی نیست که هیچ‌چیزی به بلوک دیگری منتقل شود. این مورد سریع‌ترین حالت ممکن garbage collection است. خطوط افقی در «نمودار نوشتن ترتیبی» نشان می‌دهد که عملکرد نوشتن متوالی بدون در نظر گرفتن چگونگی اعمال over-provisioning، نسبتاً ثابت است.

چیزی که در کارایی و اجرا (performance) تأثیر می‌گذارد، میزان آنتروپی داده‌ها است درصورتی‌که SSD با استفاده از یک کنترلر فلش که از یک تکنولوژی کاهش داده پشتیبانی می‌کند، مانند یک کنترل‌کننده‌ی فلش SandForce، بر عملکرد و کارایی تأثیر می‌گذارد. آنتروپی داده‌ها اندازه‌گیری تصادفی این داده‌ها است، نه داده‌هایی که به‌صورت تصادفی در مقابل ترتیبی نوشته می‌شوند. به‌عنوان‌مثال، یک فایل داده‌ی کاملاً رمزنگاری‌شده، یک فیلم MPEG یا یک فایل ZIP فشرده دارای بالاترین آنتروپی هستند، درحالی‌که پایگاه داده، فایل‌های اجرایی و سایر انواع و فرمت فایل‌ها دارای آنتروپی پایین‌تری هستند. چنان‌که آنتروپی داده‌ها کاهش می‌یابد، کنترلر فلش باقابلیت کاهش نوشتن، از آنتروپی پایین‌تر بهره‌مند می‌شود و میزان کارایی بیشتری را ارائه می‌دهد. بااین‌حال، عملکرد آن با یک سطح ارائه‌شده‌ی over-provisioning زمانی که به شکل ترتیبی نوشته‌شده باشد، ثابت باقی می‌ماند.

over-provisioning وwrite کردن‌های به‌صورت رندوم و تصادفی در مقایسه با write کردن‌های متوالی و ترتیبی و آنتروپی

در مقابل، هنگامی‌که داده‌ها به‌طور تصادفی روی SSD نوشته می‌شوند، داده‌هایی که نامعتبر هستند، در سراسر و کل SSD پراکنده‌شده و تعداد زیادی سوراخ‌های کوچک را در هر بلوک ایجاد می‌کنند. سپس وقتی garbage collection بر روی یک بلوک حاوی داده‌های نوشته‌شده به‌طور تصادفی عمل می‌کند، قبل از اینکه بلوک بتواند پاک شود، باید داده‌های بیشتری به بلوک‌های جدید منتقل شوند. خط قرمز نمودار تصادفی write کردن که کمی بالاتر آمده، نشان می‌دهد که بیشتر SSD ها چگونه کار می‌کنند. توجه داشته باشید که در این مورد، همان‌طور که مقدار over-provisioning افزایش میابد، میزان رشد کارایی بسیار قابل‌توجه و چشمگیر است. فقط حرکت از 0٪ over-provisioning به 7٪ OP کارایی را تا نزدیک به 30٪ بهبود می‌بخشد. با کنترلرهای فلش که از فناوری کاهش داده استفاده می‌کنند، افزایش کارایی به آن اندازه قابل‌توجه و چشمگیر نیست اما کارایی همچنان برای هر سطح مشخص OP به‌طور قابل‌توجهی بالاتر است.

provisioning و تقویت نوشتن (write کردن)

همان‌طور که قبلاً بیان شد، write کردن SSD عموماً شامل نوشتن داده‌ها بیش از یک‌بار می‌شود: در ابتدا هنگام ذخیره کردن داده‌ها برای اولین بار و سپس هنگام انتقال اطلاعات معتبر در طول دوره‌های متعدد garbage collection. درنتیجه، برای داده‌های بیشتر، نسبت به صادر شدن توسط سیستم host به‌طور اوریجینال، رایج‌تر است که روی حافظه‌های فلش SSD نوشته شوند. این اختلاف به‌عنوان تقویت نوشتن (write کردن) شناخته می‌شود و به‌طورکلی به‌صورت چندگانه بیان می‌شود. به‌عنوان‌مثال، اگر 2 مگابایت داده روی فلش نوشته شود درحالی‌که تنها 1 مگابایت از سوی host صادرشده باشد، این مورد نشان‌دهنده‌ی تقویت نوشتن از 2.0 است. بدیهی است، تقویت نوشتن نامطلوب است زیرا به این معنی است که اطلاعات بیشتری که در media نوشته می‌شوند، موجب افزایش استهلاک و تأثیر منفی بر کارایی با مصرف پهنای باند گران‌قیمت به حافظه‌ی فلش می‌شوند. عوامل متعددی می‌توانند در تقویت نوشتن نقش داشته باشند که مهم‌ترین آن‌ها این است که درصد داده‌های نوشته‌شده به‌طور تصادفی در مقابل ترتیبی به چه شکل است. به‌گونه‌ای شگفت‌آور، همچنین ممکن است داده‌های کمتری برای فلش نوشته شود تا توسط host صادر شود. (این مورد به‌عنوان تقویت نوشتن، مثلاً 0.5 یا 0.7 بیان می‌شود.) تکنولوژی کاهش داده‌ی DuraWrite شاید بهترین روش شناخته‌شده‌ی امروزه برای انجام این کار از طریق دست‌کاری داده به شکل بلادرنگ (real-time) است. فقط SSD هایی با یک تکنولوژی کاهش داده‌ی مشابه می‌توانند تقویت نوشتن کمتر از یک را ایجاد کنند. همان‌طور که آنتروپی داده‌ها از host پایین می‌آید، تکنولوژی DuraWrite باعث می‌شود داده‌های کمتر و کمتری روی حافظه‌ی فلش نوشته شوند و فضای بیشتری برای over-provisioning فراهم می‌شود. بدون یک تکنولوژی کاهش داده‌ی مشابه، یک SSD با تقویت نوشتن بالاتر فیکس خواهد شد.

provisioning و تقویت نوشتن (write کردن)

توجه داشته باشید که تکنیک‌های over-provisioning اضافی و یا یک تکنیک کاهش داده مانند تکنولوژی DuraWrite می‌توانند نتایج مشابه تقویت نوشتن را با سازش‌های (trade-off) متفاوت به دست آورند. بنچمارک یا معیار ارزیابی نشان می‌دهد که تنها درایوهای با تکنولوژی کاهش داده‌ی DuraWrite یا چیزی شبیه به آن می‌توانند از کاهش تقویت نوشتن مرتبط با آنتروپی و بهبود عملکرد حاصل از آن استفاده کنند و بهره ببرند. SSD های متعارف بدون یک تکنولوژی مشابه محدود به تقویت نوشتن از سطح over-provisioning داده‌شده را فراهم می‌کنند. به‌عنوان‌مثال، یک SSD متداول با 28٪ over-provisioning همان تقویت نوشتن (3.0) را به‌عنوان یک SSD با تکنولوژی DuraWrite نوشتن 75٪ آنتروپی جریان با 0٪ over-provisioning، نشان می‌دهد؛ همه‌ی عوامل دیگر برابر هستند؛ به‌عبارت‌دیگر، این سناریو نشان می‌دهد که چگونه یک SSD مجهز به تکنولوژی DuraWrite می‌تواند همان میزان تقویت نوشتن را به‌عنوان یک SSD استاندارد نمایش دهد درحالی‌که 28 درصد از ظرفیت ذخیره‌سازی را احیا و اصلاح می‌کند.

سطح بعدی بهره‌وری و راندمان

یک SSD به‌صورت ذاتی نمی‌داند که کدام بلوک داده‌ها نامعتبر و در دسترس برای جایگزینی با داده‌های جدید هستند. تنها زمانی که سیستم‌عامل (OS: Operating System) تلاش می‌کند اطلاعات جدید را در یک مکان که قبلاً استفاده‌شده ذخیره کند، SSD می‌داند که یک مکان ویژه دارای داده‌های نامعتبر است. تمام فضای آزادی که توسط کاربر مصرف نمی‌شود، برای نگهداری هر آنچه SSD معتقد است داده‌ای معتبر هست، در دسترس قرار می‌گیرد. به همین دلیل است که صنعت ذخیره‌سازی (storage) دستور TRIM را ایجاد کرد. TRIM سیستم‌عامل را قادر می‌سازد SSD را در مورد صفحاتی که در حال حاضر حاوی اطلاعات غیرضروری هستند، آگاه کند تا آن‌ها بتوانند با عنوان نامعتبر برچسب‌گذاری شوند. هنگامی‌که این کار انجام می‌شود، لازم نیست که صفحات در هنگام garbage collection و یکنواخت کردن کپی شوند. این مورد باعث کاهش تقویت نوشتن و بهبود عملکرد و کار آیی می‌شود. تصویر زیر نشان می‌دهد که TRIM به چه میزان تفاوت در اجازه دادن به در دسترس قرار گرفتن ظرفیت بیشتر برای over-provisioning، می‌تواند ایجاد کند.

سطح بعدی بهره‌وری و راندمان

TRIM یکی دیگر از روش‌هایی است که فروشنده‌ها می‌توانند از آن برای تقویت over-provisioning استفاده کنند، درنتیجه میزان عملکرد و کارایی و طول عمر درایو افزایش میابد. این مورد، یک‌راه برتر برای اصلاح ظرفیت SSD برای تسریع در مقایسه با تحمیل درایوها که به‌طور دائمی تسلیم ظرفیت‌های بزرگ خود می‌شوند را نشان می‌دهد. استفاده از TRIM همراه با فنّاوری DuraWrite و یا ترکیبی مشابه از فناوری‌های مکمل، می‌تواند حتی نتایج قابل‌توجه بیشتری را به ثمر رساند.

نتیجه‌گیری

خریداران باید نگاهی دقیق به میزان حجم و بار کاری خود داشته باشند و در نظر بگیرند که فناوری‌های SSD بر اساس دلارهای سرمایه‌گذاری شده رویشان، بیشترین مزیت را ارائه می‌دهند. با کاهش تقویت نوشتن و استفاده از فناوری‌هایی که عملیات SSD را کارآمدتر می‌کنند، خریداران نه‌تنها امکان ذخیره‌سازی (storage) بیشتری به ازای هر دلار می‌گیرند، بلکه ذخیره‌سازی سریع‌تر و طولانی‌تر از مقداری که سایر گزینه‌ها فراهم می‌کنند، عمل می‌کند.