Otimizando o bcache

2

Tenho 3 HDD e 1 SSD, montei com sucesso todas as unidades para bcache.

pavs@VAS:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       132G   35G   90G  28% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            3.9G  8.0K  3.9G   1% /dev
tmpfs           786M  2.3M  784M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            3.9G  152K  3.9G   1% /run/shm
none            100M   52K  100M   1% /run/user
/dev/bcache1    2.7T  2.1T  508G  81% /var/www/html/directlink/FTP1
/dev/bcache2    1.8T  614G  1.2T  36% /var/www/html/directlink/FTP2
/dev/bcache0    1.8T  188G  1.6T  11% /var/www/html/directlink/FTP3
/dev/sdf1       367G  284G   65G  82% /media/pavs/e93284df-e52e-4a5d-a9e1-323a388b332f

As unidades que estão sendo armazenadas em cache não são unidades do sistema operacional. Três discos rígidos com muitos arquivos grandes, em média, o tamanho dos arquivos varia de 600 MB a 2 GB, sendo o menor tamanho de arquivo de 500 MB e o maior de 10 GB.

Os arquivos estão sendo baixados constantemente através do servidor web do apache. Mas eu estou vendo apenas marginalmente ou não há aceleração no IO, mesmo em arquivos acessados com frequência. Não sei que tipo de fórmula de cache o bcache usa ou se pode ser ajustado para o desempenho máximo do cache. Idealmente, gostaria de ver os arquivos acessados com freqüência serem armazenados em cache por um dia, até que não haja solicitação para esse arquivo. Não sei se esse nível de ajustes de cache granular é possível. Preocupo-me apenas com o desempenho de leitura e gostaria de ver a utilização máxima da unidade SSD.

EDIT: De acordo com esta . O bcache "desencoraja" o cache sequencial, o que, se eu entendi corretamente, é um problema para mim, pois a maioria dos meus arquivos são grandes arquivos sequenciais. O corte sequencial padrão era 4.0M, pode ter impedido que os arquivos fossem armazenados em cache (não sei), então desabilitei o cutoff fazendo isso para cada unidade de backup:

echo 0 > /sys/block/bcache0/bcache/sequential_cutoff

Agora espere e veja se realmente melhora o desempenho.

De acordo com as estatísticas do bcache, todas as três unidades estão sendo armazenadas em cache

bcache0

pavs@VAS:~$ tail /sys/block/bcache0/bcache/stats_total/*
==> /sys/block/bcache0/bcache/stats_total/bypassed <== 
461G

==> /sys/block/bcache0/bcache/stats_total/cache_bypass_hits <== 
9565207

==> /sys/block/bcache0/bcache/stats_total/cache_bypass_misses <== 
0

==> /sys/block/bcache0/bcache/stats_total/cache_hit_ratio <== 
63

==> /sys/block/bcache0/bcache/stats_total/cache_hits <== 
3003399

==> /sys/block/bcache0/bcache/stats_total/cache_miss_collisions <== 
659

==> /sys/block/bcache0/bcache/stats_total/cache_misses <== 
1698297

==> /sys/block/bcache0/bcache/stats_total/cache_readaheads <== 
0

bcache1

pavs@VAS:~$ tail /sys/block/bcache1/bcache/stats_total/*
==> /sys/block/bcache1/bcache/stats_total/bypassed <==
396G

==> /sys/block/bcache1/bcache/stats_total/cache_bypass_hits <==
9466833

==> /sys/block/bcache1/bcache/stats_total/cache_bypass_misses <==
0

==> /sys/block/bcache1/bcache/stats_total/cache_hit_ratio <==
24

==> /sys/block/bcache1/bcache/stats_total/cache_hits <==
749032

==> /sys/block/bcache1/bcache/stats_total/cache_miss_collisions <==
624

==> /sys/block/bcache1/bcache/stats_total/cache_misses <==
2358913

==> /sys/block/bcache1/bcache/stats_total/cache_readaheads <==
0

bcache2

pavs@VAS:~$ tail /sys/block/bcache2/bcache/stats_total/*
==> /sys/block/bcache2/bcache/stats_total/bypassed <==
480G

==> /sys/block/bcache2/bcache/stats_total/cache_bypass_hits <==
9202709

==> /sys/block/bcache2/bcache/stats_total/cache_bypass_misses <==
0

==> /sys/block/bcache2/bcache/stats_total/cache_hit_ratio <==
58

==> /sys/block/bcache2/bcache/stats_total/cache_hits <==
4821439

==> /sys/block/bcache2/bcache/stats_total/cache_miss_collisions <==
1098

==> /sys/block/bcache2/bcache/stats_total/cache_misses <==
3392411

==> /sys/block/bcache2/bcache/stats_total/cache_readaheads <==
0
    
por bran 17.09.2014 / 21:59

1 resposta

2

Eu tenho o mesmo problema. Meu disco IO ainda ignorar por bcache. Depois de definir congested_read_threshold_us e congested_write_threshold_us após a documentação do bcache. Meu problema está resolvido.

- Traffic's still going to the spindle/still getting cache misses

   In the real world, SSDs don't always keep up with disks - particularly with
   slower SSDs, many disks being cached by one SSD, or mostly sequential IO. So
   you want to avoid being bottlenecked by the SSD and having it slow everything
   down.

   To avoid that bcache tracks latency to the cache device, and gradually
   throttles traffic if the latency exceeds a threshold (it does this by
   cranking down the sequential bypass).

   You can disable this if you need to by setting the thresholds to 0:

   # echo 0 > /sys/fs/bcache/<cache set>/congested_read_threshold_us
   # echo 0 > /sys/fs/bcache/<cache set>/congested_write_threshold_us

   The default is 2000 us (2 milliseconds) for reads, and 20000 for writes.

Todos os discos IO são enviados para o meu SSD (sde) agora.

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.00     0.00    0.00    0.30     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdd               0.00     0.00    0.10    0.30     0.80     0.00     4.00     0.00    3.00   12.00    0.00   3.00   0.12
sdc               0.00     0.00    2.20    0.30    26.00     0.00    20.80     0.00    1.76    2.00    0.00   1.76   0.44
sda               0.00     0.00    0.20    0.20     0.80     0.00     4.00     0.01    8.00   16.00    0.00  13.00   0.52
sde               0.00   293.20   81.70  232.70  1129.20 58220.00   377.54     6.62   21.05   27.69   18.71   3.18 100.00
md1               0.00     0.00    2.50    0.30    27.60     0.00    19.71     0.00    0.00    0.00    0.00   0.00   0.00
md0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
bcache0           0.00     0.00   83.00  402.40  1156.80 28994.80   124.23    15.36   31.70   27.02   32.67   2.06  99.92
    
por 28.03.2016 / 09:48

Tags