[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

More improvements to the netcdf I/O subsystem address@hidden



Gordon:

I've completed another try at improving the netcdf-3 I/O subsystem.
It is available as ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-3.4atd.tar.Z

I think this is about as good as we will be able to do.
The major differences between this and the last iteration:

        limiting the I/O calls to (mostly) single blocks.
                (previously most calls were 2 blocks.)

        double buffering "distant" copy operations.

This should be more like the netcdf-2 performance, but may
still be a bit worse for your particular test.

Please give this a shot and let me know how it goes.

For your test (vtest) I now get, on our Ultra, for local disk, unoptimized
sync() userCPU=0.16, sysCPU=0.07, wallclock=0
as opposed to
sync() userCPU=0.19, sysCPU=0.05, wallclock=0
for netcdf-2.

Other test results below compare netcdf-3.4atd and netcdf-3.3.1.

#####
SunOS buddy.unidata.ucar.edu 5.5.1 Generic_103640-12 sun4u sparc SUNW,Ultra-2
local disk
-g (No Optimization)

====  netcdf-3.4atd

time ./t_ncio -s 16384 -c /tmp/test.io < t_ncio.in
real        2.5
user        2.0
sys         0.4

time ./t_ncio -s 16384 -w -S /tmp/test.io < t_ncio.in
real        3.9
user        2.5
sys         1.3

time ./nctime 24 13 19 17 > times
real       36.7
user       17.5
sys        10.1
awk -f timesum.awk < times
332.076


==== netcdf-3.3.2b

time ./t_ncio -s 16384 -c /tmp/test.io < t_ncio.in
real        2.9
user        2.1
sys         0.7

time ./t_ncio -s 16384 -w -S /tmp/test.io < t_ncio.in
real        4.0
user        2.6
sys         1.3

time ./nctime 24 13 19 17 > times
real       43.1
user       15.6
sys        12.9
awk -f timesum.awk < times
424.704

#####
IRIX64 binnie 6.2 03131016 IP26
-g (unoptimized), local efs disk
(timing granularity on this system makes the summary
number unreliable +/- 100 or so.)

==== netcdf-3.4atd

time ./nctime 24 13 19 17 > times
real    0m27.33s
user    0m17.48s
sys     0m8.86s
959.221


=== netcdf 3.3.2b
time ./nctime 24 13 19 17 > times
real    0m27.70s
user    0m17.63s
sys     0m9.25s
        awk -f timesum.awk < times
893.02

##### End test results

BTW, last week we had a bunch of sparc fives in for a class.
I ran your test over NFS between the sparc fives and still couldn't
get more than a few seconds wallclock time.

I don't mean to underplay the importance of the problems you
have made me aware of, but I do think there is something weird
going on with the NFS service you are using for the tests to get
such long wallclock times.

-glenn