حافظه نهان در هارد دیسک ها چیست

ذخیره کردن سوابقدر یک دستگاه ذخیره سازی با استفاده از حافظه فرار با سرعت بالا برای جمع آوری دستورات نوشتاری ارسال شده به دستگاه های ذخیره سازی و ذخیره آنها تا زمانی که رسانه های کندتر (چه دیسک های فیزیکی و چه فلش مموری ارزان قیمت) بتوانند آنها را کنترل کنند. اکثر دستگاه هایی که از کش نویسی استفاده می کنند به منبع تغذیه بی وقفه نیاز دارند.

برای مدیریت ذخیره دیسک نوشتن ، باز کنید کنترل پنل - مدیر دستگاه.

در فصل دستگاه های دیسکروی درایو مورد نظر خود دوبار کلیک کنید.

به برگه بروید سیاستمداران

حذف سریع

این مقدار معمولاً بهترین انتخاب برای دستگاه هایی است که ممکن است نیاز به حذف مکرر از سیستم داشته باشند ، مانند درایوهای فلش USB ، SD ، MMC ، Compact Flash یا کارت های حافظه مشابه و سایر دستگاه های ذخیره سازی قابل شارژ خارجی.

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

این گزینه معمولاً برای دستگاه هایی که نیاز به ارائه سریعترین عملکرد ممکن دارند مطلوب است. برای دستگاه هایی که به ندرت از سیستم حذف می شوند. اگر این گزینه انتخاب شده و دستگاه قبل از نوشتن همه داده ها به سیستم (به عنوان مثال ، هنگام برداشتن درایو فلش USB) از سیستم جدا شود ، ممکن است داده ها از بین بروند.

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

کش را روی دیسک بنویسید

توسط پیش فرض ویندوزاز نوشتن حافظه پنهان بر روی دیسک استفاده می کند. این بدان معناست که سیستم به صورت دوره ای به دستگاه ذخیره سازی دستور می دهد تا تمام داده های موجود در حافظه پنهان را به دستگاه ذخیره اولیه ارسال کند. انتخاب این پارامتر این دستورات دوره ای انتقال داده را غیرفعال می کند. همه دستگاه ها از همه این ویژگی ها پشتیبانی نمی کنند.

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

چگونه می توان تنظیمات نوشتن حافظه پنهان را برای یک دستگاه تغییر داد؟

اکثر دستگاههای ذخیره سازی مصرف کننده مانند درایوهای فلش USB ، کارتهای SD یا MMC یا درایوهای خارجی، اجازه تغییر تنظیمات ذخیره سازی برای دستگاه را نمی دهد. درونی؛ داخلی دیسکهای سختبا رابط های SATA یا SAS ارائه شده با ویندوز معمولاً امکان تغییر این پارامترها (بسته به سازنده دستگاه) فراهم می شود. برای درک قابلیت های ذخیره سازی یک دستگاه خاص و تعیین گزینه هایی که بیشتر با نیازهای شما مطابقت دارند ، به اسناد سازنده مراجعه کنید.

درباره جلوگیری از از دست دادن اطلاعات بیشتر بدانید

سیستم هایی که ذخیره نوشتن را در هر مکانی بین برنامه و دستگاه ذخیره سازی فعال کرده اند ، باید پایدار بوده و تحت تأثیر افزایش قدرت قرار نگیرند. اگر دستگاهی که به سیستم متصل است از ذخیره سازی نوشتاری استفاده می کند ، الگوریتم های ذخیره سازی دستگاه فرض می کنند که قدرت مداوم برای حافظه پنهان وجود دارد و داده ها را از و به کش ذخیره می کند. اگر می دانید که سیستم یا منبع تغذیه دارای مشکلات بالقوه ای در زمینه تأمین برق است ، نباید از این فرصت ها استفاده کرد.

همچنین باید دستگاههای ذخیره سازی قابل جابجایی مانند فلش مموری USB ، کارتهای SD ، MMC یا Compact Flash و درایوهای خارجی را با دقت بردارید. هنگام استفاده از پارامتر حذف ایمنویندوز در اکثر سناریوها قادر به محافظت از داده های کاربر خواهد بود. با این حال ، ممکن است درایورها یا برنامه های کاربردی با مدل ویندوز مطابقت نداشته باشند ، که در صورت حذف چنین دستگاه هایی می تواند منجر به از بین رفتن داده ها شود. در صورت امکان ، قبل از برداشتن هر دستگاه ذخیره سازی خارجی از سیستم ، برنامه Safely Remove را باز کنید.

منابع: Windows Help Documentation.

AZPC - رایانه شخصی از A تا Z. پورتال اینترنتی در مورد رایانه های دارای ویندوز.

اجازه دهید به شما یادآوری کنم که ابزار Seagate SeaTools Enterprise به کاربر اجازه می دهد تا خط مشی ذخیره سازی را مدیریت کند و به ویژه ، آخرین درایوهای Seagate SCSI را بین دو تغییر دهد. مدلهای مختلفذخیره سازی - حالت دسکتاپ و حالت سرور. این مورد در منوی SeaTools حالت عملکرد (PM) نام دارد و می تواند دو مقدار داشته باشد- روشن (حالت دسکتاپ) و خاموش (حالت سرور). تفاوت بین این دو حالت کاملاً نرم افزاری است - در مورد حالت دسکتاپ ، حافظه پنهان هارد دیسکبه تعداد ثابتی از قطعات با اندازه ثابت (مساوی) تقسیم می شود و سپس از آنها برای ذخیره دسترسی های خواندن و نوشتن استفاده می شود. علاوه بر این ، در یک آیتم منو جداگانه ، کاربر حتی می تواند تعداد قسمتها را خود اختصاص دهد (بخش بندی حافظه پنهان را مدیریت کند): به عنوان مثال ، به جای 32 قسمت پیش فرض ، مقدار متفاوتی را تعیین کنید (در این مورد ، حجم هر بخش نسبتاً کاهش می یابد).

