Я хочу задать вопрос о баффе/кэше памяти
Допустим, у нас есть машина Linux с диском и некоторое приложение, которое записывает данные на диск /var/data.
Насколько я понимаю, когда приложение записывает данные на диск, то эти данные также сохраняются в кэше памяти.
в течение некоторого времени, и по истечении X времени данные приложения будут удалены из кэш-памяти
можно ли принудительно сохранить определенные данные в кэш-памяти, а не на диске?
причина моего вопроса в том, что нам нужна быстрая запись/чтение, а диски в этом отношении очень медленные.
решение1
сохранено в кэш-памяти
На самом деле такого нет. Начинай с этогобафф/кэш:
]# free -g
total used free shared buff/cache available
Mem: 7 0 3 0 3 6
Swap: 0 0 0
Это дает объем оперативной памяти, которая в данный момент используется как буфер или кэш. Ядро делает это именно потому, что диски медленные, и часто (как показано) оперативной памяти достаточно.
Если вы хотите зарезервировать часть оперативной памяти для определенных файлов, вы можете поместить их на RAM-диск ( mount -t tmpfs ...
). Но тогда вам придется не забыть скопировать их обратно на диск.
решение2
Я думаю, что вы можете неправильно понять, как работает иерархия памяти. Иерархия идет от самого близкого к ЦП/самого быстрого к самому медленному:
Регистр ЦП > Кэш-память > ОЗУ/основная память > Диск
Кэш-память находится между ЦП и основной памятью и к ней можно получить доступ быстрее, чем к основной памяти. Обычно фрагменты близлежащих данных (т. е. копии блоков диапазонов адресов) копируются в кэш при доступе к ячейке памяти. Затем, при следующем доступе к ячейке памяти, кэш сначала проверяется, чтобы увидеть, есть ли уже там данные, и можно сэкономить время, не обращаясь к основной памяти.
Итак, я думаю, что ваш вопрос не совсем имеет смысл. Обычно между основной памятью и диском нет промежуточного хранилища или кэша. Данные, которые в данный момент используются, хранятся в оперативной памяти, и это наиболее эффективный способ хранения и доступа к ним. Если вы хотите сохранить их на потом, после выключения машины, вы копируете их на диск (потому что это ваш единственный вариант). Если вы хотите получить доступ к данным сейчас и быстро, вы не хотите прикасаться к диску, если только это не необходимо.
Я не знаю никаких средств, позволяющих легко переопределить управление кэш-памятью и сохранять что-либо в кэше, но явно не в ОЗУ. Обычно существуют очень хорошие и эффективные системы, которые уже используются для управления кэшированием памяти.
Кроме того, я не верю, что данные удаляются из кэш-памяти после X-го количества времени. Обычно они вытесняются более свежими данными, к которым процессор хочет получить доступ.