После добавления preload
пакета мои приложения ускоряются, но если я копирую большой файл, файловый кэш увеличивается более чем в два раза по сравнению с размером файла.
При переносе одного образа или виртуального файла виртуальной коробки размером 3-4 ГБ на внешний диск этот огромный кэш, похоже, удаляет все предварительно загруженные приложения из памяти, что приводит к увеличению времени загрузки и общему снижению производительности.
Есть ли способ скопировать большие файлы размером в несколько гигабайт, не кэшируя их (то есть обходя файловый кеш)? Или способ внести в белый или черный список определенные папки из кэша?
источник
Для отдельных больших файлов, использование
dd
с прямым I / O в обходе кэша файлов:Если вы хотите передать один (или несколько) больших файлов размером в несколько гигабайт, это легко сделать с помощью
dd
:direct
флаги говорят ,dd
чтобы использовать прямую опцию ядра I / O (O_DIRECT
) во время чтения и записи, таким образом , полностью минуя кэш файлов.bs
параметра размера блока должно быть установлено достаточно большое значение, поскольку для минимизации количества операций с физическим диском, которыеdd
должны выполняться, поскольку операции чтения / записи больше не кэшируются, а слишком большое количество небольших прямых операций может привести к серьезному замедлению.4M
).К сожалению, для нескольких / рекурсивных копий каталогов нет доступных инструментов; обычные
cp
и т. д. не поддерживают прямой ввод / вывод./ e iflags & oflags изменен на правильный iflag & oflag
источник
zsh
«S**
оператора.zsh
нужно установить вручную из репозитория.dd
Странный синтаксис запутывает ** оператор. Вы все еще можете использовать сценарий оболочки, который обычно получает аргументы (dd.sh in.file out.file
с ** в именах файлов) и дает имена дляdd
использования$1
,$2
и т. Д., Которые не должны быть загрязнены странным синтаксисом dd.Вы можете скопировать каталог рекурсивно с
dd
помощьюfind
иmkdir
Нам нужно обойти две проблемы:
dd
не знает что делать с каталогамиdd
можно копировать только один файл за разСначала давайте определим входные и выходные каталоги:
Теперь давайте перейдем
cd
к исходному каталогу, поэтомуfind
сообщим об относительных каталогах, которыми мы можем легко управлять:Дублируйте дерево каталогов из
$SOURCE
в$TARGET
Повторяющиеся файлы
$SOURCE
для$TARGET
пропуска кэш записи (но с использованием кэш - памяти для чтения!)Обратите внимание, что это не сохранит время изменения файла, владельца и другие атрибуты.
источник