در مورد حالت سرور ، بخش های بافر (حافظه پنهان دیسک) را می توان به صورت پویا (دوباره) اختصاص داد و اندازه و تعداد آنها را تغییر داد. ریزپردازنده (و سیستم عامل) دیسک به طور پویا تعداد (و ظرفیت) بخش های حافظه پنهان را بسته به دستوراتی که برای اجرا به دیسک می آید ، بهینه می کند.

سپس ما متوجه شدیم که استفاده از درایوهای جدید Seagate Cheetah در حالت "دسکتاپ" (با حالت پیش فرض ثابت به طور پیش فرض - 32 بخش) به جای "سرور" پیش فرض با خرد کردن پویا می تواند عملکرد دیسک را در تعدادی از کارهای دیگر کمی افزایش دهد. معمولی برای رایانه رومیزی یا سرورهای رسانه ای. علاوه بر این ، این افزایش گاهی اوقات بسته به نوع کار و مدل دیسک می تواند به 30-100 ((!) برسد ، اگرچه به طور متوسط ​​30 is تخمین زده می شود ، که می بینید ، همچنین بد نیست. از جمله این وظایف می توان به کارهای معمول رایانه رومیزی (تست WinBench ، PCmark ، H2bench) ، خواندن و کپی فایل ها ، تجزیه و جداسازی آنها اشاره کرد. در عین حال ، در برنامه های صرفاً سرور ، عملکرد درایوها تقریباً کاهش نمی یابد (در صورت سقوط ، به طور قابل توجهی کاهش نمی یابد). با این حال ، ما توانستیم از استفاده از حالت دسکتاپ فقط بر روی دیسک Cheetah 10K.7 سود قابل توجهی را مشاهده کنیم ، در حالی که خواهر بزرگتر آن Cheetah 15K.4 اهمیتی نمی داد که در کدام حالت روی برنامه های رومیزی کار کند.

تلاش برای درک بیشتر نحوه خرد شدن حافظه نهان اینها دیسکهای سختدر مورد عملکرد در برنامه های مختلف و اینکه کدام حالت های تقسیم بندی (چند بخش حافظه) هنگام انجام برخی کارها مفیدتر است ، من تأثیر تعداد بخش های حافظه نهان بر عملکرد را بررسی کردم درایو سیگیتیوزپلنگ 15K.4 در طیف گسترده ای از مقادیر- از 4 تا 128 بخش (4 ، 8 ، 16 ، 32 ، 64 و 128). نتایج این مطالعات در این قسمت از مرور مورد توجه شما قرار می گیرد. اجازه دهید تأکید کنم که این نتایج نه تنها برای این مدل درایوها (یا درایوهای SCSI از Seagate به طور کلی) جالب است - بخش بندی حافظه پنهان و انتخاب تعداد بخشها یکی از اصلی ترین جهتهای بهینه سازی سیستم عامل است ، از جمله درایوهای رومیزی با ATA رابط ، که در حال حاضر نیز مجهز به بافر عمدتا 8 مگابایت هستند. بنابراین ، نتایج عملکرد درایو توصیف شده در این مقاله در کارهای مختلف بسته به خرد شدن حافظه نهان آن نیز مربوط به صنعت درایوهای ATA رومیزی است. و از آنجا که روش آزمون در قسمت اول توضیح داده شد ، بیایید مستقیماً به نتایج خود برسیم.

با این حال ، قبل از ادامه بحث در مورد نتایج ، بیایید ساختار و عملکرد بخش های حافظه نهان درایو Seagate Cheetah 15K.4 را به منظور درک بهتر آنچه در معرض خطر است ، دقیق تر بررسی کنیم. از هشت مگابایت برای حافظه نهان واقعی (یعنی برای عملیات ذخیره سازی) ، 7077 کیلوبایت در اینجا موجود است (بقیه منطقه خدمات است). این ناحیه به بخشهای منطقی (حالت انتخاب صفحه 08h ، بایت 13) تقسیم می شود ، که برای خواندن و نوشتن داده ها (برای انجام عملکردهای پیش خوانی از صفحات و نوشتن معوق به سطح دیسک) استفاده می شود. برای دسترسی به داده های صفحات مغناطیسی ، بخش ها از آدرس منطقی بلوک های درایو استفاده می کنند. درایوهای این سری حداکثر از 64 بخش حافظه پنهان پشتیبانی می کنند ، که طول هر بخش یک عدد صحیح از بخش های دیسک است. مقدار حافظه پنهان موجود ظاهراً به طور مساوی بین بخش ها توزیع می شود ، یعنی اگر مثلاً 32 بخش وجود داشته باشد ، اندازه هر بخش تقریباً 220 کیلوبایت است. با تقسیم بندی پویا (در حالت PM = خاموش) ، بسته به جریان دستورات از میزبان ، می توان تعداد قسمت ها را به طور خودکار توسط هارد دیسک تغییر داد.

برنامه های سرور و دسکتاپ نیاز دارند عملیات مختلفذخیره سازی از دیسک ها برای عملکرد مطلوب ، بنابراین ارائه یک پیکربندی واحد برای انجام بهتر این کارها دشوار است. به گفته Seagate ، برنامه های "رومیزی" برای پاسخ سریع به درخواست های مکرر نیاز به پیکربندی حافظه پنهان دارند تعداد زیادیبخشهای داده کوچک بدون تأخیر برای خواندن قبل از بخشهای مجاور. در مقابل ، وظایف سمت سرور نیاز به پیکربندی حافظه پنهان به گونه ای دارد که اطمینان حاصل شود حجم زیادی از داده های متوالی در درخواست های غیر تکراری دریافت می شوند. در این مورد ، توانایی حافظه پنهان برای ذخیره داده های بیشتر از بخشهای مجاور در هنگام پیش خواندن مهمتر است. بنابراین ، برای حالت دسکتاپ ، سازنده استفاده از 32 بخش (در نسخه های اولیه Cheetah ، 16 قسمت استفاده می شد) را توصیه می کند ، و برای حالت سرور ، تعداد قسمت های تطبیقی ​​تنها از سه قسمت برای کل حافظه پنهان شروع می شود ، اگرچه ممکن است در حین کار افزایش یابد. به در آزمایشات ما بر روی تأثیر تعداد بخشها بر عملکرد در برنامه های مختلف ، ما محدوده خود را از 4 بخش تا 64 بخش محدود می کنیم و به عنوان یک بررسی ، دیسک را نیز با 128 قسمت نصب شده در برنامه "اجرا" می کنیم. برنامه SeaTools Enterprise (برنامه اطلاع نمی دهد که این تعداد بخش در این دیسک نامعتبر است).

نتایج آزمایشات فیزیکی

نشان دادن نمودارهای سرعت خواندن خطی با تعداد مختلف بخش حافظه پنهان فایده ای ندارد - آنها یکسان هستند. اما با توجه به سرعت رابط Ultra320 SCSI که با آزمایشات اندازه گیری شده است ، می توانید یک تصویر بسیار کنجکاو را مشاهده کنید: با 64 بخش ، برخی از برنامه ها به طور اشتباه سرعت رابط را تعیین می کنند و آن را بیش از یک مرتبه کاهش می دهند.

از نظر متوسط ​​زمان دسترسی اندازه گیری شده ، تفاوت بین تعداد مختلف بخش های حافظه پنهان آشکارتر می شود - با کاهش تقسیم بندی ، میانگین اندازه گیری شده زیر زمان ویندوزدسترسی به خواندن کمی افزایش می یابد و در حالت PM = off خواندن به میزان قابل توجهی بهتر مشاهده می شود ، اگرچه بر اساس این داده ها نمی توان ادعا کرد که تعداد بخش ها بسیار کم یا برعکس بسیار زیاد است. ممکن است که دیسک در این حالت به سادگی شروع به نادیده گرفتن پیش وصل هنگام خواندن کند تا از تأخیرهای بیشتر جلوگیری شود.

شما می توانید کارآیی الگوریتم های نوشتن تنبل سیستم عامل دیسک و ذخیره داده های ذخیره شده در بافر درایو را با چگونگی کاهش میانگین زمان دسترسی به نوشتن اندازه گیری شده توسط سیستم عامل نسبت به خواندن با ذخیره مجدد ذخیره مجدد درایو محاسبه کنید. (همیشه در آزمایشات ما فعال بود). برای انجام این کار ، ما معمولاً از نتایج آزمایش C "T H2benchW استفاده می کنیم ، اما این بار تصویر را با یک تست در برنامه IOmeter تکمیل می کنیم ، الگوهای خواندن و نوشتن که برای دسترسی 100٪ تصادفی در بلوک های 512 بایت استفاده شده است. با واحد عمق صف درخواست. (البته ، نباید فکر کنید که متوسط ​​زمان دسترسی به نوشتن در دو نمودار زیر واقعاً نشان دهنده این است فیزیکیویژگی های درایوها! این فقط یک پارامتر خاص است که از نظر برنامه ای با استفاده از یک آزمون اندازه گیری می شود ، که با استفاده از آن می توان کارایی ذخیره caching را در بافر دیسک قضاوت کرد. متوسط ​​زمان واقعی نوشتن اعلام شده توسط سازنده برای Cheetah 15K.4 4.0 + 2.0 = 6.0 میلی ثانیه است). به هر حال ، با پیش بینی سوالات ، توجه می کنم که در این مورد (یعنی وقتی نوشتن تنبل روی دیسک فعال است) ، درایو به محض تکمیل موفقیت آمیز دستور نوشتن (وضعیت خوب) به میزبان گزارش می دهد آنها روی حافظه پنهان نوشته می شوند و نه مستقیماً در محیط مغناطیسی ... این دلیل ارزش کمتر میانگین زمان دسترسی به نوشتن است که از خارج اندازه گیری می شود تا پارامتر مشابه هنگام خواندن.

با توجه به نتایج این آزمایش ها ، وابستگی آشکاری از کارآیی ذخیره سازی تصادفی نوشتن بلوک های داده کوچک به تعداد بخش های حافظه پنهان وجود دارد - هرچه تعداد قسمت ها بیشتر باشد ، بهتر است. با چهار بخش ، بازده به شدت کاهش می یابد و متوسط ​​زمان دسترسی به نوشتن تقریباً به مقادیر خواندن افزایش می یابد. و در "حالت سرور" تعداد قطعات در این مورد به وضوح نزدیک به 32 است. موارد 64 و "128" بخش کاملاً یکسان است ، که محدودیت نرم افزار را در سطح 64 بخش از بالا تأیید می کند.

جالب اینجاست که آزمون IOmeter در ساده ترین الگوها برای دسترسی تصادفی در بلوک های 512 بایت دقیقاً همان مقادیر را در هنگام نوشتن با آزمون C "T H2BenchW (با دقت به معنای واقعی کل صدم ثانیه) می دهد ، در حالی که خواندن IOmeter نشان داد نتیجه کمی بیش از حد در تمام محدوده تقسیم بندی - شاید 0.1-0.19 میلی ثانیه تفاوت با سایر آزمایشات برای زمان دسترسی تصادفی هنگام خواندنبه دلایل "داخلی" IOmeter (یا اندازه بلوک به جای 0 بایت 512 بایت است ، همانطور که برای چنین اندازه گیری هایی ایده آل مورد نیاز است). با این حال ، نتایج خوانده شده IOmeter عملاً با نتایج آزمایش دیسک برنامه AIDA32 مطابقت دارد.

عملکرد در برنامه های کاربردی

بیایید به معیارهای عملکرد ذخیره سازی در برنامه ها برویم. و اول از همه ، بیایید سعی کنیم دریابیم که دیسک ها چقدر برای چند رشته بهینه شده اند. برای انجام این کار ، من به طور سنتی از آزمایشات در برنامه NBench 2.4 استفاده می کنم ، جایی که 100 مگابایت فایل توسط چندین رشته همزمان روی دیسک نوشته و خوانده می شود.

این نمودار به ما اجازه می دهد تا در مورد کارکرد سیستم عامل با فایل ها در مورد کارایی الگوریتم های نوشتن تنبل چند رشته ای هارد دیسک در شرایط واقعی (و نه مصنوعی ، همانطور که در نمودار با زمان دسترسی متوسط ​​بود) قضاوت کنیم. رهبری هر دو دیسک Maxtor SCSI هنگام ضبط در چندین جریان همزمان بدون شک است ، اما در چیتا ما در حال حاضر بهینه خاصی را در منطقه بین 8 تا 16 بخش مشاهده می کنیم ، در حالی که در مقادیر بالاتر و پایین سرعت دیسک برای این کارها کاهش می یابد به برای حالت سرور ، تعداد قطعات بدیهی است 32 (با دقت خوب :)) و بخش های "128" در واقع 64 است.

