نحوه کار و آشنایی با IOmeter - بخش دوم

این دومین قسمت از مجموعه تست عملکرد SSD است.در قسمت قبل، از حافظه فلش به طور کلی صحبت کردیم.این قسمت را به این موضوع اختصاص می دهیم که وقتی صفحات SSD شما برای ذخیره کردن در حال اتمام است باید چه کنید؟ پس شما را دعوت می کنیم که بخوانید و یاد بگیرید!Garbage Collectionتغییر دادن داده هایی که بر روی SSDها ذخیره شده اند از تغییر این داده ها در صورتی که بر روی هارد درایو ذخیره هستند، سخت تر است. در هارد درایو به سادگی می توان داده ها را Overwrite کرد. اساسا وقتی میخواهیم دیتای یک صفحه را در SSD تغییر دهیم، دیتای آن صفحه تغییر نمی کند، چون باید ابتدا آن را پاک کنیم. این کار هم فقط با پاک کردن کل Block ممکن است. برای حل این مشکل، صفحه ای که تغییر یافته است، بر روی صفحه دیگری که خالی است ذخیره می شود، و صفحه ای که باید تغییر یابد، به عنوان "قدیمی" علامت گذاری می شود. تا زمانی که SSD صفحه ای خالی دارد این روش نوشتن و علامت گذاری یک صفحه به عنوان قدیمی ممکن است. ولی زمانی خواهد رسید که این صفحات خالی تمام می شوند. برای اجتناب از این وضعیت، فرآیندی به نام Garbage Collection در SSD انجام می شود. این کار سختی است که توسط SSD controller انجام می شود که خود به تنهایی یک کامپیوتر با CPU و حافظه مستقل است. این Controller مدیریت کل دیتای ذخیره شده بر روی SSD را بر عهده دارد.سیستم عامل از این که در بطن ماجرا چه می گذرد کاملا بی خبر است و فقط دستور می دهد که دیتایی بر روی یک قسمت logical خاص از دیسک نوشته شود. قرار دادن دیتا بر روی دیسک به صورت فیزیکی توسط SSD controller انجام می شود. تنها کاری که سیستم عامل های مدرن انجام می دهند این است که یک دستور TRIM به SSD می فرستند که به آن بگویند بخشی از دیتا حذف شد. این کار، فرآیند Garbage Collection را قدری ساده تر می کند چون SSD بیشتر در جریان این مساله قرار می گیرد که کدام صفحه ها دیگر معتبر نیستند. در طول فرآیند SSD Controller Block ،Garbage Collectionها را پاک می کند تا صفحه ها را خالی کند. ولی نمی توان هر Blockی را پاک کرد، چون برخی صفحات دیتای معتبری دارند که روی آنها ذخیره شده است. همچنین این امکان وجود ندارد که Block هایی را که فقط صفحات قدیمی دارند یافته و آنها را پاک کنیم. چون ممکن است تعداد این Blockها تمام شود، مثلا در صورتی که هر Block روی دیسک حداقل یک صفحه معتبر داشته باشد.Garbage Collection کاری که SSD در طول فرآیند Carbage Collection انجام می دهد این است که تمام صفحات معتبر را از یک Block خاص به یک Block جدید بازنویسی می کند. Block بعدی که صفحات از روی آن کپی شدند می تواند پاک شده باشد. SSD معمولا Blockهایی را برای Garbage Collection انتخاب می کند که هیچ صفحه آزادی ندارند. می توان زمان معینی برای انجام Garbage Collection پیش بینی کرد چون این فرآیند بعضا فقط در زمان تغییر دیتا صورت می گیرد. در بعضی مواقع که از SSD استفاده نمی شود این فرآیند در پس زمینه انجام می شود. زمان انجام Carbage Collection به Controller بستگی دارد و این زمان را فقط سازنده Controller می داند. معمولا Enterprise SSDها Garbage Collection را فقط در زمان نوشتن انجام می دهند و Garbage Collection پس زمینه فقط برای SSDهای معمولی استفاده می شود. Enterprise SSDها از Garbage Collection پس زمینه پشتیبانی نمی کنند تا از نوشتن های غیر ضروری جلوگیری کنند (وقتی Block ها کپی می شوند) که باعث افزایش طول عمر دیسک می شود. طراحی به این صورت انجام شد چون حافظه فلش تعداد نوشتن محدودی دارد و بعد از آن دیگر قابل استفاده نیست. Garbage Collection پس زمینه در یک محیط Enterprise اصلا مناسب نیست چون دستگاه وقتی برای انجام این کار ندارد. اما SSDهای معمولی چنین بار کاری بالایی ندارند و معمولا سازندگان تصمیم می گیرند Garbage Collection پس زمینه را در این نوع SSDها تعبیه کنند تا دستگاه با سرعت بیشتری کار کند.فرآیند Garbage Collection در SSDها به اختصار توضیح داده شد چون تاثیر قابل ملاحظه ای بر عملکرد دارد. وقتی SSD فرآیند Garbage Collection را در طول نوشتن انجام می دهد سرعت آن به طور قابل ملاحظه ای کاهش می یابد مخصوصا زمانی که برای تکمیل نوشتن، Blockهای زیادی باید بازنویسی شوند. در بسیاری از موارد، دیسک باید دیتای بسیار زیادی نسبت به آنچه سیستم عامل برایش فرستاده است بنویسد چون Blockهای زیادی باید در طول Garbage Collection بازآرایی شوند.این پایان کار نیست! منتظر بخش های بعدی این مقاله باشید.منبع