summaryrefslogtreecommitdiffstats
path: root/src/H5Dpkg.h
diff options
context:
space:
mode:
authorNeil Fortner <nfortne2@hdfgroup.org>2009-02-12 20:49:02 (GMT)
committerNeil Fortner <nfortne2@hdfgroup.org>2009-02-12 20:49:02 (GMT)
commit9ebf3291c9b641630c8bbd1038262ce7740c470f (patch)
treeaff489a808981fcd99fbdd24dd3139efbf714dd8 /src/H5Dpkg.h
parent5a6c75cc585c8e16277e235aa4240ff5b9ff8763 (diff)
downloadhdf5-9ebf3291c9b641630c8bbd1038262ce7740c470f.zip
hdf5-9ebf3291c9b641630c8bbd1038262ce7740c470f.tar.gz
hdf5-9ebf3291c9b641630c8bbd1038262ce7740c470f.tar.bz2
[svn-r16481] Purpose: Improve chunk cache
Description: The meaning of the "nbytes" field in H5D_rdcc_t was not clear, and some places assumed it was the maximum size of the chunk cache, while some assumed it was the current size of the chunk cache. The end result was that only 1 chunk could be held in cache at a time. This field has been replaced by "nbytes_max" and "nbytes_used". Performance of cached I/O should improve greatly. Tested: jam, smirom (h5committest)
Diffstat (limited to 'src/H5Dpkg.h')
-rw-r--r--src/H5Dpkg.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/H5Dpkg.h b/src/H5Dpkg.h
index e2600a3..3aa425b 100644
--- a/src/H5Dpkg.h
+++ b/src/H5Dpkg.h
@@ -365,11 +365,12 @@ typedef struct H5D_rdcc_t {
unsigned nmisses;/* Number of cache misses */
unsigned nflushes;/* Number of cache flushes */
} stats;
- size_t nbytes; /* Current cached raw data in bytes */
+ size_t nbytes_max; /* Maximum cached raw data in bytes */
size_t nslots; /* Number of chunk slots allocated */
double w0; /* Chunk preemption policy */
struct H5D_rdcc_ent_t *head; /* Head of doubly linked list */
struct H5D_rdcc_ent_t *tail; /* Tail of doubly linked list */
+ size_t nbytes_used; /* Current cached raw data in bytes */
int nused; /* Number of chunk slots in use */
H5D_chunk_cached_t last; /* Cached copy of last chunk information */
struct H5D_rdcc_ent_t **slot; /* Chunk slots, each points to a chunk*/
@@ -667,6 +668,7 @@ H5_DLL htri_t H5D_mpio_opt_possible(const H5D_io_info_t *io_info,
#ifdef H5D_TESTING
H5_DLL herr_t H5D_layout_version_test(hid_t did, unsigned *version);
H5_DLL herr_t H5D_layout_contig_size_test(hid_t did, hsize_t *size);
+H5_DLL herr_t H5D_current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused);
#endif /* H5D_TESTING */
#endif /*_H5Dpkg_H*/