برای خواندن چند رشته ای ، وضعیت درایوهای Seagate به وضوح نسبت به درایوهای Maxtor بهبود یافته است. در مورد تأثیر تقسیم بندی ، بنابراین ، همانطور که در ضبط ، ما بهینه خاصی را نزدیک به 8 بخش مشاهده می کنیم (در طول ضبط ، به 16 قسمت نزدیکتر بود) ، و با تقسیم بندی بسیار بالا (64) ، سرعت دیسک به طور قابل توجهی کاهش می یابد (مانند در ضبط) ... مایه خوشحالی است که حالت سرور "بازار" میزبان را زیر نظر دارد و هنگام نوشتن تکه ها را از 32 به 8 پوند تغییر می دهد.

حال بیایید ببینیم که دیسک ها چگونه در تست های "قدیمی" اما رایج Disk WinMark 99 از بسته WinBench 99 رفتار می کنند. به شما یادآوری می کنم که ما این آزمایشات را نه تنها برای "ابتدا" ، بلکه برای "وسط" نیز انجام می دهیم ( از نظر حجم) رسانه های فیزیکی برای دو سیستم فایل ، و نمودارها نتایج متوسط ​​را نشان می دهند. البته ، این تست ها برای درایوهای SCSI "مشخصات" نیستند ، و ما نتایج آنها را در اینجا ارائه می دهیم ، بلکه به خود آزمایش و کسانی که به ارزیابی سرعت دیسک توسط تست های WinBench 99 عادت دارند ، احترام می گذاریم. به عنوان "تسلی" ، ما توجه داریم این آزمایش ها تا حدی به ما نشان می دهد که عملکرد این درایوهای سازمانی در هنگام انجام کارهای معمولی رایانه رومیزی چگونه است.

