BeeGFS multiple metadata targets and performans degradation

Posted on Sun 02 February 2025 by Pavlo Khmel

I did tests with BeeGFS 7.4.5 on Rocky Linux 8.10. Results shows that increasing number of metadata services is decreasing metadata performance.

Benchmark

How fast client can unarchive openmpi archive:

curl -O https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.6.tar.bz2
time tar xaf openmpi-4.1.6.tar.bz2

NOTE: Pre-warming effect. I was repeating unarchive benchmarks 10 times to demonstrate pre-warming effect. After some time performance is decreasing again.

Benchmark script benchmark_unrchive_openmpi.sh

#!/bin/bash
TIMEFORMAT=%R
for i in {1..10}
do
   rm -rf openmpi-4.1.6
   time tar xaf openmpi-4.1.6.tar.bz2
done

Results in seconds. The first line is clean first start (without pre-warming):

Repeat # 32 metas 16 metas 8 metas 4 metas 2 metas 1 meta
1 251 123 43 18 13 10
2 138 27 11 12 11 11
3 79 13 11 11 11 11
4 49 11 12 11 11 11
5 31 11 11 11 11 11
6 22 11 11 11 11 10
7 17 12 11 11 11 10
8 16 11 11 11 11 10
9 16 11 12 11 10 10
10 14 11 12 11 10 10

How to recreate my setups and results

5 physycal servers:

- mds-1 - one disk for os, two disks for 8 metas, 1 disk for mgmtd
- mds-2 - one disk for os, two disks for 8 metas
- mds-3 - one disk for os, two disks for 8 metas
- mds-4 - one disk for os, two disks for 8 metas
- oss-1 - one disk for os, one disks for one storage target

mgmtd on mds-1

systemctl stop beegfs-mgmtd.service
umount /beegfs/mgmtd
mkfs.ext4 -m 0 /dev/sda
mount /dev/sda /beegfs/mgmtd
/opt/beegfs/sbin/beegfs-setup-mgmtd -p /beegfs/mgmtd
systemctl start beegfs-mgmtd.service

metadata targets on mds-1

systemctl stop beegfs-me\*

rm -rf /beegfs/disk1/meta1
rm -rf /beegfs/disk1/meta2
rm -rf /beegfs/disk1/meta3
rm -rf /beegfs/disk1/meta4
rm -rf /beegfs/disk2/meta1
rm -rf /beegfs/disk2/meta2
rm -rf /beegfs/disk2/meta3
rm -rf /beegfs/disk2/meta4

mkdir /beegfs/disk1/meta1
mkdir /beegfs/disk1/meta2
mkdir /beegfs/disk1/meta3
mkdir /beegfs/disk1/meta4
mkdir /beegfs/disk2/meta1
mkdir /beegfs/disk2/meta2
mkdir /beegfs/disk2/meta3
mkdir /beegfs/disk2/meta4

/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta1.conf -p /beegfs/disk1/meta1 -s 111 -S mds-1-d1m1 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta2.conf -p /beegfs/disk1/meta2 -s 112 -S mds-1-d1m2 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta3.conf -p /beegfs/disk1/meta3 -s 113 -S mds-1-d1m3 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta4.conf -p /beegfs/disk1/meta4 -s 114 -S mds-1-d1m4 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta1.conf -p /beegfs/disk2/meta1 -s 121 -S mds-1-d2m1 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta2.conf -p /beegfs/disk2/meta2 -s 122 -S mds-1-d2m2 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta3.conf -p /beegfs/disk2/meta3 -s 123 -S mds-1-d2m3 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta4.conf -p /beegfs/disk2/meta4 -s 124 -S mds-1-d2m4 -m 10.3.10.18 -C

systemctl start beegfs-meta-disk1-meta1
systemctl start beegfs-meta-disk1-meta2
systemctl start beegfs-meta-disk1-meta3
systemctl start beegfs-meta-disk1-meta4
systemctl start beegfs-meta-disk2-meta1
systemctl start beegfs-meta-disk2-meta2
systemctl start beegfs-meta-disk2-meta3
systemctl start beegfs-meta-disk2-meta4

metadata targets on mds-2

systemctl stop beegfs-me\*

rm -rf /beegfs/disk1/meta1
rm -rf /beegfs/disk1/meta2
rm -rf /beegfs/disk1/meta3
rm -rf /beegfs/disk1/meta4
rm -rf /beegfs/disk2/meta1
rm -rf /beegfs/disk2/meta2
rm -rf /beegfs/disk2/meta3
rm -rf /beegfs/disk2/meta4

mkdir /beegfs/disk1/meta1
mkdir /beegfs/disk1/meta2
mkdir /beegfs/disk1/meta3
mkdir /beegfs/disk1/meta4
mkdir /beegfs/disk2/meta1
mkdir /beegfs/disk2/meta2
mkdir /beegfs/disk2/meta3
mkdir /beegfs/disk2/meta4

/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta1.conf -p /beegfs/disk1/meta1 -s 211 -S mds-2-d1m1 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta2.conf -p /beegfs/disk1/meta2 -s 212 -S mds-2-d1m2 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta3.conf -p /beegfs/disk1/meta3 -s 213 -S mds-2-d1m3 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta4.conf -p /beegfs/disk1/meta4 -s 214 -S mds-2-d1m4 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta1.conf -p /beegfs/disk2/meta1 -s 221 -S mds-2-d2m1 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta2.conf -p /beegfs/disk2/meta2 -s 222 -S mds-2-d2m2 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta3.conf -p /beegfs/disk2/meta3 -s 223 -S mds-2-d2m3 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta4.conf -p /beegfs/disk2/meta4 -s 224 -S mds-2-d2m4 -m 10.3.10.18 -C

