Если я называю CAT / DEV / NULL дважды подряд в файле, будет ли второй звонок NO-OP?

StackOverflow https://stackoverflow.com/questions/6088169

  •  09-09-2020
  •  | 
  •  

Вопрос

Я хочу использовать cat filepath > /dev/null в качестве дешевого механизма кэширования памяти. О чем мне интересно: если я называю это во второй раз, и файл уже находится в кэше диска, это достаточно умно, чтобы ничего не делать?

Обновление: я проверил это на томе CIFS, используя fadvise posix_fadv_willneed Чтобы кэшировать файл локально (используя Linux-Ftools в командной строке).Получается что Объем должен быть установлен в режиме чтения-записи для этого для этого.Только в чтении Режим, Fadvise, кажется, игнорируется.Это должно иметь что делать с самбой Механизм OPLOLAL.

Это было полезно?

Решение

Лучше posix_fadvise (..., posix_fadv_willneed), чем cat файл to / dev / null - это требует меньше фактического io, и не нужно содержимое файла, которое нужно прочитать в RAM пользователей, уничтожая CPU CACHES,

Более того, если соответствующая часть файла уже находится в кэше, POSIX_FADVISE будет работать намного меньше работы, чем файл CAT> / DEV / NULL

Если вы чувствуете, что вам действительно нужны страницы, чтобы быть в ядре только сейчас , затем mmaap соответствующий раздел файла и mlock (разблокировать его потом; он может немедленно отбрасывать, если давление памятикрепко).Которые нуждаются в корневых привилегиях.

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

Другие советы

Нет, и это не может.

Определение, если программа будет делать ничего, обычно, это обычно сложнее, чем просто запустить его.

Почему нужно в любом случае, чтобы управлять кэшированием памяти?Если абсолютно необходимо, рассмотрите возможность использования файловой системы TMPFS или с использованием CompCache (устройство сжатого блока RAM)

Это не будет делать ничего , так как другие ответы сказали.Но если то, что вы действительно имели значение:

Если я назову это во второй раз, и Файл уже находится в дисковом кэше, это Ос Smart достаточно, чтобы <Сильно> не читал От диска во второй раз?

... Тогда ответ да 1 .Вот как работает кеш диска, ведь.


1.До тех пор, пока именно файловая система использует кэш страницы, в любом случае.

It will be fast as hell, but it won't be a no-op (if it were, there would be legit reasons for syscalls to do unexpected things instead of their promised functions...). However, depending on the filesystem driver used, and the kernel options, you could be running close to the memory bandwidth.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top