بدیهی است که در اینجا یک تقسیم بندی بهینه وجود دارد و با تعداد کمی از بخشها ، دیسک کم هزینه به نظر می رسد و با 32 بخش - بهترین راه(شاید به همین دلیل است که توسعه دهندگان Seagate تنظیمات پیش فرض حالت دسکتاپ را از 16 به 32 بخش "تغییر" داده اند). با این حال ، برای حالت سرور در کارهای اداری (تجاری) ، تقسیم بندی کاملاً مطلوب نیست ، در حالی که برای عملکرد حرفه ای (سطح بالا) ، بخش بندی بیش از حد بهینه شده است ، و حتی از تقسیم بندی "ثابت" مطلوب بهتر عمل می کند. ظاهراً در حین اجرای آزمایش است که بسته به جریان دستورات تغییر می کند و به همین دلیل ، افزایش عملکرد کلی بدست می آید.

متأسفانه ، چنین بهینه سازی "در حین آزمایش" برای آزمایشات پیچیده اخیر "track" برای ارزیابی عملکرد "رومیزی" دیسک ها در بسته های PCMakr04 و C "T H2BenchW مشاهده نمی شود.

در هر دو (یا بهتر بگویم ، در 10 مسیر مختلف) فعالیت سرور به طور قابل ملاحظه ای پایین تر از تقسیم بندی مطلوب ثابت است که برای PCmark04 حدود 8 بخش و برای H2benchW - 16 بخش است.

برای هر دو این آزمایش ها ، 4 بخش حافظه پنهان بسیار نامطلوب است ، و 64 قسمت نیز نامطلوب است و نمی توان گفت که در این حالت حالت سرور کجا بیشتر گرانش می کند.

البته برخلاف اینها ، همه آزمایشهای مصنوعی (البته بسیار شبیه به واقعیت) - یک آزمایش کاملاً "واقعی" برای سرعت دیسک ها با یک فایل موقت برنامه های Adobeفتوشاپ وضعیت در اینجا بسیار مبهم تر است - هرچه بخش های بیشتر ، بهتر! و حالت سرور تقریباً آن را "گرفت" و از 32 بخش برای کار استفاده کرد (اگرچه 64 حتی کمی بهتر خواهد بود).

معیارهای Intel Iometer

بیایید به وظایفی برویم که بیشتر برای پروفایل استفاده از درایوهای SCSI معمول است - عملکرد سرورهای مختلف (DataBase ، File Server ، Web Server) و یک ایستگاه کاری (Workstation) با توجه به الگوهای مربوطه در Intel IOmeter نسخه 2003.5.10.

Maxtor در شبیه سازی سرور پایگاه داده بهترین است ، در حالی که Server Mode برای Seagate سودآورترین است ، اگرچه در واقع دومی بسیار نزدیک به 32 بخش مداوم (هر کدام 220 کیلوبایت) است. تقسیم بندی کمتر یا بیشتر در این مورد بدتر است. با این حال ، این الگو از نظر نوع درخواست ها بسیار ساده است - بگذارید ببینیم برای الگوهای پیچیده تر چه اتفاقی می افتد.

هنگام تقلید سرور فایلبخش بندی تطبیقی ​​دوباره در صدر است ، اگرچه عقب ماندگی 16 بخش ثابت ناچیز است (32 بخش در اینجا کمی بدتر است ، اگرچه آنها نیز کاملاً کافی هستند). با یک تقسیم بندی کوچک ، یک صف بزرگ از دستورات خراب می شود ، و با بیش از حد بزرگ (64) عموماً هر صف منع مصرف دارد - ظاهراً در این مورد ، اندازه بخش های حافظه پنهان بسیار کوچک است (کمتر از 111 کیلوبایت ، یعنی فقط 220 بلوک روی رسانه) تا بتواند مقدار زیادی از داده های دارای اندازه مناسب را ذخیره کند.

