Benjamin Krein
2009-May-29 14:36 UTC
[Gluster-users] Horrible performance with small files (DHT/AFR)
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
Benjamin Krein
2009-Jun-02 16:25 UTC
[Gluster-users] Horrible performance with small files (DHT/AFR)
I do not see any difference with autoscaling removed. Current server config: # 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 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 # time cp -rp * /mnt/ real 70m13.672s user 0m1.168s sys 0m8.377s NOTE: the above test was also done during peak hours when the LAN/dev server were in use which would cause some of the extra time. This is still WAY too much, though. Ben On Jun 1, 2009, at 1:40 PM, Vijay Bellur wrote:> Hi Benjamin, > > Could you please try by turning autoscaling off? > > Thanks, > Vijay > > Benjamin Krein wrote: >> 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 >> >> >> >> >> _______________________________________________ >> Gluster-users mailing list >> Gluster-users at gluster.org >> http://zresearch.com/cgi-bin/mailman/listinfo/gluster-users >> >> >