[Gluster-users] GlusterFS3.1 - Bad Write Performance Unzipping Many Small Files
Craig Carl
craig at gluster.com
Fri Nov 19 05:30:54 UTC 2010
Rafiq -
Gluster 3.1.1 will ship shortly, in our testing performance has been
significantly improved. If you are not in production the QA builds of
Gluster 3.1.1 are here -
http://download.gluster.com/pub/gluster/glusterfs/qa-releases/. The QA
releases should NOT be run in production.
We have also found that the performance of a single EBS device can
be a limiting factor. I have found that creating lots of smaller EBS
devices then using mdadm to build a RAID 0 array can improve performance
without raising costs. I have tested with 10 EBS devices, performance
increased 4-5x for disk bound applications.
Thanks,
Craig
-->
Craig Carl
Senior Systems Engineer
Gluster
On 11/18/2010 09:14 PM, Rafiq Maniar wrote:
> Hi,
>
> I'm using Glusterfs3.1 on Ubuntu 10.04 in a dual replication setup, on
> Amazon EC2.
>
> It takes 40-50 seconds to unzip an 8MB zip file full of small files and
> directories to a gluster
> mount, in contrast to 0.8 seconds to local disk.
>
> The volume configuration was created with:
> gluster volume create volname replica 1 transport tcp server1:/shared
> server2:/shared
>
> I am mounting on the client via NFS with:
> mount -t nfs -o async,noatime,nodiratime server1:/shared /mnt/shared
>
> And also tried via Gluster native client with:
> mount -t glusterfs server1:/shared /mnt/shared
>
> I found a post here where he author talks about a similar slow unzip of the
> Linux kernel:
> http://northernmost.org/blog/improving-glusterfs-performance/
>
> I believe the 'nodelay' option was implemented in response to this, and I
> have tried using that
> in the 3 configuration files on the servers but with no improvement. I've
> also tried some other performance
> tuning tricks I found on the web.
>
> I tried it on another server that has Gluster3.0 with an NFS share but no
> replication and it completes in 3 seconds.
>
> I have similar bad performance with a simple copy of the same
> files+directories from /tmp into the gluster mount so
> its not limited to zip.
>
> Here is my /etc/glusterd/vols/shared/shared-fuse.vol.
> Bear in mind that this is 'tuned' but the out-of-the-box version is the same
> performance.
> I also tried removing all the performance translators as per someones
> suggestion in IRC.
>
> *
> *
> *volume shared-client-0*
> * type protocol/client*
> * option remote-host server1*
> * option remote-subvolume /mnt/shared*
> * option transport-type tcp*
> * option transport.socket.nodelay on*
> *end-volume*
> *
> *
> *volume shared-client-1*
> * type protocol/client*
> * option remote-host server2*
> * option remote-subvolume /mnt/shared*
> * option transport-type tcp*
> * option transport.socket.nodelay on*
> *end-volume*
> *
> *
> *volume shared-replicate-0*
> * type cluster/replicate*
> * subvolumes shared-client-0 shared-client-1*
> *end-volume*
> *
> *
> *volume shared-write-behind*
> * type performance/write-behind*
> * option cache-size 100MB*
> * option flush-behind off*
> * subvolumes shared-replicate-0*
> *end-volume*
> *
> *
> *volume shared-read-ahead*
> * type performance/read-ahead*
> * subvolumes shared-write-behind*
> *end-volume*
> *
> *
> *volume shared-io-cache*
> * type performance/io-cache*
> * option cache-size 100MB*
> * option cache-timeout 1*
> * subvolumes shared-read-ahead*
> *end-volume*
> *
> *
> *volume shared-quick-read*
> * type performance/quick-read*
> * option cache-timeout 1 # default 1 second*
> * option max-file-size 256KB # default 64Kb*
> * subvolumes shared-io-cache*
> *end-volume*
> *
> *
> *
> *
> *volume shared*
> * type debug/io-stats*
> * subvolumes shared-quick-read*
> *end-volume*
> *
> *
>
> And my /etc/glusterd/vols/shared/shared.server1.mnt-shared.vol :
>
> *volume shared-posix*
> * type storage/posix*
> * option directory /mnt/shared*
> *end-volume*
> *
> *
> *volume shared-access-control*
> * type features/access-control*
> * subvolumes shared-posix*
> *end-volume*
> *
> *
> *volume shared-locks*
> * type features/locks*
> * subvolumes shared-access-control*
> *end-volume*
> *
> *
> *volume shared-io-threads*
> * type performance/io-threads*
> * option thread-count 16*
> * subvolumes shared-locks*
> *end-volume*
> *
> *
> *volume /mnt/shared*
> * type debug/io-stats*
> * subvolumes shared-io-threads*
> *end-volume*
> *
> *
> *volume shared-server*
> * type protocol/server*
> * option transport-type tcp*
> * option auth.addr./mnt/shared.allow **
> * option transport.socket.nodelay on*
> * subvolumes /mnt/shared*
> *end-volume*
>
>
> Here's the output of nfsstat on the client:
> *Client rpc stats:*
> *calls retrans authrefrsh*
> *1652499 231 124*
> *
> *
> *Client nfs v3:*
> *null getattr setattr lookup access readlink*
> *0 0% 744498 45% 32762 1% 490843 29% 235276 14% 37
> 0%*
> *read write create mkdir symlink mknod*
> *52085 3% 21940 1% 14452 0% 948 0% 1 0% 0
> 0%*
> *remove rmdir rename link readdir
> readdirplus*
> *10961 0% 562 0% 19 0% 0 0% 135 0% 32623
> 1%*
> *fsstat fsinfo pathconf commit*
> *140 0% 46 0% 23 0% 15126 0%*
>
>
> Anyone got any ideas on improving the performance of this?
>
> Thanks,
> Rafiq
>
>
>
> _______________________________________________
> Gluster-users mailing list
> Gluster-users at gluster.org
> http://gluster.org/cgi-bin/mailman/listinfo/gluster-users
More information about the Gluster-users
mailing list