Какво е кеш?

Когато се изискват данни от който и да е източник, винаги има известно забавяне. Ping към уеб сървъри се измерва в милисекунди, времето за достъп до хранилището може да има латентност в микросекунди, докато латентността на RAM се измерва в тактови цикли на процесора. Разбира се, тези видове скорости биха били немислими само преди няколко десетилетия, но в настоящето те никога не са достатъчно бързи. Скоростта на достъп обикновено е някаква форма на пречка в производителността. Един от начините, по които това може да се реши, е чрез кеширане.

Кеширането е процес на съхраняване на временно копие на ресурс по начин, който може да бъде достъпен по-бързо, отколкото обикновено. Има огромен набор от реализации както в софтуера, така и в хардуера. Кешовете могат да действат като кешове за четене, кешове за запис или и двете.

Четене на кешове

В кеш за четене данните, които са били заявени преди това, се съхраняват в кеш за по-бърз достъп. В някои сценарии кешът може дори да бъде предварително зареден с данни, позволяващи първата заявка да бъде обслужена от кеша, а не само следващите заявки.

Кешът за четене, с който най-вероятно сте запознати, е кешът на браузъра. Тук браузърът съхранява локално копие на заявените ресурси. Това означава, че ако и когато уеб страницата се презареди или се зареди подобна страница, която използва голяма част от същото съдържание, това съдържание може да се сервира от кеша, а не от уеб сървъра. Това не само означава, че уеб страницата може да се зарежда по-бързо, но също така намалява натоварването на уеб сървъра и намалява количеството данни, които потребителят трябва да изтегли, което може да бъде важно при връзки с измерване.

Самата RAM също действа като кеш за четене на данни в твърдия диск. В този случай данните за работеща програма се зареждат предварително в RAM, така че процесорът да има по-бърз достъп до тях. След това данните от RAM се кешират допълнително в кеша на процесора, въпреки че процесът за това е много по-сложен, тъй като кешът на процесора се измерва в мегабайти, а не в гигабайти.

Кешове за писане

Кешът за запис е кеш, който може да абсорбира данни, записвани на по-бавно устройство. Често срещан пример за това би бил SLC кешът в съвременните SSD. Този кеш не позволява данните да се четат по-бързо, но е много по-бързо да се записва, отколкото да се записва в TLC или QLC флаш, който съставлява останалата част от SSD. SLC кешът може да абсорбира високоскоростни операции за запис и след това да разтоварва тези данни веднага щом може към TLC флаш паметта, която предлага много по-добра плътност на съхранение, но също така е много по-бавна за запис. Използването на флаш паметта по този начин я оптимизира както за бързи скорости на запис, така и за висока плътност на съхранение.

Хибридни кеш памети

Има много начини за работа с кешове, които могат да им позволят да действат както като кеш за четене, така и като запис. Всеки от тези методи обработва операциите за запис по различен начин и има предимства и недостатъци. Трите опции са заобиколно записване, записване чрез и обратно записване. Кешът за запис изцяло пропуска кеша при запис, кешът за запис записва в кеша, но счита операцията за завършена само когато е записана в хранилището. Кешът за обратно записване записва в кеша и след това счита операцията за завършена, разчитайки на кеша да го прехвърли в хранилище, ако е необходимо.

Записването може да бъде полезно, ако очаквате голям обем записи, тъй като минимизира изтичането на кеша. Това обаче означава, че операция, която след това чете някои от тези записани данни, ще се сблъска с поне един пропуснат кеш първия път. Кешовете за запис незабавно кешират операциите за запис, което означава, че резултатът може да бъде сервиран от кеша първия път, когато бъде поискан. Въпреки това, за да се счита за завършена, операцията по запис също трябва да запише данните на диска, което добавя латентност. Кешът за обратно записване има същата полза като сквозния запис, позволявайки записаните данни да бъдат незабавно обслужвани от кеша. Въпреки това не изисква операции за запис, за да се счита за завършен. Това намалява забавянето при запис, но идва с риск от загуба на данни, ако кешът е непостоянен и не завърши записването на данните обратно в хранилището, преди да се загуби захранването.

Как да премахнете данни от кеша?

Един от ограничаващите фактори на всеки кеш е капацитетът. Големият кеш отнема много време за търсене, което отрича голяма част от предимството на използването на кеш на първо място. Технологиите за памет, използвани за кеширане, също са склонни да бъдат по-скъпи от паметта, от която кешират. Ако това не беше така, вероятно това ниво на паметта щеше да смени технологиите на паметта, за да подобри производителността. И двата фактора означават, че кешовете обикновено са сравнително малки, особено в сравнение с носителя за съхранение, от който кешират. RAM има по-малък капацитет от паметта, а кешът на процесора има по-малък капацитет от RAM. SLC кешът има по-малък капацитет от TLC паметта.

