Назначение и настройка дискового кэша
Когда вы открываете любые сайты, открытки, картинки, видео, их копии остаются в памяти браузера. Это происходит, даже если вы не скачиваете контент, а просто просматриваете. Как раз эти копии и называются кэшем. Он нужен для того, чтобы сократить количество запросов к сайтам. Например, через некоторое время вы вновь решите посмотреть страницу, которую открывали раньше. Кэш моментально загрузит ее с жесткого диска.
Кэширование работает практически во всех программах и приложениях. Некоторые данные очищаются автоматически, а другие копятся на жестком диске. Это создает дополнительную нагрузку на память устройства. Замедляется работа смартфона, ноутбука, компьютера. Интернет «зависает». Некоторые уверены: дело — в провайдере. Но даже если вы подключите самую высокую скорость (например, 1 Гб/с от МТС ), сайты все равно не будут грузиться быстрее, пока вы не очистите кэш.
Как чистить кэш, сколько раз в месяц это нужно делать
Самый простой способ очистить кэш — перезагрузить устройство. Речь идет не только о компьютерах и смартфонах, но и о wi-fi роутерах, и его модель не имеет значения. Даже самые современные и мощные маршрутизаторы от Ростелеком или Билайн нуждаются в регулярной перезагрузке (примерно, раз в месяц).
Рассказываем, как чистить кэш на Android:
- Откройте настройки смартфона.
- Перейдите в раздел «Устройство».
- Выберите вкладку «память» или «хранилище» (в зависимости от модели смартфона).
- Кликните на «данные кэша» или «cache».
- Нажмите «Очистить» либо «clear cache».
- Подтвердите действие.
Как очистить кэш на iOS:
- Откройте настройки.
- Найдите вкладку браузера Safari.
- Нажмите на вкладку и выберите «Очистить историю и данные».
- Подтвердите действие.
Имейте в виду: вместе с кэшем в айфоне удалится вся история посещений.
Как очистить кэш на компьютере или ноутбуке
Кэш на компьютере обычно чистят через данные локального диска:
- Откройте системный диск (как правило это локальный диск C).
- Кликните по нему правой кнопкой мышки и выберите вкладку «Свойства».
- В разделе «Общие» есть пункт «Очистка диска». Нажмите на эту кнопку.
- Выберите «Очистить системные файлы». Поставьте галочки напротив основных разделов, где хранится кэш:
— временные файлы интернета;
— файлы для отчетов об ошибках;
- Нажмите «Ок» и дождитесь, пока система удалит ненужные данные.
Процесс может занять некоторое время.
Есть еще один вариант: очистить кэш не в самом устройстве, а в браузере. Зайдите в тот, которым обычно пользуетесь (Mozilla Firefox, Google Chrome, Opera). Нажмите в правом верхнем углу на три точки или три горизонтальные полоски (в разных браузерах разные значки). Откроются настройки. Найдите вкладку «История» и нажмите «Очистить». Хотите, чтобы некоторые сайты сохранились в памяти? Добавьте их в закладки (для этого зайдите на страницу и нажмите комбинацию клавиш Ctrl+D).
Если статья оказалась полезной, не забывайте ставить лайк. Подписывайтесь на наш канал и узнавайте еще больше полезного о домашнем и мобильном интернете.
Локальные дисковые пространства имеют встроенный кэш на стороне сервера для повышения производительности хранилищ. Это большой, постоянно работающий в режиме реального времени кэш чтения и записи. При включении локальных дисковых пространств кэш настраивается автоматически. В большинстве случаев никакого ручного управления не требуется. Способ работы кэша зависит от типов имеющихся накопителей.
Видео ниже рассказывает о принципах работы кэширования для локальных дисковых пространств, а также о других аспектах проектирования.
Аспекты проектирования локальных дисковых пространств
(20 минут)
Типы накопителей и варианты развертывания
дисковые пространства Direct в настоящее время работает с четырьмя типами запоминающих устройств:
Тип диска | Описание |
---|---|
PMem — это постоянная память, новый тип хранения с низкой задержкой и высокой производительностью. | |
NVMe (Non-Volatile Memory Express) — это твердотельные диски, подключенные непосредственно к шине PCIe. Распространенные форм-факторы: 2,5 дюйма U.2, плата расширения PCIe (AIC) и M.2. NVMe предлагает больше операций ввода-вывода в секунду и пропускную способность с низкой задержкой, чем любой поддерживаемый нами тип диска, за исключением PMem. | |
SSD относится к твердотельным накопителям, которые подключаются через стандартный интерфейс SATA или SAS. | |
HDD относится к ротации, магнитным жестким дискам, которые обеспечивают большой объем хранилища. |
Их можно комбинировать различными способами, которые группируются по двум категориям: "все-Flash" и "гибридные".
Варианты развертывания только с флэш-накопителями
Развертывания на базе флэш-технологии ориентированны на максимальную производительность хранилища и не используют вращающиеся жесткие диски (HDD).
Варианты гибридного развертывания
Гибридные развертывания предназначены для обеспечения баланса производительности и емкости или увеличения емкости и включают в себя вращающиеся жесткие диски (HDD).
Кэш-накопители выбираются автоматически
При развертывании с несколькими типами накопителей локальные дисковые пространства автоматически используют для кэша все самые быстрые накопители. Остальные диски используются для хранения.
Скорость работы накопителя определяется согласно следующей иерархии.
Например, если у вас есть накопители NVMe и SSD, NVMe будут использоваться в качестве кэша для SSD.
Если у вас есть твердотельные накопители (SSD) и жесткие диски, SSD будут использоваться в качестве кэша для жестких дисков.
Кэш-накопители не добавляют полезной емкости хранения. Все данные, хранящиеся в кэше, хранятся и в других местах или будут храниться там после их переноса из кэша на устройство. Это означает, что общая номинальная емкость хранения в развернутой системе является суммой емкостей накопителей-хранилищ.
Если все накопители принадлежат к одному типу, кэш не настраивается автоматически. Вы можете вручную задать более износостойкие накопители в качестве кэша для менее износостойких накопителей того же типа. Соответствующие инструкции см. в разделе Ручная настройка.
При развертывании систем только с накопителями NVMe или SSD (особенно небольших масштабов) отсутствие кэш-накопителей может значительно повысить экономичность хранения.
Режим работы кэша задается автоматически
Поведение кэша определяется автоматически на основе типов дисков, которые кэшируются. При кэшировании твердотельных накопителей (например, кэширование NVMe для дисков SSD) кэшируются только операции записи. При кэшировании жестких дисков (например, когда жесткие диски кэшируются накопителями SSD) кэшируются операции и чтения, и записи.
Кэширование только операций записи для развертываний только с флэш-накопителями
При кэшировании твердотельных накопителей (NVMe или SSDs) кэшируются только операции записи. Это снижает износ накопителей-хранилищ, так как многие операции записи и перезаписи могут быть объединены в кэше и затем перенесены на устройство только при необходимости, что сокращает общий поток данных на накопители-хранилища и увеличивает срок их службы. Поэтому для кэша рекомендуется выбирать более износостойкие и оптимизированные для записи накопители. Накопители-хранилища в целом могут иметь менее высокий ресурс записи.
Поскольку операции чтения не влияют существенно на продолжительность срока службы флэш-накопителей и поскольку твердотельные накопители обычно имеют низкую задержку чтения, то операции чтения не кэшируются — чтение выполняется непосредственно с накопителей-хранилищ (за исключением ситуаций, когда данные были записаны совсем недавно и еще не перенесены из кэша на устройство). Это позволяет ориентировать работу кэша исключительно на операции записи, повышая их эффективность.
Это приводит к тому, что характеристики записи (например, задержка записи) определяются кэш-накопителями, а характеристики чтения — накопителями-хранилищами. И те, и другие согласованы, предсказуемы и унифицированы.
Кэширование операций чтения и записи для гибридных развертываний
При кэшировании жестких дисков (HDD) кэшируются операции чтения и записи с тем, чтобы обеспечить для них показатели задержки, как при использовании флэш-накопителей (зачастую улучшив примерно в 10 раз). Кэш чтения хранит недавно считанные и часто считываемые данные для организации быстрого доступа к ним и сведения к минимуму объема произвольных обращений к жестким дискам. (Из-за задержек во время операций поиска и раскрутки диска вызванные произвольными обращениями к жесткому диску потери времени и задержки имеют существенное значение.) Операции записи кэшируются, чтобы объединить последовательности запросов, а также объединить операции записи и перезаписи для снижения общего потока данных на накопители-хранилища.
В локальных дисковых пространствах реализован алгоритм, который устраняет произвольный порядок операций записи перед их переносом из кэша на устройство и эмулирует шаблон ввода-вывода, который выглядит последовательным, даже если реальные операции ввода-вывода, инициируемые рабочей нагрузкой (например, виртуальными машинами), имеют произвольный порядок. Это позволяет увеличить количество операций ввода-вывода в секунду и пропускную способность для жестких дисков.
Кэширование в развертываниях с накопителями всех трех типов
При наличии накопителей всех трех типов накопители NVMe обеспечивают кэширование для твердотельных накопителей (SSD) и жестких дисков. Режим работы соответствует описанному ранее: для накопителей SSD кэшируются только операции записи, для жестких дисков — операции чтения и записи. Работа по кэшированию жестких дисков равномерно распределяется среди кэш-накопителей.
Итоги
В этой таблице приведена сводная информация о том, какие накопители используются для кэширования, какие — для хранения данных и как осуществляется кэширование в каждом варианте развертывания.
Развертывание | Кэш-накопители | Накопители-хранилища | Режим кэширования (по умолчанию) |
---|---|---|---|
Только NVMe | Нет (как вариант — настройка вручную) | NVMe | Только запись (если настроено) |
Только SSD | Нет (как вариант — настройка вручную) | SSD | Только запись (если настроено) |
NVMe + SSD | NVMe | SSD | Только на запись |
NVMe + жесткий диск | NVMe | HDD | Чтение + запись |
SSD + жесткий диск | SSD | HDD | Чтение + запись |
NVMe + SSD + жесткий диск | NVMe | SSD + жесткий диск | Для жесткого диска — чтение + запись, для SSD — только запись |
Серверная архитектура
Кэш реализуется на уровне накопителя: отдельные кэш-накопители на одном сервере привязаны к одному или нескольким накопителям-хранилищам на том же сервере.
Поскольку кэш находится ниже остального стека программно-определяемого хранилища Windows, он не использует такие концепции, как дисковые пространства или отказоустойчивость, и не нуждается в них. Можно считать это созданием «гибридных» накопителей (частично флэш-накопителей, частично дисковых), которые затем предоставляются операционной системе Windows. Как и в случае с реальным гибридным накопителем, перемещение в режиме реального времени «горячих» и «холодных» данных между более быстрыми и более медленными зонами физического носителя почти незаметно извне.
С учетом того, что устойчивость в локальных дисковых пространствах реализуется как минимум на уровне сервера (то есть, копии данных всегда записываются на разные сервера; не более одной копии на сервер), на данные в кэше распространяются те же преимущества устойчивости, что и на данные не в кэше.
Например, при использовании трехстороннего зеркалирования три копии любых данных записываются на разные серверы и оказываются там в кэше. Вне зависимости от того, будут ли они позднее перенесены из кэша на устройство или нет, три эти копии всегда существуют.
Привязки к накопителям являются динамическими
Привязка кэш-накопителей к накопителям-хранилищам может иметь любой коэффициент — от 1:1 до 1:12 и так далее. Он настраивается динамически всякий раз, когда добавляются или удаляются накопители, например при увеличении масштаба системы или после сбоев. Это означает, что вы можете добавлять кэш-накопители или накопители-хранилища независимо друг от друга, когда это необходимо.
Рекомендуется делать число накопителей-хранилищ кратным числу кэш-накопителей для соблюдения симметрии. Например, если у вас четыре кэш-накопителя, то при наличии восьми накопителей-хранилищ (соотношение 1:2) производительность будет более постоянной, чем при наличии семи или девяти накопителей-хранилищ.
Обработка сбоев кэш-накопителей
При сбое в работе кэш-накопителя все операции записи, которые еще не были перенесены из кэша на устройство, теряются на локальном сервере, то есть существуют только в других копиях (на других серверах). Так же, как и при сбоях других накопителей, дисковые пространства могут выполнять автоматическое восстановление и делают это, обращаясь к сохранившимся копиям.
В течение небольшого периода времени накопители-хранилища, которые были привязаны к отказавшему кэш-накопителю, будут отображаться как неисправные. После повторной привязки кэша (выполняется автоматически) и завершения восстановления данных (выполняется автоматически) они снова будут отображаться как исправные.
Этот сценарий показывает, почему для поддержания работоспособности сервера требуется не менее двух кэш-накопителей на сервер.
Затем можно заменить кэш-накопитель, следуя стандартной процедуре замены любых накопителей.
Может потребоваться отключение питания для безопасной замены накопителя NVMe в виде дополнительной карты (AIC) или в форм-факторе M.2.
Связь с другими кэшами
Существует несколько других несвязанных друг с другом кэшей в стеке программно-определяемого хранилища Windows. Примерами могут служить кэш обратной записи дисковых пространств и кэш чтения в памяти общего тома кластера (CSV).
При использовании локальных дисковых пространств не следует изменять стандартный режим работы кэша обратной записи дисковых пространств. Например, не следует использовать такой параметр, как -WriteCacheSize в командлете New-Volume.
Решайте сами, использовать кэш CSV или нет. Он не конфликтует с кэшем, описанным в этом разделе каким бы то ни было. В некоторых рабочих сценариях он может повысить производительность. Подробнее см. в разделе Включение кэша CSV.
Настройка вручную
В большинстве случаев ручная настройка не требуется. Если это необходимо, см. следующие разделы.
если после установки необходимо внести изменения в модель устройства кэширования, измените документ по компонентам поддержки служба работоспособности, как описано в разделе общие сведения о служба работоспособности.
Указание модели кэш-накопителя
В развертываниях, где все накопители одного типа (например, только NVMe или SSD), кэш не настроен, поскольку Windows не может автоматически определить у накопителей одного типа такие характеристики, как ресурс записи.
Чтобы использовать более износостойкие накопители в качестве кэша для менее износостойких накопителей того же типа, используйте для указания нужной модели накопителя параметр -CacheDeviceModel командлета Enable-ClusterS2D. После включения локальных дисковых пространств все накопители указанной модели будут использоваться для кэширования.
Убедитесь, что строка модели указана в точности так, как она отображается в выходных данных командлета Get-PhysicalDisk.
Пример
Сначала получите список физических дисков:
Вот пример выходных данных:
Затем введите следующую команду, указав модель устройства кэша:
Вы можете проверить, что назначенные накопители используются для кэширования, запустив командлет Get-PhysicalDisk в PowerShell и проверив свойство Usage — оно должно иметь значение «Journal».
Варианты развертывания вручную
Ручная настройка поддерживает следующие варианты развертывания:
Установка режима работы кэша
Можно переопределить режим работы кэша по умолчанию. Например, можно включить кэширование операций чтения даже для развертываний только с использованием флэш-накопителей. Не рекомендуется менять режим работы, если вы не уверены, что режим работы по умолчанию не подходит для ваших рабочих нагрузок.
Чтобы переопределить поведение, используйте командлет Set-клустерсторажеспацесдирект и параметры -качемодессд и -качемодехдд . Параметр CacheModeSSD задает режим работы кэша при кэшировании твердотельных накопителей. Параметр CacheModeHDD задает режим работы кэша при кэшировании жестких дисков. Это можно сделать в любой момент после включения локальных дисковых пространств.
Чтобы проверить, задано ли поведение, можно использовать Get-клустерсторажеспацесдирект .
Пример
сначала получите параметры дисковые пространства Direct:
Вот пример выходных данных:
Затем сделайте следующее.
Вот пример выходных данных:
Изменение размера кэша
Размер кэша должен выбираться таким, чтобы в нем мог разместиться рабочий набор (активно читаемые и записываемые данные в любой момент времени) ваших приложений и рабочих нагрузок.
Это особенно важно в гибридных развертываниях с использованием жестких дисков. Если размер активного рабочего набора превышает размер кэша либо размер активного рабочего набора меняется слишком быстро, будет возрастать число промахов в кэше чтения и операции записи должны будут чаще переноситься из кэша на устройство, что будет негативно сказываться на общей производительности.
Для проверки показателя промахов в кэше можно использовать встроенную служебную программу Windows «Системный монитор» (PerfMon.exe). В частности, можно сравнить значение Cache Miss Reads/sec (Промахов в кэше чтения в секунду) из группы счетчиков Cluster Storage Hybrid Disk (Гибридный диск системы хранения данных кластера) с общим числом операций чтения в вашем развертывании. Каждый «гибридный диск» соответствует одному накопителю-хранилищу.
Например, два кэш-накопителя, привязанные к четырем накопителям-хранилищам, дадут четыре экземпляра объекта «гибридный диск» на сервер.
Универсальных правил нет, но если слишком много операций чтения не попадают в кэш, его размер может быть недостаточным. В этом случае рекомендуется добавить дополнительные кэш-накопители для увеличения размера кэша. Добавлять кэш-накопители и накопители-хранилища можно независимо друг от друга, когда это необходимо.
Кэш (англ. cache [1] , произносится kæʃ кЭш) — промежуточный буфер с быстрым доступом, содержащий копию той информации, которая хранится в памяти с менее быстрым доступом, но с наибольшей вероятностью может быть оттуда запрошена. Доступ к данным в кэше идёт быстрее, чем выборка исходных данных из медленной памяти или их перевычисление, что делает среднее время доступа короче.
Содержание
История
Впервые слово «кэш» в компьютерном контексте было использовано в 1967 году во время подготовки статьи для публикации в журнале «IBM Systems Journal». Статья касалась усовершенствования памяти в разрабатываемой модели 85 из серии IBM System/360. Редактор журнала Лайл Джонсон попросил придумать более описательный термин, нежели «высокоскоростной буфер», но из-за отсутствия идей сам предложил слово «кэш». Статья была опубликована в начале 1968 года, авторы были премированы [2]
Функционирование
Кэш — это память с большей скоростью доступа, предназначенная для ускорения обращения к данным, содержащимся постоянно в памяти с меньшей скоростью доступа (далее «основная память»). Кэширование применяется ЦПУ, жёсткими дисками, браузерами и веб-серверами.
Кэш состоит из набора записей. Каждая запись ассоциирована с элементом данных или блоком данных (небольшой части данных), которая является копией элемента данных в основной памяти. Каждая запись имеет идентификатор, определяющий соответствие между элементами данных в кэше и их копиями в основной памяти.
Когда клиент кэша (ЦПУ, веб-браузер, операционная система) обращается к данным, прежде всего исследуется кэш. Если в кэше найдена запись с идентификатором, совпадающим с идентификатором затребованного элемента данных, то используются элементы данных в кэше. Такой случай называется попаданием кэша. Если в кэше не найдено записей, содержащих затребованный элемент данных, то он читается из основной памяти в кэш, и становятся доступным для последующих обращений. Такой случай называется промахом кэша. Процент обращений к кэшу, когда в нём найден результат, называется уровнем попаданий или коэффициентом попаданий в кэш.
Например, веб-браузер проверяет локальный кэш на диске на наличие локальной копии веб-страницы, соответствующей запрошенному URL. В этом примере URL — это идентификатор, а содержимое веб-страницы — это элементы данных.
Если кэш ограничен в объёме, то при промахе может быть принято решение отбросить некоторую запись для освобождения пространства. Для выбора отбрасываемой записи используются разные алгоритмы вытеснения.
При модификации элементов данных в кэше выполняется их обновление в основной памяти. Задержка во времени между модификацией данных в кэше и обновлением основной памяти управляется так называемой политикой записи.
В кэше с немедленной записью каждое изменение вызывает синхронное обновление данных в основной памяти.
В кэше с отложенной записью (или обратной записью) обновление происходит в случае вытеснения элемента данных, периодически или по запросу клиента. Для отслеживания модифицированных элементов данных записи кэша хранят признак модификации (изменённый или «грязный»). Промах в кэше с отложенной записью может потребовать два обращения к основной памяти: первое для записи заменяемых данных из кэша, второе для чтения необходимого элемента данных.
В случае, если данные в основной памяти могут быть изменены независимо от кэша, то запись кэша может стать неактуальной. Протоколы взаимодействия между кэшами, которые сохраняют согласованность данных, называют протоколами когерентности кэша.
Кэш центрального процессора
Ряд моделей центральных процессоров (ЦП) обладают собственным кэшем, для того чтобы минимизировать доступ к оперативной памяти (ОЗУ), которая медленнее, чем регистры. Кэш-память может давать значительный выигрыш в производительности, в случае когда тактовая частота ОЗУ значительно меньше тактовой частоты ЦП. Тактовая частота для кэш-памяти обычно ненамного меньше частоты ЦП.
Уровни кэша
Кэш центрального процессора разделён на несколько уровней. Для универсальных процессоров — до 3. Кэш-память уровня N+1 как правило больше по размеру и медленнее по скорости обращения и передаче данных, чем кэш-память уровня N.
Самой быстрой памятью является кэш первого уровня — L1-cache. По сути, она является неотъемлемой частью процессора, поскольку расположена на одном с ним кристалле и входит в состав функциональных блоков. Состоит из кэша команд и кэша данных. Некоторые процессоры без L1 кэша не могут функционировать. На других его можно отключить, но тогда значительно падает производительность процессора. L1 кэш работает на частоте процессора, и, в общем случае, обращение к нему может производиться каждый такт (зачастую является возможным выполнять даже несколько чтений/записей одновременно). Латентность доступа обычно равна 2−4 тактам ядра. Объём обычно невелик — не более 128 Кбайт.
Вторым по быстродействию является L2-cache — кэш второго уровня. Обычно он расположен либо на кристалле, как и L1, либо в непосредственной близости от ядра, например, в процессорном картридже (только в слотовых процессорах). В старых процессорах — набор микросхем на системной плате. Объём L2 кэша от 128 Кбайт до 1−12 Мбайт. В современных многоядерных процессорах кэш второго уровня, находясь на том же кристалле, является памятью раздельного пользования — при общем объёме кэша в 8 Мбайт на каждое ядро приходится по 2 Мбайта. Обычно латентность L2 кэша, расположенного на кристалле ядра, составляет от 8 до 20 тактов ядра. В отличие от L1 кэша, его отключение может не повлиять на производительность системы. Однако, в задачах, связанных с многочисленными обращениями к ограниченной области памяти, например, СУБД, производительность может упасть в десятки раз.
Кэш третьего уровня наименее быстродействующий и обычно расположен отдельно от ядра ЦП, но он может быть очень внушительного размера — более 32 Мбайт. L3 кэш медленнее предыдущих кэшей, но всё равно значительно быстрее, чем оперативная память. В многопроцессорных системах находится в общем пользовании.
Отключение кэша второго и третьего уровней обычно используется в математических задачах, например, при обсчёте полигонов, когда объём данных меньше размера кэша. В этом случае, можно сразу записать все данные в кэш, а затем производить их обработку.
Ассоциативность кэша
Одна из фундаментальных характеристик кэш-памяти — уровень ассоциативности — отображает её логическую сегментацию. Дело в том, что последовательный перебор всех строк кэша в поисках необходимых данных потребовал бы десятков тактов и свёл бы на нет весь выигрыш от использования встроенной в ЦП памяти. Поэтому ячейки ОЗУ жёстко привязываются к строкам кэш-памяти (в каждой строке могут быть данные из фиксированного набора адресов), что значительно сокращает время поиска. С каждой ячейкой ОЗУ может быть связано более одной строки кэш-памяти: например, n -канальная ассоциативность (англ. n -way set associative ) обозначает, что информация по некоторому адресу оперативной памяти может храниться в n местах кэш-памяти.
При одинаковом объеме кэша схема с большей ассоциативностью будет наименее быстрой, но наиболее эффективной.
Кэширование внешних накопителей
Многие периферийные устройства хранения данных используют кэш для ускорения работы, в частности, жёсткие диски используют кэш-память от 1 до 32 Мбайт (модели с поддержкой
Применение кэширования внешних накопителей обусловлено следующими факторами:
- скорость доступа процессора к оперативной памяти во много раз больше, чем к памяти внешних накопителей;
- некоторые блоки памяти внешних накопителей используются несколькими процессами одновременно и имеет смысл прочитать блок один раз, затем хранить одну копию блока в оперативной памяти для всех процессов;
- доступ к некоторым блокам оперативной памяти происходит гораздо чаще, чем к другим, поэтому использование кэширования для таких блоков в целом увеличивает производительность системы;
- для некоторых блоков памяти внешних накопителей не требуется непосредственной записи после модификации, и использование кэша для таких блоков оптимизирует использование ввода-вывода.
Кэширование, выполняемое операционной системой
Кэш оперативной памяти состоит из следующих элементов:
- набор страниц оперативной памяти, разделённых на буферы, равные по длине блоку данных соответствующего устройства внешней памяти;
- набор заголовков буферов, описывающих состояние соответствующего буфера; , содержащей соответствие номера блока заголовку;
- списки свободных буферов.
Алгоритм работы кэша с отложенной записью
Изначально все заголовки буферов помещаются в список свободных буферов. Если процесс намеревается прочитать или модифицировать блок, то он выполняет следующий алгоритм:
- пытается найти в хеш-таблице заголовок буфера с заданным номером;
- в случае, если полученный буфер занят, ждёт его освобождения;
- в случае, если буфер не найден в хеш-таблице, берёт первый буфер из хвоста списка свободных;
- в случае, если список свободных буферов пуст, то выполняется алгоритм вытеснения (см. ниже);
- в случае, если полученный буфер помечен как «грязный», выполняет асинхронную запись содержимого буфера во внешнюю память.
- удаляет буфер из хеш-таблицы, если он был помещён в неё;
- помещает буфер в хеш-таблицу с новым номером.
Процесс читает данные в полученный буфер и освобождает его. В случае модификации процесс перед освобождением помечает буфер как «грязный». При освобождении буфер помещается в голову списка свободных буферов.
- если процесс прочитал некоторый блок в буфер, то велика вероятность, что другой процесс при чтении этого блока найдёт буфер в оперативной памяти;
- запись данных во внешнюю память выполняется только тогда, когда не хватает «чистых» буферов, либо по запросу.
Алгоритм вытеснения
Если список свободных буферов пуст, то выполняется алгоритм вытеснения буфера. Алгоритм вытеснения существенно влияет на производительность кэша. Существуют следующие алгоритмы:
- LRU (Least Recently Used) — вытесняется буфер, неиспользованный дольше всех;
- MRU (Most Recently Used) — вытесняется последний использованный буфер;
- LFU (Least Frequently Used) — вытесняется буфер, использованный реже всех;
- ARC (англ.) (Adaptive Replacement Cache) — алгоритм вытеснения, комбинирующий LRU и LFU, запатентованный
Программное кэширование
Политика записи при кэшировании
При чтении данных кэш-память даёт однозначный выигрыш в производительности. При записи данных выигрыш можно получить только ценой снижения надёжности. Поэтому в различных приложениях может быть выбрана та или иная политика записи кэш-памяти..
Существуют две основные политики записи кэш-памяти — сквозная запись (write-through) и отложенная запись (write-back).
- сквозная запись подразумевает, что при изменении содержимого ячейки памяти, запись происходит синхронно и в кэш и в основную память.
- отложенная запись подразумевает, что можно отложить момент записи данных в основную память, а записать их только в кэш. При этом данные будут выгружены в оперативную память только в случае обращения к ним какого либо другого устройства (другой ЦП, контроллер DMA) либо нехватки места в кэше для размещения других данных. Производительность, по сравнению со сквозной записью, повышается, но это может поставить под угрозу целостность данных в основной памяти, поскольку программный или аппаратный сбой может привести к тому, что данные так и не будут переписаны из кэша в основную память. Кроме того, в случае кэширования оперативной памяти, когда используются два и более процессоров, нужно обеспечивать согласованность данных в разных кэшах.
Кэширование интернет-страниц
В процессе передачи информации по сети может использоваться кэширование интернет-страниц — процесс сохранения часто запрашиваемых документов на (промежуточных) прокси-серверах или машине пользователя, с целью предотвращения их постоянной загрузки с сервера-источника и уменьшения трафика. Таким образом, информация перемещается ближе к пользователю. Управление кэшированием осуществляется при помощи CMS конкретного сайта для снижения нагрузки на сервер при большой посещаемости. Кэширование может производится как в память, так и в файловый кэш (кэш на файлах).
Кэширование результатов работы
Многие программы записывают куда-либо промежуточные или вспомогательные результаты работы, чтобы не вычислять их каждый раз, когда они понадобятся. Это ускоряет работу, но требует дополнительной памяти (оперативной или дисковой). Примером такого кэширования является индексирование баз данных.
С появлением компьютера и развитием Интернета в наш лексикон ворвалось много новых терминов. Один из них – кэш. Что это такое простыми словами? Попробуем в этом разобраться.
Общие понятия о кэше
Согласно Википедии, кэшем называют промежуточный буфер памяти, который содержит информацию с наибольшей вероятностью запроса. Скорость доступа к этой памяти гораздо больше, чем получение данных из исходного хранилища.
Часто кэшем называют также временные файлы и данные, хранящиеся в памяти компьютера, телефона, браузера или сервера.
Процесс сохранения информации в кэш называют кэшированием.
Для более ясного понимания, что такое кэш, можно привести такую аналогию.
Допустим вам нужно приготовить доклад на какую-то тему. Для этого вам нужны определенные документы, книги. Вы идете в библиотеку, выбираете нужные вам материалы, приносите домой и кладете на свой рабочий стол. Теперь для получения нужной информации достаточно протянуть руку и открыть соответствующую книгу. В данном случае рабочий стол играет роль кэша.
Назначение кэша – сократить время доступа к информации и, тем самым увеличить быстродействие компьютера или программы.
Типы кэша
Кеширование применяется во многих случаях, когда нужно увеличить скорость работы с данными, поэтому реализовать его можно по-разному. Выделяют два способа кэширования:
- Аппаратная реализация;
- Программная реализация.
Рассмотрим эти способы немного подробнее.
Аппаратная реализация
Такой способ кэширования основан на использовании специального устройства памяти для хранения и быстрого извлечения информации.
Например, жесткий диск имеет специальную микросхему в качестве такого хранилища.
Сложную многоступенчатую систему кэширования имеет центральный процессор или мобильные устройства. Естественно, увеличить размер аппаратного кэша нельзя.
Программная реализация
При таком способе кэширования для временного сохранения данных выделяется область на диске, в которой ОС или приложение хранят часто используемые файлы. При каждом запросе пользователя программа сначала обращается за данными к кэшу, и, если эти данные отсутствуют, загружает их из удаленных источников, например, Интернета.
При программном кэшировании размер кэша зависит от размера свободного дискового пространства, а скорость загрузки – от типа носителя.
Кэширование на компьютере
Операционная система компьютера использует программное кэширование. В выделенной области диска хранятся различные временные файлы, которые возникают при работе компьютера.
Кэшированием можно назвать и использование так называемого файла подкачки, который создает ОС на диске ПК.
Как известно, при работе компьютера файлы программ и обрабатываемые данные загружаются в оперативную память для более быстрого доступа к ним. Но этой памяти может быть недостаточно, тогда часть данных отправляется в файл подкачки, который играет роль дополнительного ОЗУ. Объем этого файла регулируется ОС и тем самым компенсируется недостаток оперативной памяти.
Что такое кэш на телефоне
Современные телефоны и смартфоны также используют кэш в своей работе, но здесь это понятие несколько шире. Кэш на телефоне — это не только временные файлы, но и дополнения к программам и играм. Без них программы и игры будут иметь ограничения в работе, а в некоторых случаях даже не запустятся.
или
Что такое кэш браузера
Любой современный браузер (Chrome, Opera, Mozilla и т. д.) обязательно использует кэширование. Это необходимо для быстрой загрузки веб-страниц и экономии трафика. Это достаточно легко проверить. Если измерить время загрузки страницы при первом посещении сайта и время ее повторной загрузки, то они могут заметно отличаться, так как во втором случае многие файлы, составляющие эту страницу, будут загружаться из кэша на жестком диске вашего компьютера, а не из Интернета.
В браузере используется программное кеширование. Эта технология позволяет быстрее загружать и последующие страницы сайта, хотя заходим на них только первый раз. Объясняется это тем, что на них обязательно присутствуют повторяющиеся элементы (шапка, подвал, сайдбар и т. д.), которые уже сохранены в кэше после посещения одной страницы.
Кэширование браузером веб-страниц имеет и недостатки. Например, если мы посещаем много различных сайтов, то кэш оказывается заполненным информацией о них, а при заходе на новый сайт браузер сначала пытается найти информацию о нем в кэше и, только не найдя ничего, начинает загрузку из Интернета. В результате время загрузки оказывается даже больше, чем без кэширования. Поэтому кэш браузера необходимо периодически чистить.
Кэш центрального процессора
Процессоры имеют огромную скорость обработки данных, которую не может обеспечить оперативная память. Именно поэтому центральный процессор использует кэширование, при этом он имеет 2-3 уровня кэш-памяти, которые обозначаются L1-L2 (Level 1-3). Уровень L1 имеет наименьший объем, но наибольшую скорость работы. Он работает на той же частоте, что и процессор. Последующие уровни имеют соответственно меньшую скорость работы, но больший объем. Иногда кэш-память центрального процессора называют сверхоперативной памятью.
Очистка кэша
Нужно ли чистить кэш? Вернемся к нашей аналогии с библиотекой и рабочим столом.
Допустим, вы закончили свой доклад, но книги, которые взяли в библиотеке, еще не вернули, они остались на столе. Теперь вы начали готовить новый текст, для которого принесли новые книги и положили на стол. Ели продолжать в том же духе, то через некоторое время ваш рабочий стол будет завален книгами, большинство из которых вам уже не нужно, черновиками и т. д. Конечно, работать в этом случае будет труднее, и находить нужную информацию вы будете все медленнее. Поэтому ненужные книги нужно сдавать в библиотеку, а черновики выбрасывать.
Точно также нужно периодически чистить кэш, причем, когда говорится об очистке, имеется в виду программный кэш. Аппаратный кэш – это микросхемы, которые содержат данные только при работе компьютера, а при его выключении все автоматически исчезает.
Для очистки кэша существуют как встроенные, так и специальные программные средства. Рассмотрим некоторые, наиболее важные.
Как очистить кэш браузера
У каждого браузера в меню есть команда для очистки кэша. Найти ее несложно, но сделаю подсказки для наиболее распространенных браузеров.
Google Chrome
В правом верхнем углу браузера нажимаем на кнопку Меню, выбираем Настройки, открывшуюся вкладку прокручиваем вниз и открываем Дополнительные, здесь находим пункт Очистить историю.
В открывшемся окне ставим галочки для тех данных, которые нужно удалить, выбираем временной интервал и нажимаем Удалить данные.
Mozilla Firefox
Аналогично, заходим в Меню, открываем вкладку Настройки,
выбираем раздел Приватность и защита
и находим пункт Куки и данные сайтов.
После нажатия также в открывшемся окне выбираем, что нужно удалять.
Opera
Точно также идем в Меню Простые настройки и прокручиваем его до пункта Очистить историю посещений
После нажатия на кнопку открывается окно, в котором отмечаем данные,подлежащие удалению и жмем Удалить данные.
Универсальный метод
Если не хочется искать в меню нужную команду, можно использовать метод, который работает во всех браузерах. Это набор горячих клавиш
который сразу открывает нужное окно.
CCleaner
Существует много, так называемых, программ-«чистильщиков», предназначенных для очистки компьютера от разного рода «мусора» и ускорения его работы.
С ее помощью можно удалить нежелательные или нерабочие файлы, недействительные или неверные записи в реестре и многое другое. Одна из функций – удаление кэшированных данных, созданных как операционной системой, так и различными приложениями, в первую очередь, браузерами.
Программа Glary Utilities
GU – еще одна универсальная программа для чистки и оптимизации ОС. Ее основные возможности, в основном, сходны с возможностями предыдущей программы. Хочу отметить очень удобную команду 1-Кликом, которая находится во второй вкладке окна программы. Эта кнопка запускает целую серию команд, в функции которых входит стандартная очистка ПК. Настраивать при этом ничего не нужно.
Программа имеет дружеский пользовательский интерфейс, что позволяет применять ее пользователям любого уровня. Она также входит в разряд рекомендованных мной.
Кэширование сайта
Этот вопрос наиболее актуален для веб-мастеров.
Большинство современных сайтов написаны на языке PHP и имеют динамические страницы, которые создаются «на лету» по запросу пользователя. Вкратце напомню, как это происходит.
После запроса посетителя сайта (то есть клика по ссылке на страницу) сервер обращается к базе данных и папкам, содержащим необходимые медиафайлы, файлы стилей, скриптов, находит нужную информацию и, используя команды, написанные на языке PHP, формирует HTML-страницу, актуальную на данный момент и для данного посетителя. Именно эту страницу и получает браузер. Так как большинство страниц изменяется редко или не изменяется совсем, сервер отправляет их в кэш, чтобы при последующих запросах не создавать их заново. Это заметно сокращает время загрузки.
Очень много (большая часть) сайтов создано с использованием различных CMS (WordPress, Joomla!, Drupal …). Для таких ресурсов уже разработаны готовые решения для кэширования в виде плагинов или расширений.
Например, самый популярный движок WordPress может использовать такие плагины кэширования:
- WP Rocket,
- W3 Total Cache,
- WP Super Cache,
- WP Fastest Cache,
- Comet Cache,
- Cache Enabler и многие другие.
Каждый из них имеет свои возможности и настройки. Я использую на своих сайтах плагин Hyper Cache. Он бесплатный, легко настраивается и неплохо справляется со своими обязанностями.
Другой уровень кэширования сайта уже описывался выше. Это кэш браузера, то есть сохранение информации на уровне клиента.
Все эти методы позволяют заметно увеличить скорость загрузки сайта, снизить нагрузку на сервер и сэкономить трафик. Но иногда кэширование мешает актуальному отображению страниц сайта, так как загружаются данные, которые устарели. Поэтому приходится очищать кэш вручную.
Итак, подводя итоги, можно сказать простыми словами, что кэш – это место для временного хранения информации, которая может быть затребована в ближайшее время. Он служит для ускорения доступа к данным, но для оптимальной работы его нужно периодически очищать.
Читайте также: