[Gluster-devel] Raw disk / NFS/ Glusterfs (different configs) benchmarks.
Kevan Benson
kbenson at a-1networks.com
Fri Aug 10 20:15:41 UTC 2007
This is probably less than worthless, but I figured some of you might get a
kick out of it. It's not pretty, but it's data. Only includes values for
file creation and deletion, no copying or moving. I'll probably post this in
a while with all the configs and the source of makefiles.pl (not that it's
anything spectacular). If you want to see them before then, just ask.
At a later date I'll probably either thread the file creation script or use a
more standard benchmark, and take the average of multiple instead of single
run values.
Test Notes:
Extremely raw, tests ran only once per defined type (no averaging).
All GLFS tests were fully redundant across two servers.
Same hardware in every test
Bare disk utilized disk on client, not server
No io-threads, read-ahead or write-behind utilized
Testing file creation is not concurrent, so io-threads doesn't help.
Quick summary of GLFS results in TIME(% over best case for test) format:
Type 4000 1k files 400 10k files 40 100k files 100 1MB files Avg time
Client 51.779(+53%) 7.247(+31%) 2.695(+42%) 55.966(+43%) = +42.25%
Clnt/Srvr 47.045(+25%) 5.802(+5%) 1.897(+0%) 39.177(+0%) = +7.5%
Server 37.850(+0%) 5.530(+0%) 2.239(+18%) 45.250(+16%) = +8.5%
Summary Notes:
Providing redundancy by implementing AFR and unify on the client seems to
provide the worst performance (but it might provide better fault tolerance
and recovery, as some of my tests show)
AFR on servers and Unify on the client provides good performance, but I had
some HA recovery problems with it I need to investigate.
AFR/Unify on the server as outlined in
http://www.gluster.org/docs/index.php/GlusterFS_High_Availability_Storage_with_GlusterFS
seems to provide almost best case performance, and I have tested HA failing
with it quite a bit. It works, but it's slow.
NFS gets stomped in every case, but it's not tuned at all (besides any default
tuning RHEL/CentOS may include at the kernel level). Particularly of note is
the small file creation times of NFS compared to GLFS.
####################################################
10 root directories, 10 sub directories in each root, 40 files of 1k in each
sub directory (4000 1k files).
# Base disk
# time /root/makefiles.pl /tmp/test/
real 0m0.789s
user 0m0.308s
sys 0m0.466s
# time rm -rf /tmp/test/*
real 0m0.249s
user 0m0.010s
sys 0m0.239s
# Untuned NFS
# time /root/makefiles.pl /mnt/nfs/test/
real 3m44.871s
user 0m0.491s
sys 0m1.334s
# time rm -rf /mnt/nfs/test/*
real 1m19.988s
user 0m0.017s
sys 0m0.606s
# Untuned GLFS (client side AFR and unify)
# time /root/makefiles.pl /mnt/glusterfs/test/
real 0m51.779s
user 0m0.324s
sys 0m0.478s
# time rm -rf /mnt/glusterfs/test/*
real 0m20.523s
user 0m0.029s
sys 0m0.274s
# Untuned GLFS (server side AFR, client side unify)
# time /root/makefiles.pl /mnt/glusterfs/test/
real 0m47.045s
user 0m0.250s
sys 0m0.543s
# time rm -rf /mnt/glusterfs/test/*
real 0m21.177s
user 0m0.009s
sys 0m0.146s
# Untuned GLFS (server side AFR and unify)
# time /root/makefiles.pl /mnt/glusterfs/test/
real 0m37.850s
user 0m0.644s
sys 0m0.630s
# time rm -rf /mnt/glusterfs/test/*
real 0m18.106s
user 0m0.011s
sys 0m0.167s
####################################################
10 root directories, 1 sub directories in each root, 40 files of 10k in each
sub directory. (400 10k files)
# Base disk
# time /root/makefiles.pl /tmp/test/ 10 10 1 40
real 0m0.156s
user 0m0.072s
sys 0m0.084s
# time rm -rf /tmp/test/*
real 0m0.032s
user 0m0.001s
sys 0m0.031s
# Untuned NFS
# time /root/makefiles.pl /mnt/nfs/test/ 10 10 1 40
real 0m23.532s
user 0m0.085s
sys 0m0.222s
# time rm -rf /mnt/nfs/test/*
real 0m7.685s
user 0m0.002s
sys 0m0.068s
# Untuned GLFS (client side AFR and unify)
# time /root/makefiles.pl /mnt/glusterfs/test/ 10 10 1 40
real 0m7.247s
user 0m0.075s
sys 0m0.085s
# time rm -rf /mnt/glusterfs/test/*
real 0m1.787s
user 0m0.001s
sys 0m0.021s
# Untuned GLFS (server side AFR, client side unify)
# time /root/makefiles.pl /mnt/glusterfs/test/ 10 10 1 40
real 0m5.802s
user 0m0.080s
sys 0m0.083s
# time rm -rf /mnt/glusterfs/test/*
real 0m2.142s
user 0m0.003s
sys 0m0.021s
# Untuned GLFS (server side AFR and unify)
# time /root/makefiles.pl /mnt/glusterfs/test/ 10 10 1 40
real 0m5.530s
user 0m0.065s
sys 0m0.068s
# time rm -rf /mnt/glusterfs/test/*
real 0m1.760s
user 0m0.000s
sys 0m0.026s
####################################################
1 root directories, 1 sub directories in each root, 40 files of 100k in each
sub directory. (40 100k files)
# Base disk
# time /root/makefiles.pl /tmp/test/ 100 1 1 40
real 0m0.098s
user 0m0.052s
sys 0m0.046s
# time rm -rf /tmp/test/*
real 0m0.011s
user 0m0.001s
sys 0m0.010s
# Untuned NFS
# time /root/makefiles.pl /mnt/nfs/test/ 100 1 1 40
real 0m3.101s
user 0m0.051s
sys 0m0.083s
# time rm -rf /mnt/nfs/test/*
real 0m0.736s
user 0m0.001s
sys 0m0.014s
# Untuned GLFS (client side AFR and unify)
# time /root/makefiles.pl /mnt/glusterfs/test/ 100 1 1 40
real 0m2.695s
user 0m0.043s
sys 0m0.025s
# time rm -rf /mnt/glusterfs/test/*
real 0m0.190s
user 0m0.000s
sys 0m0.006s
# Untuned GLFS (server side AFR, client side unify)
# time /root/makefiles.pl /mnt/glusterfs/test/ 100 1 1 40
real 0m1.897s
user 0m0.051s
sys 0m0.036s
# time rm -rf /mnt/glusterfs/test/*
real 0m0.229s
user 0m0.001s
sys 0m0.005s
# Untuned GLFS (server side AFR and unify)
# time /root/makefiles.pl /mnt/glusterfs/test/ 100 1 1 40
real 0m2.239s
user 0m0.051s
sys 0m0.030s
# time rm -rf /mnt/glusterfs/test/*
real 0m0.185s
user 0m0.002s
sys 0m0.003s
####################################################
10 root directories, 1 sub directories in each root, 10 files of 1000k in each
sub directory. (100 1 MB files)
# Base disk
# time /root/makefiles.pl /tmp/test/ 1000 10 1 10
real 0m1.653s
user 0m0.749s
sys 0m0.890s
# time rm -rf /tmp/test/*
real 0m15.333s
user 0m0.001s
sys 0m0.133s
# Untuned NFS
# time /root/makefiles.pl /mnt/nfs/test/ 1000 10 1 10
real 0m19.327s
user 0m0.672s
sys 0m0.678s
# time rm -rf /mnt/nfs/test/*
real 0m2.438s
user 0m0.002s
sys 0m0.058s
# Untuned GLFS (client side AFR and unify)
# time /root/makefiles.pl /mnt/glusterfs/test/ 1000 10 1 10
real 0m55.966s
user 0m0.638s
sys 0m0.459s
# time rm -rf /mnt/glusterfs/test/*
real 0m0.671s
user 0m0.002s
sys 0m0.006s
# Untuned GLFS (server side AFR, client side unify)
# time /root/makefiles.pl /mnt/glusterfs/test/ 1000 10 1 10
real 0m39.177s
user 0m0.732s
sys 0m0.435s
# time rm -rf /mnt/glusterfs/test/*
real 0m1.088s
user 0m0.002s
sys 0m0.010s
# Untuned GLFS (server side AFR and unify)
# time /root/makefiles.pl /mnt/glusterfs/test/ 1000 10 1 10
real 0m45.250s
user 0m0.831s
sys 0m0.397s
# time rm -rf /mnt/glusterfs/test/*
real 0m0.872s
user 0m0.005s
sys 0m0.010s
--
- Kevan Benson
- A-1 Networks
More information about the Gluster-devel
mailing list