[Gluster-devel] io-cache test results and a segmentation fault with version from July 30th
Bernhard J. M. Grün
bernhard.gruen at googlemail.com
Tue Jul 31 13:01:08 UTC 2007
Hi!
After some tests with the newest version of glusterfs. We have some
testing results.
The new version is a lot faster (even without io-cache). The
throughput is about 1.5 times higher (from 20MBit output to 32MBit
output) than with the old version we used before.
We were note able to use io-cache because the glusterfs process then
uses more and more cpu power and the system is therefore slower than
without io-cache. It seems that the purging algorithm in io-cache is
not optimal. Maybe it is called too often or the underlaying data
structure for the cache is not optimal. We tried different settings
for page-count and page-size. Like page-count 32 and page-size 64MB or
page-count 128 and page-size 1MB. After some time the cache seems to
be full and from now on the purge algorithm seems to work without
sleep. Maybe something like an upper and a lower threshold could solve
that problem. This is also done in squid. It purges the cache, when it
is over about 90% of full size and purges it as long as the size is
larger than 75% of the full size.
Another problem we discovered was the following segfault after some
time. I just can't explain the reason for it. It seems to be load
dependant.
#0 0x00002b5f8c363eb2 in pthread_spin_lock () from /lib/libpthread.so.0
#1 0x00000000004094fb in fetch_cbk (frame=<value optimized out>,
cookie=0x60c3e0, this=0x60ff80, op_ret=0, op_errno=6341600,
spec_data=0x6107fc "### file: client-volume.spec.sample\n\n", '#'
<repeats 46 times>, "\n### GlusterFS Client Volume Specification
##\n", '#' <repeats 46 times>, "\n\n#### CONFIG FILE RULE"...) at
../../libglusterfs/src/stack.h:99
#2 0x00002b5f8cad376b in client_getspec_cbk (frame=0x60fce0, args=0x60fda0)
at client-protocol.c:4058
#3 0x00002b5f8cad77b8 in notify (this=0x60c300, event=<value optimized out>,
data=0x60d1e0) at client-protocol.c:4364
#4 0x00002b5f8bd2f4f2 in sys_epoll_iteration (ctx=<value optimized out>)
at epoll.c:53
#5 0x0000000000409400 in fetch_spec (ctx=0x7fff1efa4900,
remote_host=<value optimized out>, remote_port=0x60c3c0 "9999",
transport=<value optimized out>) at fetch-spec.c:131
#6 0x000000000040329d in main (argc=5, argv=0x7fff1efa4a78) at glusterfs.c:128
The config we used in that case is the following:
for the server:
volume brick
type storage/posix # POSIX FS translator
option directory /media/storage # Export this directory
end-volume
volume iothreads #iothreads can give performance a boost
type performance/io-threads
option thread-count 16
subvolumes brick
end-volume
### Add network serving capability to above brick.
volume server
type protocol/server
option transport-type tcp/server # For TCP/IP transport
option listen-port 9999 # Default is 6996
option client-volume-filename
/opt/glusterfs-1.3.0/etc/glusterfs/client.vol
subvolumes iothreads
option auth.ip.iothreads.allow * # Allow access to "brick" volume
end-volume
for the client:
volume client1
type protocol/client
option transport-type tcp/client # for TCP/IP transport
option remote-host 10.1.1.13 # IP address of the remote brick
option remote-port 9999 # default server port is 6996
option remote-subvolume iothreads # name of the remote volume
end-volume
### Add client feature and attach to remote subvolume
volume client2
type protocol/client
option transport-type tcp/client # for TCP/IP transport
option remote-host 10.1.1.14 # IP address of the remote brick
option remote-port 9999 # default server port is 6996
option remote-subvolume iothreads # name of the remote volume
end-volume
volume afrbricks
type cluster/afr
subvolumes client1 client2
option replicate *:2
option self-heal off
end-volume
volume iothreads #iothreads can give performance a boost
type performance/io-threads
option thread-count 16
subvolumes afrbricks
end-volume
### Add writeback feature
volume writeback
type performance/write-behind
option aggregate-size 0 # unit in bytes
subvolumes iothreads
end-volume
#volume bricks
# type performance/io-cache
# option page-count 128 #128 is default option
# option page-size 128KB #128KB is default option
# option priority */imagescache/galerie/*.jpg:3,*3.jpg:2,*0.jpg:1
# subvolumes writeback
#end-volume
Again mainy thanks for your help!
Cheers,
Bernhard J. M. Grün
More information about the Gluster-devel
mailing list