Open firsttimegithubuser opened 1 year ago
Thank you for your contributions. Noticed that this issue is not having any activity in last ~6 months! We are marking this issue as stale because it has not had recent activity. It will be closed in 2 weeks if no one responds with a comment here.
Feeling bad for @firsttimegithubuser...
@firsttimegithubuser reason you are seeing very poor performance is due to latency between servers. You will not be able to get better performance no matter what u do. In replicaset of 3, your write io operation is as fast as the slowest server and if you are flushing let's say 1kb of data, your rtt is 100ms, so you will be able to write 10x100ms = 1s so 10x1kb = 10kb/s. Redesign your setup, cause you are doing this fundamentally wrong.
Reason u see better performance with just two nodes, is cause it only needs to wait confirmation from two nodes, not three anymore and that results in slight better performance... But still, latency is way too high for network attached storage. This is not how its suppose to be used.
I'm having the same problem. I had to remove the disk from a customer's VM that was on mountpoint of Gluster storage and place it directly on the xfs disk. Apparently I'm suffering from latency on my worst replica 3 server (a SFF PC), a single gigabit network card. Recalculating...
@firsttimegithubuser reason you are seeing very poor performance is due to latency between servers. You will not be able to get better performance no matter what u do. In replicaset of 3, your write io operation is as fast as the slowest server and if you are flushing let's say 1kb of data, your rtt is 100ms, so you will be able to write 10x100ms = 1s so 10x1kb = 10kb/s. Redesign your setup, cause you are doing this fundamentally wrong.
You may consider enabling compression, btw. It might help a bit.
After removing the worst server, an SSF PC, I realized that my problem was with server2's HDD. I maintained a replica 2 volume using two PowerEdge T130 and replaced the HDD with an Intel SSD. The Gluster Volume, now composed of 2 x SSD Bricks, now has a recording rate above 35MBps.
Description of problem: I'm unsure what is causing such slow write speeds. Slower speeds than most posts I've seen from the mailing list and other online resources. I'm using rsync to transfer 98 files for a total of 7.4MB in size from ServerB OS drive to itself using either glusterfs mount or nfs-ganesha.
Nothing seems to affect the transfer speeds regardless of glusterfs volume settings, fuse mount options, regardless of how many threads, if I use direct-io mode or not, regardless if I use nfs-ganesha or glusterfs/fuse mount (nfs-ganesha actually adds a minute to transfer times), even after changing some kernel/sysctl options, reboots, upgrades, under almost every circumstance the transfer speeds are about the same, or slower.
I have a new 3-node replica cluster. Each node is newly provisioned with 5 disks; 1 OS drive, 4 drives in RAID-10 , to store glusterfs volume data.
Temporarily, ServerA has 4x HDD drives in RAID-10, but we have tested removing the node from the replica group and just tested with 2 servers with 4xSSD drives in RAID-10 with little improvement in transfer speed. ServerA uses RAID card LSI MegaRAID SAS-3 3108 ServerB and ServerC use LSI MegaRAID SAS 9361-8i SuperMicro boards for all nodes. CPU for all nodes: 1x Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
RAID-10 drives are created using LVM and use these /etc/fstab entries
I'm using ServerB to mount ServerB's own volume. /etc/fstab for gluster mount
I tried testing from a non-glusterfs server but speeds didn't improve much that I could see.
Each node is in their own geographically-separate data center. Each data center is connected by two network connections, one public IP, one private IP. We're using a VLAN over WAN for the private IP network. Firewall is setup to allow these three nodes to freely connect with each other over private IP (for now).
Sometimes the network between them may become severed for an undetermined amount of time but we're usually aware of it when it happens. There were no reports of network outages with these nodes or any of our other servers in the same data centers at the time of testing.
Each nodes' /etc/hosts file is updated with the hostname/internal-IP of each node.
I've tried using Ubuntu 20.04 focal glusterfs package 7.2-2build1, gluster.org repo version 7.x (on accident) and version 10.3 from gluster.org repo. With Ubuntu-focal and Gluster 7.9, some settings caused glusterfsd process on every node to spike 100%. Sometimes the glustershd process would suddenly use 100% CPU. I assume because it was trying to heal a stalled transfer. I eventually realized I wasn't using the latest version of GlusterFS from 7.9 to 10.3 and upgraded from Ubuntu 20.04 focal to Ubuntu 22.04 jammy. Jammy upgrade seems to have stopped glusterd from going 100%, now we usually see 0.7-1.0 CPU usage on glusterfsd/glusterd.
The exact command to reproduce the issue: I also tried rsync with the -W flag and also -B=131072 with no real change in transfer speed or time.
cp command takes approximately as long.
real 2m51.661s user 0m0.007s sys 0m0.060s
rsync with ssh from ServerB to the gvol folder itself on ServerA (the slowest server by ping), bypassing nfs/fuse mount but using the slower RAID-10 4x HDD drives:
rsync from ServerB to ServerC, same test as above, over ssh instead of nfs/fuse mount.
The full output of the command that failed: No failed command.
Expected results: At least 1,000,000 bytes/sec speeds
Mandatory info: - The output of the
gluster volume info
command:- The output of the
gluster volume status
command:gluster v status test
Status of volume: test Gluster process TCP Port RDMA Port Online Pid
Brick ServerA:/var/lib/gvol0/test 60660 0 Y 179250 Brick ServerB:/var/lib/gvol0/test 59604 0 Y 187054 Brick ServerC:/var/lib/gvol0/test 59573 0 Y 175714 Self-heal Daemon on localhost N/A N/A Y 187097 Self-heal Daemon on ServerC N/A N/A Y 175757 Self-heal Daemon on ServerA N/A N/A Y 179293
Task Status of Volume test
There are no active volume tasks
- The output of the
gluster volume heal
command:gluster v heal test info
Brick ServerA:/var/lib/gvol0/test Status: Connected Number of entries: 0
Brick ServerB:/var/lib/gvol0/test Status: Connected Number of entries: 0
Brick ServerC:/var/lib/gvol0/test Status: Connected Number of entries: 0
**- Provide logs present on following locations of client and server nodes - /var/log/glusterfs/
glusterd.log glustershd.log mnt.log var-lib-gvol0-test.log
**- Is there any crash ? Provide the backtrace and coredump No crash.
Additional info:
top -H during rsync over glusterfs mount
netstat -tapn | grep gluster
random snippet of iotop
also tried rsync with global-threading turned off
gluster volume profile with just 2 node replica (slowest, ServerA removed) during rsync transfer over glusterfs mount:
With ServerA removed, it resulted in a slightly faster transfer speed but I feel is still abysmal. At least it's under 3 minutes transfer time but it will take too long with a few hundred gigabytes of small files (avg less than 100kb in size).
- The operating system / glusterfs version: Ubuntu 22.04LTS Jammy / glusterfs 10.3
Note: Please hide any confidential data which you don't want to share in public like IP address, file name, hostname or any other configuration