Por que o L2ARC não está dando mais aceleração na travessia do diretório?

4

O L2Arc é geralmente configurado para armazenar em cache leituras aleatórias de pratos giratórios em um SSD. Eu configurei essa configuração na esperança de acelerar a travessia do diretório.

Esta é a configuração:

# zpool list -v
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
geek1  2.72T  1.18T  1.54T         -    53%    43%  4.64x  ONLINE  -
  sdc  1.36T   606G   786G         -    54%    43%
  sdd  1.36T   606G   786G         -    53%    43%
log      -      -      -         -      -      -
  zil  3.97G      0  3.97G         -     0%     0%
cache      -      -      -         -      -      -
  l2arc  32.0G  4.24G  27.8G         -     0%    13%

A máquina tem 20 GB de memória: bastante para o Arc.

Espero que uma chamada find no sistema de arquivos seja muito acelerada. É acelerado por um fator de 5, mas em termos absolutos ainda é lento. Demora 3,4 horas para listar arquivos de 46 M.

# while true; do time find /geek1/ -type f|wc -l; done
46774149

real    1103m18.661s
user    2m15.143s
sys     5m52.096s
46774149

real    243m0.289s
user    2m3.063s
sys     5m7.107s
46774149

real    205m23.922s
user    2m7.566s
sys     6m32.638s

Como a travessia de diretórios pode ser mais eficiente?

zpool get all impressões:

NAME   PROPERTY                    VALUE                       SOURCE
geek1  size                        2.72T                       -
geek1  capacity                    43%                         -
geek1  altroot                     -                           default
geek1  health                      ONLINE                      -
geek1  guid                                                    default
geek1  version                     -                           default
geek1  bootfs                      -                           default
geek1  delegation                  on                          default
geek1  autoreplace                 off                         default
geek1  cachefile                   -                           default
geek1  failmode                    wait                        default
geek1  listsnapshots               off                         default
geek1  autoexpand                  off                         default
geek1  dedupditto                  0                           default
geek1  dedupratio                  4.64x                       -
geek1  free                        1.54T                       -
geek1  allocated                   1.18T                       -
geek1  readonly                    off                         -
geek1  ashift                      0                           default
geek1  comment                     -                           default
geek1  expandsize                  -                           -
geek1  freeing                     0                           default
geek1  fragmentation               53%                         -
geek1  leaked                      0                           default
geek1  feature@async_destroy       enabled                     local
geek1  feature@empty_bpobj         active                      local
geek1  feature@lz4_compress        active                      local
geek1  feature@spacemap_histogram  active                      local
geek1  feature@enabled_txg         active                      local
geek1  feature@hole_birth          active                      local
geek1  feature@extensible_dataset  enabled                     local
geek1  feature@embedded_data       active                      local
geek1  feature@bookmarks           enabled                     local
geek1  feature@filesystem_limits   enabled                     local
geek1  feature@large_blocks        enabled                     local
    
por Jos van den Oever 27.05.2017 / 18:13

1 resposta

1

Se você estiver usando o ZFS no Linux, a lentidão provavelmente dependerá da configuração padrão xattr ( xattr=on ), que armazenou atributos estendidos dentro de diretórios / arquivos ocultos.

Tente definir a alteração de xattr para sa , emitindo algo como zfs set xattr=sa <pool/fs> . No entanto, isso afeta somente os arquivos recém-criados; então você precisa remover / recarregar todos os arquivos para obter uma velocidade significativa.

Em outras palavras, experimente em pequena escala antes de recarregar todos os seus arquivos.

    
por 07.06.2017 / 11:53