Я запускаю трехузловой кластер glusterfs 3.10 на основе Heketi для автоматического выделения и удаления хранилища через Kubernetes. В настоящее время активно 20 томов, большинство из которых имеют минимально допустимый размер 10 ГБ, но на каждом из них сохраняется только несколько сотен МБ данных. Каждый том реплицируется на два узла (эквивалент RAID-1).
Однако процессы gluster на узлах занимают огромное количество памяти (~ 13 ГБ) на каждом узле. Создание заявленный и, глядя на результат, каждый том использует от 1 до 30 МБ памяти:
# 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
Все тома имеют настройки по умолчанию для производительность. По какой-то причине размер кеша отображается дважды - один раз с 32 МБ и один раз с 128 МБ:
# 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
Тем не менее, даже при суммировании всех кешей и значений у меня остается только 2,5 ГБ памяти на узел, которые я могу учитывать.
Перезапуск демонов не уменьшает использование памяти, и я не нашел дополнительной информации о том, как уменьшить объем памяти. Наличие 750 МБ или памяти на том просто кажется чрезмерным и очень скоро приведет к серьезным проблемам.
Есть подсказки?