Всичко това означава, че често е необходимо данните да се извеждат от кеша, за да се освободи място за нови данни, които трябва да бъдат кеширани. Има набор от различни подходи към това. „Най-малко използван“, предпочита да извади записи от кеша, които имат най-нисък брой достъпи. Това може да бъде полезно за прогнозиране кои записи ще имат най-малък ефект върху бъдещи пропуски в кеша, но също така ще отчете съвсем наскоро добавени записи като имащи малък брой достъпи, което може да доведе до изтичане на кеша.

„Най-малко използвано“ предпочита да извади записи от кеша, които не са били използвани от известно време. Това предполага, че те не се използват в момента, но не взема предвид дали са били силно използвани преди известно време. „Най-скоро използвани“ предпочита да извади най-скоро използваните записи в кеша, като се предполага, че са били използвани и няма да е необходимо да се използват отново. Най-добрият подход обикновено е комбинация от трите, информирани от статистиките за употреба.

Остаряла информация и рискове за сигурността

Основният риск от кешовете е информацията, която съдържат, да стане остаряла. Записът в кеша се счита за остарял, когато оригиналните данни са били актуализирани, оставяйки записа в кеша неактуален. Важно е редовно да проверявате дали обслужваното живо копие все още съвпада с кешираното копие.

Конкретно в уебсайтовете също е изключително важно да се определи кои данни могат и кои не могат да бъдат кеширани. Например, напълно добре е голям непроменен JavaScript файл да бъде кеширан. Това спестява на потребителя да го изтегля всеки път и дори може да бъде от полза за други потребители, обслужвани от същия кеш. Не можете обаче да кеширате специфични за сесията данни. Представете си какво би се случило, ако прегледате приложение за съобщения, докато сте влезли като себе си, само за да откриете, че сте получили кеширана версия на съобщенията на друг потребител. За щастие, уеб сървърите могат да определят кои ресурси могат и кои не могат да бъдат кеширани и тези проблеми като цяло са добре известни, така че има малко проблеми като този.

Заключение

Кешът е част от паметта, която може да съхранява някои наскоро използвани данни в метод за съхранение, който е по-бърз за достъп, отколкото би бил за завършване на нормалния процес на достъп до данни отново. Кешът обикновено е с ограничен капацитет, което означава, че трябва да изхвърли записи, след като се напълни. Кешовете обикновено са прозрачни за потребителя, което означава, че латентността е единствената индикация, че резултатът е бил обслужван чрез кеш.


Как да клонирате твърд диск

Как да клонирате твърд диск

В съвременната цифрова ера, където данните са ценен актив, клонирането на твърд диск в Windows може да бъде решаващ процес за мнозина. Това изчерпателно ръководство

Как да коригирам неуспешно зареждане на драйвер WUDFRd на Windows 10?

Как да коригирам неуспешно зареждане на драйвер WUDFRd на Windows 10?

Изправени ли сте пред съобщението за грешка при зареждане на компютъра, което казва, че драйверът WUDFRd не успя да се зареди на вашия компютър?

Как да коригирате код за грешка на NVIDIA GeForce Experience 0x0003

Как да коригирате код за грешка на NVIDIA GeForce Experience 0x0003

Срещате ли NVIDIA GeForce код за грешка 0x0003 на вашия работен плот? Ако да, прочетете блога, за да разберете как да поправите тази грешка бързо и лесно.

Какво е SMPS?

Какво е SMPS?

Научете какво е SMPS и значението на различните рейтинги на ефективност, преди да изберете SMPS за вашия компютър.

Защо моят Chromebook не се включва

Защо моят Chromebook не се включва

Получете отговори на въпроса Защо моят Chromebook не се включва? В това полезно ръководство за потребителите на Chromebook.

Как да докладвате на Google за фишинг измами

Как да докладвате на Google за фишинг измами

Научете как да докладвате измамник на Google, за да му попречите да мами други с това ръководство.

Roomba спира, залепва и се обръща – Коригирайте

Roomba спира, залепва и се обръща – Коригирайте

Коригирайте проблем, при който прахосмукачката робот Roomba спира, залепва и продължава да се върти.

Как да промените графичните настройки на Steam Deck

Как да промените графичните настройки на Steam Deck

Steam Deck предлага стабилно и многостранно игрово изживяване на една ръка разстояние. Въпреки това, за да оптимизирате играта си и да осигурите възможно най-доброто

Какво представлява сигурността, базирана на изолация?

Какво представлява сигурността, базирана на изолация?

Щях да се задълбоча в тема, която става все по-важна в света на киберсигурността: сигурност, базирана на изолация. Този подход към

Как да използвате Auto Clicker за Chromebook

Как да използвате Auto Clicker за Chromebook

Днес щях да разгледам инструмент, който може да автоматизира повтарящи се задачи за щракване на вашия Chromebook: Auto Clicker. Този инструмент може да ви спести време и