dm-cache parece não funcionar - sem diferença de desempenho

0

Estou criando um dispositivo de cache de dm usando meu script: link

Efetivamente, ele está executando esses 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

no volume de 60gb SSD LVM para armazenamento em cache de 1,5 TB USB 2.0 HDD. Estou montando o dispositivo dm em cache com:

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

No entanto, parece que não funciona de todo. Eu notei que o HDD externo roda TODA vez que eu estou acessando qualquer conteúdo no dispositivo em cache e toda vez que algum bot está acessando o meu site, mesmo ele deve ser armazenado em cache, eu acho e é muito chato e, finalmente, leva a erros de E / S depois cerca de uma semana porque o HDD externo não consegue lidar com contínuos "spin-ups" e "spin-downs".

Eu decidi realmente executar alguns benchmarks e copiar o arquivo de 8GB para / dev / null com o comando dd atinge apenas 40MB / s. É a mesma velocidade que o disco rígido não armazenado em cache. Sempre. Ambos em execução seca com cache apagado, bem como terceira ou quarta leitura que eu acho que deve ser armazenado em cache. O SSD usado para cache atinge 92MB / s na partição raiz. É claro que depois de cada banco eu estava limpando o cache de Linux do Linux para eliminar o impacto no desempenho do cache de RAM.

Na verdade, estou usando este script em 2 PCs e nenhum deles parece funcionar. Eu sei que escrever não vai acelerar a escrita, mas estou mais preocupado em ler de qualquer maneira.

EDITAR:

Depois de examinar dmsetup status logs, percebi que estou obtendo taxas de acertos de cache muito baixas. Pode ser culpa do btrfs?

    
por Lapsio 27.01.2016 / 20:20

2 respostas

0

O cache de dm leva algum tempo para promover blocos no dispositivo de cache. Ao contrário do cache ram linux, a política dmcache padrão requer pelo menos algumas leituras de certos dados para promovê-lo ao SSD, geralmente muitas leituras, mais de 10. Emparelhado com uma quantidade relativamente grande de memória RAM na máquina, ele pode levar muito de tempo para "treinar" dmcache. Se o tamanho do cache for semelhante à quantidade de memória sobressalente e os dados utilizados com freqüência ocuparem muito espaço, talvez não consigam funcionar de maneira decente.

    
por 28.01.2016 / 03:44
0

Use o lvmcache (7) para a configuração, você será muito mais feliz. Também a página do manual é muito útil para se levantar e correr. Observe as políticas de write-back / writthrough e a política smq caching, que é padrão apenas nas versões mais recentes (pós-kernel 4.2). Além disso, esse é o padrão no RHEL 7.2+ ou mais.

Você pode assistir minha palestra: link ou leia os slides: link

    
por 29.10.2017 / 21:54