Подтвердить что ты не робот

Что означает холодный кэш и концепция теплого кэша?

Я прочитал статью, в которой использовались термины " холодный кеш" и " теплый кеш" Я гуглил об этих терминах, но не нашел ничего полезного (только здесь).

Что означают эти термины?

4b9b3361

Ответ 1

TL; DR Существует аналогия с холодным двигателем и прогретым двигателем автомобиля. Холодный кеш - не имеет никаких значений и не может дать вам никакого ускорения, потому что, ну, он пустой. Теплый кеш имеет некоторые значения и может дать вам это ускорение.

Кэш - это структура, которая содержит некоторые значения (inode, страницы памяти, дисковые блоки и т.д.) Для более быстрого поиска.

Кэш работает путем хранения каких-либо кратких ссылок в структуре данных быстрого поиска (хэш-таблица, дерево B+) или носителя с более быстрым доступом (оперативная память против жесткого диска, SSD против жесткого диска).

Для быстрого поиска вам необходим ваш кеш для хранения значений. Давайте посмотрим на пример.

Скажем, у вас есть система Linux с некоторой файловой системой. Чтобы получить доступ к файлам в файловой системе, вам нужно знать, где ваш файл начинается на диске. Эта информация хранится в inode. Для простоты мы говорим, что таблица inode хранится где-то на диске (так называемая часть "суперблока").

Теперь представьте, что вам нужно прочитать файл /etc/fstab. Для этого вам нужно прочитать таблицу inode с диска (10 мс), затем проанализировать ее и получить начальный блок файла, а затем прочитать сам файл (10 мс). Всего ~ 20 мс

Это слишком много операций. Итак, вы добавляете кеш в виде хеш-таблицы в оперативной памяти. Доступ к оперативной памяти составляет 10 нс - это в 1000 (!) Раз быстрее. Каждая строка в этой хэш-таблице содержит 2 значения.

(inode number or filename) : (starting disk block)

Но проблема в том, что на старте ваш кеш пуст - такой кеш называется холодным. Чтобы использовать преимущества вашего кэша, вам нужно заполнить его некоторыми значениями. Как это случилось? Когда вы ищете какой-то файл, вы заглядываете в свой кэш-память. Если вы не нашли inode в кеше (промах кеша), вы говорите "Хорошо" и делаете полный цикл чтения с чтением таблицы inode, анализом его и чтением самого файла. Но после разбора части вы сохраняете номер инода и анализируете начальный блок диска в своем кеше. И это происходит снова и снова - вы пытаетесь прочитать другой файл, вы смотрите в кеш, вы получаете пропущенный кеш (ваш кеш холодный), вы читаете с диска, вы добавляете строку в кеш.

Таким образом, холодный кеш не дает вам никакого ускорения, потому что вы все еще читаете с диска. В некоторых случаях холодный кэш замедляет работу вашей системы, потому что вы выполняете дополнительную работу (дополнительный шаг поиска в таблице) для разогрева кеша.

Через некоторое время у вас появятся некоторые значения в вашем кеше, и через некоторое время вы попытаетесь прочитать файл, вы посмотрите в кеш и BAM! Вы нашли индекс (попадание в кэш)! Теперь у вас есть начальный блок диска, поэтому вы пропускаете чтение суперблока и начинаете читать сам файл! Вы только что сэкономили 10 мс!

Этот кеш называется теплым кешем - кеш с некоторыми значениями, которые дают вам попадания в кеш.

Ответ 2

enter image description here

Фон:

Cache - это маленький и быстрый memory, который помогает избежать CPU доступа main memory (большего и медленного) для экономии времени (Cache чтение ~100 x быстрее, чем чтение из main memory). Но это помогает только в том случае, если данные, которые необходимы вашей программе, были cached (считанные из main memory в Cache) и действительны. Кроме того, Cache заполняется данными со временем. Итак, Cache может быть:
 1. Пустой, или
 2. могут содержать нерелевантные данные, или
 3. могут содержать соответствующие данные.


Теперь, на ваш вопрос:

Холодный кеш: Когда Cache пуст или имеет нерелевантные данные, так что CPU необходимо выполнить более медленное чтение из main memory для вашего требования к данным программы.

Горячий кеш:. Когда Cache содержит релевантные данные, и все показания для вашей программы выполнены из самого Cache.

Итак, горячие кеши желательны, холодных кешей нет.

Ответ 3

Очень приятный ответ @avd.

Холодный кэш - это просто пустой кеш или один с устаревшими данными.

Горячий кеш, с другой стороны, поддерживает полезные данные, требуемые вашей системой. Это помогает вам ускорить обработку; в основном он используется для обработки запросов в режиме реального времени. Существуют системы/процессы, которым необходима определенная информация, прежде чем они начнут обслуживать запросы пользователей; такой как торговая платформа, для которой требуется информация о рыночных данных/информация о рисках/информация о безопасности и т.д., прежде чем она сможет обрабатывать пользовательский запрос. Это займет много времени, если для каждого запроса процесс должен запросить БД/службу, чтобы получить эту критическую информацию. Поэтому было бы неплохо кэшировать его; и это было бы возможно через Hot Cache. Этот кеш следует регулярно поддерживать (обновления/удаление и т.д.); в противном случае за период, когда ваш кеш может увеличиваться в размерах с ненужными данными, и вы можете заметить ухудшение производительности.

Чтобы создать "Горячий кеш", одним из методов было бы ленивое население кеша, и я имею в виду, что когда и когда вы получаете запросы, вы заполняете cahce; в этом случае первоначальные запросы будут медленными, но последующие будут быстрее. Другим подходом было бы загрузить данные при запуске процесса (или до того, как пользовательские запросы начнут поступать) и сохранить кеш до тех пор, пока процесс не завершится.

Ответ 4

В веб-разработке Frontend есть похожая концепция: почти все хорошие фреймворки js frontend делают WarmCaching в наши дни.

Cold Cache: приложение внешнего интерфейса впервые вызывает внутренний сервер.

Теплый кэш: после того, как веб-интерфейс впервые получает данные, он сохраняет их в локальном кэше. Поэтому в следующий раз, когда он пытается вызвать бэкэнд, он выбирает элемент из своего локального кэша.

ссылка: Кэширование данных в интерфейсе