systemctl start beegfs-meta-disk1-meta1
systemctl start beegfs-meta-disk1-meta2
systemctl start beegfs-meta-disk1-meta3
systemctl start beegfs-meta-disk1-meta4
systemctl start beegfs-meta-disk2-meta1
systemctl start beegfs-meta-disk2-meta2
systemctl start beegfs-meta-disk2-meta3
systemctl start beegfs-meta-disk2-meta4

metadata targets on mds-3

systemctl stop beegfs-me\*

rm -rf /beegfs/disk1/meta1
rm -rf /beegfs/disk1/meta2
rm -rf /beegfs/disk1/meta3
rm -rf /beegfs/disk1/meta4
rm -rf /beegfs/disk2/meta1
rm -rf /beegfs/disk2/meta2
rm -rf /beegfs/disk2/meta3
rm -rf /beegfs/disk2/meta4

mkdir /beegfs/disk1/meta1
mkdir /beegfs/disk1/meta2
mkdir /beegfs/disk1/meta3
mkdir /beegfs/disk1/meta4
mkdir /beegfs/disk2/meta1
mkdir /beegfs/disk2/meta2
mkdir /beegfs/disk2/meta3
mkdir /beegfs/disk2/meta4

/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta1.conf -p /beegfs/disk1/meta1 -s 311 -S mds-3-d1m1 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta2.conf -p /beegfs/disk1/meta2 -s 312 -S mds-3-d1m2 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta3.conf -p /beegfs/disk1/meta3 -s 313 -S mds-3-d1m3 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta4.conf -p /beegfs/disk1/meta4 -s 314 -S mds-3-d1m4 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta1.conf -p /beegfs/disk2/meta1 -s 321 -S mds-3-d2m1 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta2.conf -p /beegfs/disk2/meta2 -s 322 -S mds-3-d2m2 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta3.conf -p /beegfs/disk2/meta3 -s 323 -S mds-3-d2m3 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta4.conf -p /beegfs/disk2/meta4 -s 324 -S mds-3-d2m4 -m 10.3.10.18 -C

systemctl start beegfs-meta-disk1-meta1
systemctl start beegfs-meta-disk1-meta2
systemctl start beegfs-meta-disk1-meta3
systemctl start beegfs-meta-disk1-meta4
systemctl start beegfs-meta-disk2-meta1
systemctl start beegfs-meta-disk2-meta2
systemctl start beegfs-meta-disk2-meta3
systemctl start beegfs-meta-disk2-meta4

metadata targets on mds-4

systemctl stop beegfs-me\*

rm -rf /beegfs/disk1/meta1
rm -rf /beegfs/disk1/meta2
rm -rf /beegfs/disk1/meta3
rm -rf /beegfs/disk1/meta4
rm -rf /beegfs/disk2/meta1
rm -rf /beegfs/disk2/meta2
rm -rf /beegfs/disk2/meta3
rm -rf /beegfs/disk2/meta4

mkdir /beegfs/disk1/meta1
mkdir /beegfs/disk1/meta2
mkdir /beegfs/disk1/meta3
mkdir /beegfs/disk1/meta4
mkdir /beegfs/disk2/meta1
mkdir /beegfs/disk2/meta2
mkdir /beegfs/disk2/meta3
mkdir /beegfs/disk2/meta4

/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta1.conf -p /beegfs/disk1/meta1 -s 411 -S mds-4-d1m1 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta2.conf -p /beegfs/disk1/meta2 -s 412 -S mds-4-d1m2 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta3.conf -p /beegfs/disk1/meta3 -s 413 -S mds-4-d1m3 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk1-meta4.conf -p /beegfs/disk1/meta4 -s 414 -S mds-4-d1m4 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta1.conf -p /beegfs/disk2/meta1 -s 421 -S mds-4-d2m1 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta2.conf -p /beegfs/disk2/meta2 -s 422 -S mds-4-d2m2 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta3.conf -p /beegfs/disk2/meta3 -s 423 -S mds-4-d2m3 -m 10.3.10.18 -C
/opt/beegfs/sbin/beegfs-setup-meta -c /etc/beegfs/beegfs-meta-disk2-meta4.conf -p /beegfs/disk2/meta4 -s 424 -S mds-4-d2m4 -m 10.3.10.18 -C

systemctl start beegfs-meta-disk1-meta1
systemctl start beegfs-meta-disk1-meta2
systemctl start beegfs-meta-disk1-meta3
systemctl start beegfs-meta-disk1-meta4
systemctl start beegfs-meta-disk2-meta1
systemctl start beegfs-meta-disk2-meta2
systemctl start beegfs-meta-disk2-meta3
systemctl start beegfs-meta-disk2-meta4

storage targets on oss-1

systemctl stop beegfs-storage2.service
umount /dev/sda
rm -rf /beegfs/storage1
mkfs.xfs -f /dev/sda
mkdir /beegfs/storage1
mount /dev/sda /beegfs/storage1/
/opt/beegfs/sbin/beegfs-setup-storage -c /etc/beegfs/beegfs-storage1.conf -p /beegfs/storage1 -s 1111 -S oss-1-d1 -i 1111 -m 10.3.10.18 -C
systemctl restart beegfs-storage1.service

Client stop start

systemctl stop beegfs-client.service
systemctl stop beegfs-helperd.service

systemctl start beegfs-helperd.service
systemctl start beegfs-client.service