Parece que zfs-fuse
atualizará os dados de compressratio
a cada 30 segundos com IO limitado ocorrendo, mas há outro disparador para a atualização, já que arquivos IO ou arquivos grandes fazem com que a atualização de dados ocorra mais cedo.
Eu coloquei algumas funções de teste em uma essência . Eles exigem um sistema de arquivos limpo (sem arquivos) que começará em 1.00x.
Se os scripts pausarem para sempre no primeiro teste, seus contadores de compactação nunca serão atualizados e você terá um problema com a sua instalação.
Executando os scripts em uma caixa wheezy do Debian:
$ uname -a
Linux zfs-fuse 3.2.0-4-686-pae #1 SMP Debian 3.2.54-2 i686 GNU/Linux
Resulta no seguinte:
$ test_compression compress
Testing [compress]
Testing size [4096]
Waited 0 seconds for [compressratio_is_one]
4096 bytes made up of 1*4096 blocks
Waited 20 seconds for [compresstario_is_not_one]
1.12x
Testing size [16384]
Waited 30 seconds for [compressratio_is_one]
16384 bytes made up of 1*16384 blocks
Waited 30 seconds for [compresstario_is_not_one]
1.53x
Testing size [1048576]
Waited 30 seconds for [compressratio_is_one]
1048576 bytes made up of 1*131072 blocks
Waited 30 seconds for [compresstario_is_not_one]
31.44x
Testing size [33161216]
Waited 30 seconds for [compressratio_is_one]
33161216 bytes made up of 255*131072 blocks
Waited 0 seconds for [compresstario_is_not_one]
202.31x
Você pode reduzir isso, normalmente pela metade, fazendo algo intensivo em segundo plano, o que provavelmente aciona a atualização do contador.
no fundo
$ while true; do touch somefile; rm somefile; done
Em seguida, teste novamente:
$ test_compression compress
Testing [compress]
Testing size [4096]
Waited 0 seconds for [compressratio_is_one]
4096 bytes made up of 1*4096 blocks
Waited 5 seconds for [compresstario_is_not_one]
1.11x
Testing size [16384]
Waited 17 seconds for [compressratio_is_one]
16384 bytes made up of 1*16384 blocks
Waited 17 seconds for [compresstario_is_not_one]
1.50x
Testing size [1048576]
Waited 16 seconds for [compressratio_is_one]
1048576 bytes made up of 1*131072 blocks
Waited 10 seconds for [compresstario_is_not_one]
29.73x
Testing size [33161216]
Waited 0 seconds for [compressratio_is_one]
33161216 bytes made up of 244*131072 blocks
Waited 0 seconds for [compresstario_is_not_one]
201.35x
De nota, no FreeBSD a atualização acontece a cada 5 segundos:
$ test_compression giggidy/compress
Testing [giggidy/compress]
Testing size [4096]
Waited 0 seconds for [compressratio_is_one]
4096 bytes made up of 1*4096 blocks
Waited 4 seconds for [compresstario_is_not_one]
1.21x
Testing size [16384]
Waited 5 seconds for [compressratio_is_one]
16384 bytes made up of 1*16384 blocks
Waited 5 seconds for [compresstario_is_not_one]
1.91x
Testing size [1048576]
Waited 5 seconds for [compressratio_is_one]
1048576 bytes made up of 1*131072 blocks
Waited 5 seconds for [compresstario_is_not_one]
39.33x
Testing size [33161216]
Waited 5 seconds for [compressratio_is_one]
33161216 bytes made up of 1*131072 blocks
Waited 4 seconds for [compresstario_is_not_one]
114.25x
Vou adicionar um exemplo baseado no Solaris quando puder entrar em uma caixa.