سرانجام ، برای یک سرور وب ، ما یک تصویر سرگرم کننده تر می بینیم - در صف فرمان NON -ONE ، حالت سرور معادل است هر کدامسطح تقسیم بندی ، به جز 64 ، اگرچه در حالت مجرد کمی بهتر از همه است.

در نتیجه میانگین هندسی بارهای سرور که در بالا با الگوها و صف های درخواست (بدون وزن) نشان داده شده است ، متوجه می شویم که تقسیم بندی تطبیقی ​​برای چنین کارهایی بهترین است ، اگرچه 32 بخش ثابت کمی عقب می مانند و 16 قسمت نیز به طور کلی خوب به نظر می رسند. به طور کلی ، انتخاب Seagate کاملاً قابل درک است.

در مورد الگو " ایستگاه کار"، حالت سرور در اینجا به وضوح بهترین است.

و بهینه برای تقسیم بندی دائمی 16 بخش است.

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

خواندن فایل های بزرگ دوباره برای حالت سرور بهتر است ، به غیر از یک افت ناشناخته در QD = 4. با این حال ، تعداد کمی از بخشهای بزرگ به وضوح برای دیسک در این عملیات ترجیح داده می شود (که در اصل قابل پیش بینی است و با نتایج خواندن فایلهای چند رشته ای ، در بالا مطابقت دارد).

اسپورادیک ضبطاز طرف دیگر ، فایلهای بزرگ هنوز برای هوش سرور بسیار سخت هستند ، و در اینجا تقسیم بندی ثابت در سطح 8-16 بخش ، از مزایای بیشتری برخوردار است ، مانند ضبط فایل چند رشته ای ، در بالا ببینید. به طور جداگانه ، ما توجه داریم که در این عملیات ، تقسیم بندی بزرگ حافظه پنهان بسیار مضر است - در سطح 64 بخش. با این حال ، برای خواندن عملیات با فایلهای کوچک با صف درخواست بزرگ مفید است:

من فکر می کنم این همان چیزی است که حالت سرور برای انتخاب حالت تطبیقی ​​استفاده می کند - نمودارهای آنها بسیار مشابه است.

در عین حال ، هنگام نوشتن فایلهای کوچک در آدرسهای تصادفی ، 64 بخش مجدداً خراب می شوند و حالت سرور در اینجا از تقسیم بندی ثابت با سطح 8-16 بخش در هر حافظه پائین تر است ، اگرچه حالت سرور سعی می کند از تنظیمات بهینه(فقط با 32-64 بخش در صف 64 بدشانسی بیرون آمد ؛)).

کپی فایل های بزرگ یک شکست آشکار در حالت سرور است! در اینجا ، خرد کردن با سطح 16 به وضوح مفیدتر است (این بهترین حالت است ، زیرا 8 و 32 در صف 4 بدتر هستند).

در مورد کپی فایلهای کوچک ، بخشهای 8-16-32 در اینجا عملا برابر هستند و از 64 بخش (به طرز عجیبی) بهتر عمل می کنند و حالت سرور کمی "عجیب" است.

بر اساس نتایج میانگین هندسی داده ها برای خواندن تصادفی ، نوشتن و کپی فایل های بزرگ و کوچک ، متوجه می شویم که بهترین نتیجه به طور متوسط ​​با تقسیم بندی ثابت با سطح تنها 4 بخش در حافظه پنهان (یعنی اندازه قطعات بیش از 1.5 مگابایت!) ، در حالی که 8 و 16 بخش تقریباً برابر هستند و تقریباً از 4 بخش عقب نمی افتند ، اما 64 بخش به وضوح منع مصرف دارد. به طور متوسط ​​، حالت سرور تطبیقی ​​فقط کمی به بخش بندی ثابت عمل می کند - از دست دادن یک درصد به سختی قابل توجه است.

لازم به ذکر است که هنگام شبیه سازی تجزیه ، ما برابری تقریبی همه سطوح تقسیم بندی ثابت و مزیت جزئی حالت سرور (با همان 1 observe) را مشاهده می کنیم.

و در الگوی پخش خواندن و نوشتن در بلوک های بزرگ و کوچک ، استفاده از تعداد کمی از بخش ها کمی سودآورتر است ، اگرچه باز هم تفاوت در سرعت تنظیمات حافظه نهان در اینجا ، به طرز عجیبی ، هومیوپاتی است.

نتیجه گیری

