[Gluster-users] odd results/questions about performance
Alex Mosolov
Alex.Mosolov at hillcrestlabs.com
Tue Sep 2 15:13:11 UTC 2008
Hi guys,
I've set up a glusterfs cluster for image serving from a web server.
Overall it works great, but after running some performance tests, I'm
seeing some very odd results that I'm hoping somebody can shed some
light on.
The setup is as follows - 3 machines, each has a glusterfs server
running, exporting a namespace and a regular brick (both over tcp), a
client that has afr set up to all 3 machines for both the data bricks
and the namespace (with unify on top), and a webserver on each.
For tests, I was using JMeter to request 8k and 16k files from the web
server, which was in turn getting them from glusterfs. In general,
performance from glusterfs was between 50% and 90% compared to just
serving from disk.
The oddities:
- reading the same file repeatedly was orders of magnitude slower than
reading randomly from a set of 100+ files. The glusterfs server log has
messages about a lock request for that file being queued. Thought that
might be due to the need to update access time, tried mounting with
noatime, didn't make a difference.
- setting "option read-subvolume" on the unify translator to point to a
local machine results in lower performance than pointing to a remote
machine. If read-subvolume points to the local machine, but the
glusterfs server is down on it, the performance is *significantly
better* than it is if the read-subvolume points to a remote machine or
isn't specified.
- setting up an io-cache translator on the client reduced performance
considerably (both at the top of the translator stack and between afr
and the subvolumes). Setting up read-ahead on top of the translator
stack also reduced performance considerably. Setting up the
write-behind translator improved read performance.
I'd really appreciate any insight into these. These behaviors are
opposite to what I'd expect, but I'm sure it makes sense to someone
familiar with the internal workings of glusterfs. Any other ideas for
improving performance further would be great, too.
Thank you,
Alex
Glusterfs is running with direct_io enabled (the default). The version
used is 1.3.10, running rh4 x86_64.
Server volume config:
volume posix
type storage/posix
option directory /var/opt/hcserv/glusterfs/export
end-volume
volume plocks
type features/posix-locks
subvolumes posix
end-volume
volume brick
type performance/io-threads
option thread-count 2
subvolumes plocks
end-volume
volume brick-ns
type storage/posix
option directory /var/opt/hcserv/glusterfs/export-ns
end-volume
volume server
type protocol/server
option transport-type tcp/server
subvolumes brick brick-ns
option auth.ip.brick.allow *
option auth.ip.brick-ns.allow *
end-volume
Client volume config:
volume 192.168.20.1
type protocol/client
option transport-type tcp/client
option remote-host 192.168.20.1
option remote-subvolume brick
end-volume
volume 192.168.20.1-ns
type protocol/client
option transport-type tcp/client
option remote-host 192.168.20.1
option remote-subvolume brick-ns
end-volume
volume 192.168.20.2
type protocol/client
option transport-type tcp/client
option remote-host 192.168.20.2
option remote-subvolume brick
end-volume
volume 192.168.20.2-ns
type protocol/client
option transport-type tcp/client
option remote-host 192.168.20.2
option remote-subvolume brick-ns
end-volume
volume 192.168.20.3
type protocol/client
option transport-type tcp/client
option remote-host 192.168.20.3
option remote-subvolume brick
end-volume
volume 192.168.20.3-ns
type protocol/client
option transport-type tcp/client
option remote-host 192.168.20.3
option remote-subvolume brick-ns
end-volume
volume clients-afr
type cluster/afr
subvolumes 192.168.20.1 192.168.20.2 192.168.20.3
end-volume
volume clients-ns-afr
type cluster/afr
subvolumes 192.168.20.1-ns 192.168.20.2-ns 192.168.20.3-ns
end-volume
volume unify
type cluster/unify
subvolumes clients-afr
option scheduler rr
option namespace clients-ns-afr
end-volume
volume iot
type performance/io-threads
option thread-count 2
subvolumes unify
end-volume
volume wb
type performance/write-behind
subvolumes iot
option aggregate-size 1MB
end-volume
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://supercolony.gluster.org/pipermail/gluster-users/attachments/20080902/bf66b0a1/attachment.html>
More information about the Gluster-users
mailing list