O código do ZFS informa várias estatísticas por meio de procfs. Para determinar o tamanho do ARC, consulte /proc/spl/kstat/zfs/arcstats
(assumindo o procfs montado em / proc, como é habitual), especificamente os valores para c
, c_max
e size
. (Veja também esta postagem no fórum da comunidade Oracle . Alternativa Cópia do arquivo da Internet caso o site da Oracle fique indisponível.
-
c
é o tamanho do alvo do ARC em bytes -
c_max
é o tamanho máximo do ARC em bytes -
size
é o tamanho atual do ARC em bytes
O tamanho máximo do ARC pode ser ajustado passando um parâmetro zfs_arc_max=N
para o módulo zfs
(através de modprobe), onde N
é o tamanho máximo do ARC em bytes, ou em tempo real, escrevendo o novo tamanho máximo em bytes para /sys/module/zfs/parameters/zfs_arc_max
.
Devido a como o ZFS no Linux é implementado, a memória ARC se comporta como a memória cache (por exemplo, é despejado se o sistema estiver sob pressão de memória), mas é agregado pelo kernel como alocações de memória comuns. Isso pode causar confusão, já que o sistema parece ter muito menos memória livre do que seria esperado, considerando a carga de trabalho atual do sistema, mas é normal.
Para obter o tamanho do ARC em megabytes, você pode usar algo como awk '/^size/ { print $1 " " $3 / 1048576 }' < /proc/spl/kstat/zfs/arcstats
. (1.048.576 é o número de bytes para o megabyte.)
Por exemplo, meu sistema (que usa quase exclusivamente o ZFS) pode relatar
$ free -m
total used free shared buffers cached
Mem: 32194 17948 14245 0 158 982
-/+ buffers/cache: 16808 15386
Swap: 49152 0 49152
$ awk '/^size/ { print $1 " " $3 / 1048576 }' < /proc/spl/kstat/zfs/arcstats
size 8138.73
$
que significa que o uso de memória real por processos residentes no momento é de aproximadamente 8.669 MB (16.808 MB reduzido em 8.139 MB).