Depois de adicionar o preload
pacote, meus aplicativos parecem acelerar, mas se eu copiar um arquivo grande, o cache do arquivo aumenta mais que o dobro do tamanho do arquivo.
Ao transferir um único arquivo de imagem ou vídeo de caixa virtual de 3-4 GB para uma unidade externa, esse enorme cache parece remover todos os aplicativos pré-carregados da memória, levando a um aumento do tempo de carregamento e a quedas gerais de desempenho.
Existe uma maneira de copiar arquivos grandes com vários gigabytes sem armazená-los em cache (ou seja, ignorando o cache de arquivos)? Ou uma maneira de impedir que pastas específicas da lista de permissões ou da lista negra sejam armazenadas em cache?
fonte
Para arquivos grandes únicos, use
dd
com E / S direta para ignorar o cache de arquivos:Se você deseja transferir um (ou alguns) arquivos grandes de vários gigabytes, é fácil fazer isso com
dd
:direct
sinalizadores indicamdd
para usar a opção de E / S direta do kernel (O_DIRECT
) durante a leitura e gravação, ignorando completamente o cache do arquivo.bs
opção de tamanho do bloco deve ser configurada com um valor razoavelmente grande, pois para minimizar o número de operações físicas do discodd
, uma vez que as leituras / gravações não são mais armazenadas em cache e muitas operações diretas pequenas podem resultar em uma desaceleração séria.4M
).Para várias cópias de diretório / recursivas , infelizmente, não há ferramentas facilmente disponíveis; o de sempre
cp
, etc , não suporta E / S direta./ e iflags & oflags alterado para o iflag e oflag correto
fonte
zsh
o**
operador.zsh
precisa ser instalado manualmente a partir dos repositórios.dd
A sintaxe esquisita suja o operador **. Você ainda pode usar um shell script que tem argumentos normalmente (dd.sh in.file out.file
com ** em nomes de arquivos) e deu os nomes de arquivo paradd
usar$1
,$2
etc, que não deve ser derrubado pela sintaxe estranha de dd.Você pode copiar um diretório recursivamente
dd
usandofind
emkdir
Precisamos solucionar dois problemas:
dd
não sabe o que fazer com diretóriosdd
só pode copiar um arquivo de cada vezPrimeiro vamos definir os diretórios de entrada e saída:
Agora, vamos
cd
para o diretório de origem, parafind
informar os diretórios relativos que podemos manipular facilmente:Duplique a árvore de diretórios de
$SOURCE
para$TARGET
Duplicar arquivos de
$SOURCE
para$TARGET
omitir cache de gravação (mas utilizando cache de leitura!)Observe que isso não preservará os tempos de modificação do arquivo, a propriedade e outros atributos.
fonte