[Gluster-users] Horrible performance with small files (DHT/AFR)
Benjamin Krein
superbenk at superk.org
Fri May 29 14:36:29 UTC 2009
I'm seeing extremely poor performance writing small files to a
glusterfs DHT/AFR mount point. Here are the stats I'm seeing:
* Number of files:
root at dev1|/home/aweber/cache|# find |wc -l
102440
* Average file size (bytes):
root at dev1|/home/aweber/cache|# ls -lR | awk '{sum += $5; n++;} END
{print sum/n;}'
4776.47
* Using scp:
root at dev1|/home/aweber/cache|# time scp -rp * benk at cfs1:~/cache/
real 1m38.726s
user 0m12.173s
sys 0m12.141s
* Using cp to glusterfs mount point:
root at dev1|/home/aweber/cache|# time cp -rp * /mnt
real 30m59.101s
user 0m1.296s
sys 0m5.820s
Here is my configuration (currently, single client writing to 4
servers (2 DHT servers doing AFR):
SERVER:
# webform flat-file cache
volume webform_cache
type storage/posix
option directory /home/clusterfs/webform/cache
end-volume
volume webform_cache_locks
type features/locks
subvolumes webform_cache
end-volume
volume webform_cache_brick
type performance/io-threads
option thread-count 32
option max-threads 128
option autoscaling on
subvolumes webform_cache_locks
end-volume
<<snip>>
# GlusterFS Server
volume server
type protocol/server
option transport-type tcp
subvolumes dns_public_brick dns_private_brick webform_usage_brick
webform_cache_brick wordpress_uploads_brick subs_exports_brick
option auth.addr.dns_public_brick.allow 10.1.1.*
option auth.addr.dns_private_brick.allow 10.1.1.*
option auth.addr.webform_usage_brick.allow 10.1.1.*
option auth.addr.webform_cache_brick.allow 10.1.1.*
option auth.addr.wordpress_uploads_brick.allow 10.1.1.*
option auth.addr.subs_exports_brick.allow 10.1.1.*
end-volume
CLIENT:
# Webform Flat-File Cache Volume client configuration
volume srv1
type protocol/client
option transport-type tcp
option remote-host cfs1
option remote-subvolume webform_cache_brick
end-volume
volume srv2
type protocol/client
option transport-type tcp
option remote-host cfs2
option remote-subvolume webform_cache_brick
end-volume
volume srv3
type protocol/client
option transport-type tcp
option remote-host cfs3
option remote-subvolume webform_cache_brick
end-volume
volume srv4
type protocol/client
option transport-type tcp
option remote-host cfs4
option remote-subvolume webform_cache_brick
end-volume
volume afr1
type cluster/afr
subvolumes srv1 srv3
end-volume
volume afr2
type cluster/afr
subvolumes srv2 srv4
end-volume
volume dist
type cluster/distribute
subvolumes afr1 afr2
end-volume
volume writebehind
type performance/write-behind
option cache-size 4mb
option flush-behind on
subvolumes dist
end-volume
volume cache
type performance/io-cache
option cache-size 512mb
subvolumes writebehind
end-volume
Benjamin Krein
www.superk.org
More information about the Gluster-users
mailing list