پس از انجام بخش دوم بررسی ما ، مطالعه دقیق تر تأثیر حافظه پنهان بر عملکرد درایو Seagate Cheetah 15K.4 در کارهای مختلف ، می خواهم توجه داشته باشم که توسعه دهندگان نام حالت های ذخیره سازی را ذکر نکرده اند همانطور که آنها آنها را به دلایلی نامیدند: در حالت سرور ، تطبیق قطعات اغلب برای انجام کار در حافظه پنهان انجام می شود ، و این گاهی اوقات به نتایج بسیار خوبی منجر می شود - به ویژه هنگام انجام کارهای "سنگین" ، از جمله الگوهای سرور در Intel IOmeter ، و High-End Disk WinMark 99 ، و خواندن تصادفی بلوک های کوچک در سراسر دیسک ... در عین حال ، اغلب انتخاب سطح خرد کردن حافظه پنهان در حالت سرور غیر مطلوب است (و نیاز به کار بیشتر برای معیارهای تجزیه و تحلیل جریان فرمان میزبان را بهبود می بخشد) ، و سپس حالت دسکتاپ با خرد کردن ثابت در سطح 8 ، 16 یا 32 بخش در هر حافظه پنهان ظاهر می شود. علاوه بر این ، بسته به نوع کار ، گاهی اوقات استفاده از 16 و 32 سودآورتر است و گاهی اوقات - 8 یا فقط 4 بخش حافظه! دومی شامل خواندن و نوشتن چند رشته ای (اعم از تصادفی و متوالی) ، آزمایش آهنگ هایی مانند PCMark04 و انجام کارهای جاری با خواندن و نوشتن همزمان است. اگرچه "ترکیبات" برای دسترسی به نوشتن تصادفی به وضوح نشان می دهد که کارایی نوشتن های تنبل (در آدرس های دلخواه) با کاهش تعداد بخش ها به میزان قابل توجهی کاهش می یابد. یعنی بین دو گرایش مبارزه وجود دارد - و به همین دلیل است که به طور متوسط ​​استفاده از 16 یا 32 بخش در 8 مگابایت بافر کارآمدتر است. اگر اندازه بافر دو برابر شود ، می توان پیش بینی کرد که حفظ تعداد قطعات در سطح 16-32 سودآورتر است ، اما با افزایش نسبی ظرفیت هر بخش ، متوسط ​​عملکرد درایو می تواند به طور قابل توجهی افزایش یابد. ظاهراً ، حتی در حال حاضر در اکثر وظایف ، بی اثر است ، تقسیم بندی حافظه پنهان با 64 بخش هنگام دو برابر شدن اندازه بافر می تواند بسیار مفید باشد ، در حالی که استفاده از 4 یا حتی 8 بخش در این مورد بی اثر می شود. با این حال ، این نتیجه گیری ها نیز بستگی زیادی به این دارد که سیستم عامل و برنامه های کاربردی ترجیح می دهند با درایو کار کنند و چه فایل هایی در این مورد استفاده می شود. کاملاً محتمل است که وقتی محیط تغییر می کند ، بهینه سازی حافظه پنهان ممكن است در یك جهت تغییر كند. خوب ، ما برای Seagate موفقیت در بهینه سازی حالت سرور "هوش" را آرزو می کنیم ، که تا حدودی می تواند با یادگیری نحوه انتخاب بهینه ترین بخش بندی بسته به جریان فرمان میزبان ، این "وابستگی به سیستم" و "وابستگی به وظیفه" را برطرف کند. بهترین راه.

معروف ترین Alyosha Runet اطلاعات تکان دهنده ای را به اشتراک می گذارد.
http://www.exler.ru/blog/item/12406/؟25

به یاد دارم که در دهه نود از کنترلرهای به اصطلاح حافظه پنهان در رایانه های مختلف استفاده کردم که عملکرد آنها هنگام کار با هارد دیسک مهم بود: اینها کارت هایی بودند که مجهز به اسلات معمولی بودند حافظه دسترسی تصادفی، که مقدار مشخصی از این حافظه در آن وارد شده بود ، و با کمک کارت برای ذخیره اطلاعات از هارد دیسک استفاده شد. چنین چیزی کار با هارد دیسک را بسیار تسریع کرد ، به ویژه هنگام استفاده از بسته های گرافیکی مانند Corel Draw.

به خصوص هنگام استفاده از بسته های گرافیکی مانند Corel Draw. دقیقا.
(صدای ترک خوردن الگوهای ترکیده ، ضربه سر کسل کننده روی میز)

ابتدا اجازه دهید حافظه دیسک سخت افزاری را تعریف کنیم.
به طور کلی ، این یک قطعه کوچک عملیاتی است که به قطعات الکترونیکی هارد دیسک "دوخته" شده است.

حافظه نهان به عنوان یک بافر عمل می کند برای ذخیره داده های میانی که قبلاً از دیسک سخت خوانده شده استاما هنوز برای پردازش بیشتر ارسال نشده اند ، و برای ذخیره داده هایی که سیستم اغلب به آنها دسترسی دارد... نیاز به ذخیره سازی عبوری ناشی از تفاوت بین سرعت خواندن داده ها از دیسک سخت و توان سیستم است.

اگر یک فایل مکرراً توسط سیستم مورد استفاده قرار می گیرد ، آن را در حافظه پنهان دیسک قرار می دهیم تا 1) دیسک را بی دلیل نکشید و 2) دسترسی به این فایل را سرعت بخشید. کشتن دو پرنده با یک سنگ

به طور کلی ، این یک فایل نیست که در حافظه پنهان قرار می گیرد ، بلکه هر محتوای بلوک های دیسک سخت است که اغلب خوانده می شود. به عنوان مثال ، داده های خدمات سیستم فایل... یا MBR یا 12 کیلوبایت از وسط یک فایل پایگاه داده گیگابایت. دیسک بین محتویات آن تمایزی قائل نمی شود ، اهمیتی نمی دهد.
وضعیت پرونده برای وضوح ارائه شده است.

مشکل این است که در دهه 90 ، دیسک ها یا بدون حافظه پنهان تولید می شدند ، یا برای ذخیره اطلاعات لازم بسیار کوچک بودند. و این مشکل با استفاده از کنترلرهای حافظه پنهان واقعاً حل شد.

سپس دیسک ها به طور قابل توجهی سریعتر شدند ، سیستم عامل شروع به ذخیره سازی مناسب کرد و برخی از کنترلرهای حافظه پنهان به آرامی از بین رفتند ، به ویژه از آنجایی که ارزان نیستند ، به علاوه شما هنوز مجبورید برای آنها حافظه بخرید.

از نظر سرعت نسبی ، هارد دیسک ها در دهه 90 دور از سرعت نبودند: هنوز هم کندترین قسمت کامپیوتر هستند. اما پیشرفت در فناوری این امکان را فراهم کرده است که حافظه نهان کافی را روی دیسک ها قرار دهد. به اندازه کافی برای از بین بردن نیاز به کنترل کننده های حافظه پنهان جداگانه.

به علاوه ، در سیستم عامل Unix RAM "اضافی" (استفاده نشده) به عنوان یک حافظه پنهان اضافی عمل می کند. باصطلاح، حافظه پنهان دیسک نرم افزار... گاهی از آن به عنوان "حافظه بافر" یاد می شود ، اما این تا حدودی متفاوت است.

