[Gluster-users] very low file creation rate with glusterfs -- result updates
Wei Dong
wdong.pku at gmail.com
Sun Sep 13 01:11:58 UTC 2009
OK, so the previous good results are indeed too good to be true. Here's
a more reasonable evaluation
http://www.cs.princeton.edu/~wdong/gluster/large.gif where I enlarged
the number of images created by 10x so everything no longer fit in main
memory. Still look good to me.
Wei Dong wrote:
> I think it is fuse that causes the slowness. I ran all experiments
> with booster enabled and here's the new figure:
> http://www.cs.princeton.edu/~wdong/gluster/summary-booster.gif . The
> numbers are MUCH better than NFS in most cases except for the local
> setting, which is not practically interesting. The interesting thing
> is that all of a sudden, the deleting rate drop by 4-10 times --
> though I don't really care about file deletion.
>
> I must say that I'm totally satisfied by the results.
>
> - Wei
>
>
> Wei Dong wrote:
>> Hi All,
>>
>> I complained about the low file creation rate with the glusterfs on
>> my cluster weeks ago and Avati suggested I started with a small
>> number of nodes. I finally get sometime to seriously benchmark
>> glusterfs with Bonnie++ today and the results confirms that glusterfs
>> is indeed slow in terms of file creating. My application is to store
>> a large number of ~200KB image files. I use the following bonnie++
>> command for evaluation (create 10K files of 200KiB each scattered
>> under 100 directories):
>>
>> bonnie++ -d . -s 0 -n 10:200000:200000:100
>>
>> Since sequential I/O is not that interesting to me, I only keep the
>> random I/O results.
>>
>> My hardware configuration is 2xquadcore Xeon E5430 2.66GHz, 16GB
>> memory, 4 x Seagate 1500GiB 7200RPM hard drive. The machines are
>> connected with gigabit ethernet.
>>
>> I ran several GlusterFS configurations, each named as N-R-T, where N
>> is the number of replicated volumes aggregated, R is the number of
>> replications and T is number of server side I/O thread. I use one
>> machine to serve one volume so there are NxR servers and one separate
>> client running for each experiment. On the client side, the server
>> volumes are first replicated and then aggregated -- even with 1-1-2
>> configuration, the single volume is wrapped by a replicate and a
>> distribute translator. To show the overhead of those translators, I
>> also run a "simple" configuration which is 1-1-2 without the extra
>> replicate & distribute translators, and a "local" configuration which
>> is "simple" with client & server running on the same machine. These
>> configurations are compared to "nfs" and "nfs-local", which is NFS
>> with server and client on the same machine. The GlusterFS volume
>> file templates are attached to the email.
>>
>> The result is at
>> http://www.cs.princeton.edu/~wdong/gluster/summary.gif . The
>> bars/numbers shown are operations/second, so the larger the better.
>>
>> Following are the messages shown by the figure:
>> 1. GlusterFS is doing a exceptionally good job on deleting files,
>> but creates and reads files much slower than both NFS.
>> 2. At least for one node server configuration, network doesn't
>> affects the file creation rate and does affects file read rate.
>> 3. The extra dummy replicate & distribute translators lowers file
>> creation rate by almost half. 4. Replication doesn't hurt
>> performance a lot.
>> 5. I'm running only single-threaded benchmark, so it's hard to say
>> about scalability, but adding more servers does helps a little bit
>> even in single-threaded setting.
>>
>> Note that my results are not really that different from
>> http://gluster.com/community/documentation/index.php/GlusterFS_2.0_I/O_Benchmark_Results,
>> where the single node configuration file create rate is about 30/second.
>>
>> I see no reason why GlusterFS has to be that slower than NFS in file
>> creation in single node configuration. I'm wondering if someone here
>> can help me figure out what's wrong in my configuration or what's
>> wrong in the GlusterFS implementation.
>>
>> - Wei
>>
>> Server volume:
>>
>> volume posix
>> type storage/posix
>> option directory /state/partition1/wdong/gluster
>> end-volume
>>
>> volume lock
>> type features/locks
>> subvolumes posix
>> end-volume
>>
>> volume brick
>> type performance/io-threads
>> option thread-count 2
>> subvolumes lock
>> end-volume
>>
>> volume server
>> type protocol/server
>> option transport-type tcp
>> option auth.addr.brick.allow 192.168.99.*
>> option transport.socket.listen-port 6999
>> subvolumes brick
>> end-volume
>>
>>
>> Client volume
>>
>> volume brick-0-0
>> type protocol/client
>> option transport-type tcp
>> option remote-host c8-0-0
>> option remote-port 6999
>> option remote-subvolume brick
>> end-volume
>>
>> volume brick-0-1 ...
>>
>> volume rep-0
>> type cluster/replicate
>> subvolumes brick-0-0 brick-0-1 ...
>>
>> ...
>> volume union
>> type cluster/distribute
>> subvolumes rep-0 rep-1 rep-2 rep-3 rep-4 rep-5 rep-6 rep-7
>> end-volume
>>
>> volume client
>> type performance/write-behind
>> option cache-size 32MB
>> option flush-behind on
>> subvolumes union
>> end-volume
>>
>>
>> For those who are interested enough to see the real configuration
>> files, I have all the configuration files and server/client logs
>> uploaded to http://www.cs.princeton.edu/~wdong/gluster/run.tar.gz .
>>
>
>
More information about the Gluster-users
mailing list