Eu executo um cluster 3.10 glusterfs 3.10 baseado no Heketi para provisionar e desprovisionar automaticamente o armazenamento via Kubernetes. Atualmente, existem 20 volumes ativos - a maioria com o tamanho mínimo permitido de 10gb, mas cada um com apenas algumas centenas de mb de dados persistiu. Cada volume é replicado em dois nós (equivalente a um RAID-1).
No entanto, os processos gluster nos nós ocupam grandes quantidades de memória (~ 13gb) em cada nó. Criando um ucedump e olhando para o resultado, os volumes usam cada um entre 1 e 30mb de memória :
# for i in $(gluster volume list); do gluster volume statedump $i nfs; done
# grep mallinfo_uordblks -hn *.dump.*
11:mallinfo_uordblks=1959056
11:mallinfo_uordblks=20888896
11:mallinfo_uordblks=2793760
11:mallinfo_uordblks=23316944
11:mallinfo_uordblks=1917536
11:mallinfo_uordblks=29287872
11:mallinfo_uordblks=14807280
11:mallinfo_uordblks=2170592
11:mallinfo_uordblks=2077088
11:mallinfo_uordblks=15463760
11:mallinfo_uordblks=2030032
11:mallinfo_uordblks=2079856
11:mallinfo_uordblks=2079920
11:mallinfo_uordblks=2167808
11:mallinfo_uordblks=2396160
11:mallinfo_uordblks=34000240
11:mallinfo_uordblks=2649920
11:mallinfo_uordblks=1683776
11:mallinfo_uordblks=6316944
Todos os volumes têm as configurações padrão para desempenho . Por alguma razão, o tamanho do cache é mostrado duas vezes - uma vez com 32mb e outra com 128mb:
# gluster volume get <volumeId> all | grep performance | sort
performance.cache-capability-xattrs true
performance.cache-ima-xattrs true
performance.cache-invalidation false
performance.cache-max-file-size 0
performance.cache-min-file-size 0
performance.cache-priority
performance.cache-refresh-timeout 1
performance.cache-samba-metadata false
performance.cache-size 128MB
performance.cache-size 32MB
performance.cache-swift-metadata true
performance.client-io-threads off
performance.enable-least-priority on
performance.flush-behind on
performance.force-readdirp true
performance.high-prio-threads 16
performance.io-cache on
performance.io-thread-count 16
performance.lazy-open yes
performance.least-prio-threads 1
performance.low-prio-threads 16
performance.md-cache-timeout 1
performance.nfs.flush-behind on
performance.nfs.io-cache off
performance.nfs.io-threads off
performance.nfs.quick-read off
performance.nfs.read-ahead off
performance.nfs.stat-prefetch off
performance.nfs.strict-o-direct off
performance.nfs.strict-write-ordering off
performance.nfs.write-behind on
performance.nfs.write-behind-window-size1MB
performance.normal-prio-threads 16
performance.open-behind on
performance.parallel-readdir off
performance.quick-read on
performance.rda-cache-limit 10MB
performance.rda-high-wmark 128KB
performance.rda-low-wmark 4096
performance.rda-request-size 131072
performance.read-after-open no
performance.read-ahead on
performance.read-ahead-page-count 4
performance.readdir-ahead on
performance.resync-failed-syncs-after-fsyncoff
performance.stat-prefetch on
performance.strict-o-direct off
performance.strict-write-ordering off
performance.write-behind on
performance.write-behind-window-size 1MB
Ainda assim, mesmo ao adicionar todos os caches e valores, ainda estou com apenas 2,5 GB de memória por nó que eu posso explicar.
Reiniciar os daemons não reduz o uso de memória e não encontrei mais informações sobre como reduzir a memória. Tendo 750mb ou memória por volume simplesmente parece excessivo e levaria a sérios problemas muito em breve.
Alguma dica?