dm-cache no parece funcionar, no hay diferencia de rendimiento

dm-cache no parece funcionar, no hay diferencia de rendimiento

Estoy creando un dispositivo dm-cache usando mi script: http://pastebin.com/KTSzL6EA

Efectivamente está ejecutando esos comandos:

dmsetup create suse-cache-metadata --table 0 15872 linear /dev/mapper/suse-cache 0
dmsetup create suse-cache-blocks --table 0 125813248 linear /dev/mapper/suse-cache 15872
dmsetup create storagecached --table 0 2930266112 cache /dev/mapper/suse-cache-metadata /dev/mapper/suse-cache-blocks /dev/mapper/storage 512 1 writethrough default 0
dmsetup resume storagecached

en volumen SSD LVM de 60 GB para almacenamiento en caché de disco duro USB 2.0 de 1,5 TB. Estoy montando un dispositivo dm en caché con:

mount -t btrfs -o noatime,autodefrag,compress=lzo,space_cache /dev/mapper/storagecached /mnt/storage

Sin embargo, no parece funcionar en absoluto. He notado que el disco duro externo gira CADA vez que accedo a cualquier contenido en un dispositivo almacenado en caché y cada vez que algún robot accede a mi sitio web, incluso debería estar almacenado en caché, supongo, y es bastante molesto y finalmente genera errores de E/S después aproximadamente una semana porque el disco duro externo no puede soportar giros continuos.

Decidí realizar algunas pruebas comparativas y copiar un archivo de 8 GB a /dev/null con ddel comando logra solo 40 MB/s. Es la misma velocidad que el disco duro sin caché. Siempre. Tanto en el ensayo con caché borrado, como en la tercera o cuarta lectura, que creo que debería almacenarse en caché. El SSD utilizado para el caché alcanza 92 MB/s en la partición raíz. Por supuesto, después de cada banco, estaba limpiando el caché de RAM de Linux para eliminar el impacto en el rendimiento del almacenamiento en caché de RAM.

De hecho, estoy usando este script en 2 PC y ninguna de ellas parece funcionar. Sé que la escritura directa no acelerará la escritura, pero de todos modos estoy más preocupado por la lectura.

EDITAR:

Después de examinar dmsetup statuslos registros, noté que obtengo índices de aciertos de caché terriblemente bajos. ¿Puede ser culpa de btrfs?

Respuesta1

dm cache tarda algún tiempo en promover bloques al dispositivo de caché. A diferencia del caché de RAM de Linux, la política predeterminada de dmcache requiere al menos algunas lecturas de ciertos datos para poder promocionarlos a SSD, generalmente muchas lecturas, más de 10. Combinado con una cantidad relativamente grande de RAM de repuesto en la máquina, puede requerir mucho de tiempo para "entrenar" dmcache. Si el tamaño de la caché es similar a la cantidad de memoria RAM disponible y los datos utilizados con frecuencia ocupan mucho espacio, es posible que no funcione decentemente.

Respuesta2

Utilice lvmcache(7) para la configuración, será mucho más feliz. Además, la página de manual es muy útil para comenzar a utilizarla. Tenga en cuenta las políticas de escritura diferida/escritura directa y la política de almacenamiento en caché de smq, que está activada de forma predeterminada solo en las versiones más recientes (posteriores al kernel 4.2). Además, esto es predeterminado en RHEL 7.2+ más o menos.

Puedes ver mi charla:https://www.youtube.com/watch?v=6W_xK5Ks-Lw o lea las diapositivas:https://www.linuxdays.cz/2017/video/Adam_Kalisz-SSD_cache_testing.pdf

información relacionada