ویندوز نیز آن را دارد ، اما تمام مزایای آن با استفاده نادرست از فایل صفحه بندی به طور کامل جبران می شود.
حالت عادی سیستم این است که محتویات RAM روی دیسک (pagefile.sys) و محتویات دیسک در RAM (حافظه پنهان دیسک) باشد. روانگسیختگی.

چندی پیش ، این کنترلرهای حافظه پنهان شروع به بازگشت کردند ، اما در حال حاضر به شکل درایوهای SSD هستند. ابتدا ، به اصطلاح درایوهای ترکیبی ظاهر شد-هارد دیسک های معمولی ، که در آنها یک SSD کوچک جداگانه (16-32 گیگابایت) نیز ساخته شده بود ، که منحصراً برای ذخیره سازی استفاده می شد.

نویسنده نمی فهمد که هیچ چیز به جایی نرسیده است ، بنابراین اکنون می تواند با آتش بازی و هیاهو برگردد.
و این درایوهای ترکیبی یک ترفند بازاریابی است (به دلایلی ، یک SSD 16 گیگ در پیچ معمولی و حتی با کاهش عملکرد قرار گرفت).
و استفاده از دو پیچ منطقی تر ، ساده تر و صحیح تر است: SSD سریع برای سیستم و پیچ معمولی برای داده. برای حافظه پنهان 16 گیگ یک مزخرف مسحور کننده است (با یک هشدار: بر این لحظه ).

و اکنون آنها شروع به تولید SSD های جداگانه کردند که مخصوص ذخیره سازی نیز استفاده می شوند.

بخوانید - SSD های معمولی با حروف قرمز "فقط در حافظه پنهان".

بدتر از لامر فقط لامری است که مخاطبان زیادی دارد. ©

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

بافر هارد دیسک کمک می کند سیستم عاملبه طور موقت داده هایی را که از حافظه اصلی هارد خوانده شده است ذخیره کنید ، اما برای پردازش منتقل نشده است. نیاز به ذخیره سازی حمل و نقل به این دلیل است که سرعت خواندن اطلاعات از HDD و توانسیستم عامل به طور قابل توجهی متفاوت است. بنابراین ، کامپیوتر باید داده ها را به طور موقت در "حافظه پنهان" ذخیره کند ، و فقط پس از آن آنها را برای مقصود مورد نظر خود استفاده کند.

همانطور که کاربران ناتوان کامپیوتر معتقدند بافر هارد دیسک به خودی خود یک بخش جداگانه نیست. این یک تراشه حافظه ویژه است که روی برد داخلی HDD قرار دارد. چنین میکرو مدارهایی می توانند بسیار سریعتر از خود درایو کار کنند. در نتیجه ، آنها باعث افزایش (چند درصد) در عملکرد کامپیوتر می شوند که در حین کار مشاهده می شود.

لازم به ذکر است که اندازه "حافظه نهان" به مدل دیسک خاص بستگی دارد. قبلا ، حدود 8 مگابایت بود و این رقم رضایت بخش تلقی می شد. با این حال ، با پیشرفت تکنولوژی ، تولیدکنندگان توانسته اند تراشه هایی با حافظه بیشتر تولید کنند. بنابراین ، اکثر هارد دیسک های مدرن دارای بافر هستند که حجم آن از 32 تا 128 مگابایت متغیر است. البته بزرگترین "حافظه نهان" در مدلهای گران قیمت نصب شده است.

چگونه بافر هارد دیسک بر عملکرد تأثیر می گذارد

حالا اجازه دهید به شما بگوییم چرا اندازه بافر هارد بر عملکرد رایانه تأثیر می گذارد. از لحاظ تئوری ، هرچه اطلاعات بیشتری در "حافظه پنهان" باشد ، کمتر سیستم عامل به هارد دیسک دسترسی پیدا می کند. این امر به ویژه در مورد سناریوی کار هنگامی صادق است که یک کاربر بالقوه در حال پردازش تعداد زیادی فایل کوچک است. آنها به سادگی به بافر دیسک سخت می روند و منتظر نوبت خود در آنجا می مانند.

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

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

یک شکل بسیار مهم و خاص بافر است ذخیره سازی ... این اصطلاح به استفاده از حافظه نسبتاً کوچک اما سریع برای کاهش تعداد تماس ها به حافظه کندتر و بزرگ اشاره دارد.

ایده پشت ذخیره سازی مبتنی بر به اصطلاح است فرضیه محل پیوند ... این فرضیه به شرح زیر است. اگر در مقطعی از زمان دسترسی به بخش خاصی از داده ها وجود داشته باشد ، در آینده نزدیک با احتمال زیاد می توان انتظار تکرار تماس ها را با داده های یکسان یا بخش های داده مجاور داشت. البته ، محل پیوندها را نمی توان یک قانون در نظر گرفت ، اما تمرین نشان می دهد که این فرضیه برای اکثر قریب به اتفاق برنامه ها موجه است.

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

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

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

اگر بلوک دیسک مورد نیاز در حافظه پنهان یافت نشد ، باید یک بافر برای آن اختصاص داده شود. مشکل این است که تعداد کل بافرهای حافظه پنهان محدود است. برای دادن یکی از آنها برای بلوک مورد نیاز ، یکی از بلوک هایی که در آنجا ذخیره شده بود باید از حافظه پنهان "جابجا" شود. در این مورد ، اگر بلوک پیش فرض "کثیف" است ، باید "تمیز" شود ، یعنی روی دیسک نوشته شده است هنگامی که یک بلوک "تمیز" پیشاپیش شده است ، نیازی به انجام عملیات دیسک نیست.

کدام بلوک در حافظه پنهان را برای تخلیه انتخاب کنید تا تعداد کل دسترسی به دیسک کاهش یابد؟ این یک مسئله فوق العاده مهم است و اگر به اشتباه حل شود ، به دلیل دسترسی مداوم به دیسک ، کل عملکرد سیستم می تواند کند شود.

