This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Hi Thomas, > OK, I tested the simple patch that inserts fsync(). > It does help the concurrent reading of data. No doubt. Thanks for testing that. > > 2. determine if there is a resulting performance penalty, and if so > > whether you consider it acceptable or unacceptable. > > Well, you of course can measure runtime differences, for example, > largely irrelevant because you don't know what computations are > behind that: > > a run with little amount of data per snapshot > > with fsync: > > real 0m13.936s > user 0m9.750s > sys 0m0.255s > > without fsync: > real 0m10.389s > user 0m9.758s > sys 0m0.087s > > another run with more data, also more computing because of that: > > > without fsync: > real 0m34.651s > user 0m33.926s > sys 0m0.188s > > fsync: > real 0m34.638s > user 0m33.916s > sys 0m0.177s > > It simply boils down to measurable overhead with small amounts of > data and less overhead with large amounts of data. That's the > basic idea behind caching, so it's no surprise. People calling > nc_synch() should not expect anything different. > So I am voting for the inserted fsync() call. My benchmarks showed similar results. I also found the port to Windows is very simple: #ifdef __MSVCRT__ #define fsync _commit #endif so I'm leaning towards putting the fsync call into 4.1 and removing the --enable-fsync option to configure, because I agree it's what people calling nc_sync() would expect. Whether we need a --disable-fsync call for configure remains to be decided. > PS: I noticed that nc-config --fflags under Solaris / Sun Studio > does not add -M/prefix/include, which is needed for the Sun fortran > compiler to find the Fortran 90 interface module, -I/prefix/include > is not enough. This is not trivial, though, as other compilers (gcc) > don't like -M .. so you cannot just add it always for Fortran (90) > ... only when NetCDF has been built with Sun Studio -- or perhaps > one can add a configure check for -M support? It turns out to be a little more complicated than that. The Solaris flag should be -I/prefix/include when compiling an f77 source that has an "include netcdf.inc" statement, but -M/prefix/include when compiling an f90 program that has "use netcdf". But --fflags doesn't permit distinguishing between which kind of source is being compiled. I guess we would really need an --f77flags in addition to --fflags to get this right. But for now, you'll see that nc-config --fflags will use the -M/prefix/include in the snapshot and later releases. --Russ Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu Ticket Details =================== Ticket ID: NVI-857322 Department: Support netCDF Priority: Normal Status: Closed