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



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

Я также посещаю эту ссылку, но мне нужно что-то еще.

128   3  

3 ответов:

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

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

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

Чтобы сделать этот быстрый поиск, вам нужно, чтобы ваш кэш содержал значения. Давайте рассмотрим пример.

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

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

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

(inode number or filename) : (starting disk block)
Но проблема в том, что на старте ваш кэш пуст - такой кэш называется холодный кэш. Чтобы воспользоваться преимуществами вашего кэша, вам нужно заполнить его некоторые величины. Как это происходит? Когда вы ищете какой-то файл, вы смотрите в своем кэше индексов. Если вы не нашли inode в кэше (cache miss), вы говорите "хорошо" и выполняете полный цикл чтения с чтением таблицы inode, разбором ее и чтением самого файла. Но после разбора части вы сохраняете номер индекса и разбираете стартовый дисковый блок в вашем кэше. И это продолжается и продолжается - вы пытаетесь прочитать другой файл, вы смотрите в кэше, вы получаете промах кэша (ваш кэш холодный), Вы читаете с диска, вы добавляете строку в кэш.

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

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

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

Введите описание изображения здесь

Справочная информация:

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.

Таким образом, горячая схрона желательно, холодной кэши не.

Очень хороший ответ @avd.

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

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

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

    Ничего не найдено.

Добавить ответ:
Отменить.