یک راه حل بهینه از لحاظ نظری برای این مشکل وجود دارد که به شرح زیر است. اگر هر بار بلوک داده ای را انتخاب کنید که در آینده برای مدت طولانی به آن دسترسی نخواهید داشت ، تعداد دسترسی به دیسک حداقل خواهد بود. متأسفانه ، استفاده از این قانون در عمل غیرممکن است ، زیرا توالی دسترسی به بلوک های دیسک غیرقابل پیش بینی است. این نتیجه نظری تنها به عنوان یک ایده آل دست نیافتنی برای مقایسه نتایج به کارگیری الگوریتم های انتخاب واقعی تر مفید است.

در بین الگوریتم های مورد استفاده در عمل ، بهترین الگوریتم است LRU (حداقل اخیراً استفاده شده ، به راحتی ترجمه شده است "برای مدت طولانی استفاده نمی شود"). این شامل موارد زیر است: بلوکی که برای مدت طولانی به آن دسترسی نداشته اید باید برای جابجایی انتخاب شود. در اینجا ، از اصل محل پیوندها استفاده می شود: از آنجا که مدتهاست هیچ تماسی وجود ندارد ، احتمالاً در آینده نزدیک آنها تماس نخواهند گرفت.

چگونه انتخاب بلوک بر اساس قانون LRU در عمل پیاده سازی می شود؟ راه حل بدیهی این است که هر زمان که به بافر دسترسی پیدا می کنید زمان فعلی را در سرصفحه خود ثبت کنید و هنگام انتخاب پیش فرض ، جستجوی اولین رکورد بسیار دست و پا گیر و کند است. فرصت بسیار بهتری وجود دارد.

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

در نتیجه حرکت مداوم بلوک های استفاده شده به انتهای لیست بافر ، این لیست به ترتیب صعودی آخرین زمان دسترسی مرتب می شود. در ابتدای لیست بافر قرار دارد که اطلاعات آن برای طولانی ترین مدت دسترسی نداشته است. او همان چیزی است که ما به عنوان کاندیدای سرکوب به آن نیاز داریم.

در شکل 2-3 آرایه ای از بافرها را نشان می دهد که به یک لیست پیوند خورده اند.

حالا درباره بافرهای کثیف. در چه مواردی باید آنها را "تمیز" کرد ، یعنی نوشتن یک بلوک داده از بافر حافظه پنهان به دیسک؟ سه مورد از این دست وجود دارد.

· انتخاب بلوک برای تخلیه از حافظه پنهان.

· بستن فایلی که بلوک های کثیف متعلق به آن است. به طور کلی پذیرفته شده است که وقتی یک فایل بسته می شود ، باید روی دیسک ذخیره شود.

· عملیات پاکسازی اجباری همه بافرها یا فقط بافرهای مربوط به یک فایل خاص. عملیات مشابهی را می توان برای بهبود قابلیت اطمینان ذخیره سازی داده ها به عنوان بیمه در برابر خرابی های احتمالی انجام داد. به عنوان مثال ، در سیستم عامل UNIX ، فلاشینگ تمام بافرها به طور سنتی هر 30 ثانیه انجام می شود.

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

تنگنای ذخیره سازی دیسک پیدا کردن بلوک داده مورد نیاز در حافظه پنهان است. همانطور که در بالا توضیح داده شد ، سیستم برای این منظور به سرفصل های بافر نگاه می کند. اگر حافظه پنهان متشکل از چند صد بافر باشد ، زمان جستجو قابل توجه خواهد بود. یک تکنیک احتمالی شتاب جستجوی UNIX در شکل نشان داده شده است. 2-4.

در UNIX ، هر بافر حافظه پنهان می تواند همزمان در دو لیست خطی ظاهر شود. یکی از این موارد ، که "لیست بلاک رایگان" نامیده می شود ، لیست آشنا LRU است که برای تعیین بلوک تخلیه استفاده می شود. رایگان به معنی خالی نیست ؛ در این مورد ، این کلمه به معنای بلوکی است که در حال حاضر توسط یک عملیات خواندن / نوشتن انجام شده توسط یک فرایند اشغال نشده است. یک لیست دیگر "زنجیره هش" نامیده می شود و برای سرعت بخشیدن به جستجوی بلاک مورد نظر استفاده می شود.

هنگام نوشتن روی داده های بافر مربوط به یک بلوک خاص از دیسک ، تعداد زنجیره هش ، که این بافر در آن قرار می گیرد ، به عنوان باقی مانده تقسیم عدد بلوک بر N - تعداد زنجیره های هش تعیین می شود. برای وضوح ، این رقم مقدار N = 10 را تصویب کرد. بنابراین ، بلوک های با شماره های 120 ، 40 ، 90 در زنجیره 0 قرار می گیرند ، بلوک های 91 ، 1 ، 71 - در زنجیره 1 و غیره. هنگامی که سیستم حافظه پنهان را با یک بلاک با یک عدد معین، اول از همه ، با شماره بلوک ، تعیین می کند که این بلوک باید در کدام یک از زنجیره های هش باشد. اگر بلوک در این زنجیره نباشد ، به هیچ وجه در حافظه پنهان نیست. به این ترتیب ، می توان در بهترین حالت جستجو را با ضریب N کوتاه کرد (این در صورتی است که همه زنجیرها دارای طول یکسان باشند).

انتقال بافر از یک زنجیره هش به زنجیره هش دیگر ، مانند انتقال آن به انتهای لیست رایگان ، نیازی به بازنویسی کل بلوک داده در حافظه ندارد و با تغییر مراجع در سربرگ های بلوک انجام می شود.

یکی دیگر از ویژگی های ذخیره سازی دیسک در UNIX این است که وقتی بافرهای کثیف در ابتدای لیست رایگان یافت می شوند ، سیستم شروع به فشردن آنها می کند ، اما منتظر نمی ماند تا این فرایندها تکمیل شوند ، اما اولین بلوک تمیز در لیست را برای تخلیه انتخاب می کند. پس از اتمام عملیات فلاش ، بلاک ها به بالای لیست رایگان بازگردانده می شوند و اولین کاندیداهای پیش شرط باقی می مانند.