Después de agregar el preload
paquete, mis aplicaciones parecen acelerarse, pero si copio un archivo grande, el caché del archivo aumenta en más del doble del tamaño del archivo.
Al transferir una sola imagen de virtual box de 3-4 GB o un archivo de video a una unidad externa, este enorme caché parece eliminar todas las aplicaciones precargadas de la memoria, lo que aumenta los tiempos de carga y las caídas de rendimiento en general.
¿Hay alguna manera de copiar archivos grandes de varios gigabytes sin almacenarlos en caché (es decir, sin pasar por el caché de archivos)? ¿O una forma de incluir en la lista blanca o en la lista negra las carpetas específicas de la caché?
fuente
Para archivos grandes individuales, use
dd
con E / S directa para omitir el caché de archivos:Si desea transferir uno (o algunos) archivos grandes de varios gigabytes, es fácil hacerlo con
dd
:direct
banderas le indicandd
que use la opción de E / S directa del núcleo (O_DIRECT
) mientras lee y escribe, evitando por completo el caché del archivo.bs
opción de tamaño de bloque debe establecerse en un valor razonablemente grande ya que para minimizar el número de operaciones físicas de discodd
deben realizarse, ya que las lecturas / escrituras ya no se almacenan en caché y demasiadas operaciones directas pequeñas pueden provocar una desaceleración grave.4M
).Para copias de directorios múltiples / recursivas , desafortunadamente, no hay herramientas fácilmente disponibles; lo habitual
cp
, etc. no admiten E / S directas./ e iflags y oflags cambiaron al iflag y oflag correctos
fuente
zsh
el**
operador de.zsh
necesita ser instalado manualmente desde los repositorios.dd
La extraña sintaxis ensucia al oprtador **. Aún se podía utilizar un script de shell que tiene argumentos normalmente (dd.sh in.file out.file
con ** en los nombres de archivo) y dio los nombres de archivo add
utilizar$1
,$2
etc, que no debe ser una falta de sintaxis extraña de dd.Se puede copiar un directorio de forma recursiva con
dd
el usofind
ymkdir
Necesitamos solucionar dos problemas:
dd
no sabe qué hacer con los directoriosdd
solo puede copiar un archivo a la vezPrimero definamos los directorios de entrada y salida:
Ahora vamos
cd
al directorio de origen parafind
informar directorios relativos que podemos manipular fácilmente:Duplicar el árbol de directorios de
$SOURCE
a$TARGET
Los archivos duplicados de
$SOURCE
que$TARGET
la omisión de caché de escritura (pero utilizando caché de lectura!)Tenga en cuenta que esto no preservará los tiempos de modificación del archivo, la propiedad y otros atributos.
fuente