[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