summaryrefslogtreecommitdiffstats
path: root/src/H5Dtest.c
diff options
context:
space:
mode:
authorNeil Fortner <nfortne2@hdfgroup.org>2009-02-12 20:46:32 (GMT)
committerNeil Fortner <nfortne2@hdfgroup.org>2009-02-12 20:46:32 (GMT)
commit0bdedf0a39e859956b6810e848fa67d16b4e10a4 (patch)
treee558e84649e86dbf4422206089baf08ccef659f7 /src/H5Dtest.c
parent0eb811d83156bc15162607c967d98e8ca093a8df (diff)
downloadhdf5-0bdedf0a39e859956b6810e848fa67d16b4e10a4.zip
hdf5-0bdedf0a39e859956b6810e848fa67d16b4e10a4.tar.gz
hdf5-0bdedf0a39e859956b6810e848fa67d16b4e10a4.tar.bz2
[svn-r16480] 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/H5Dtest.c')
-rw-r--r--src/H5Dtest.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/H5Dtest.c b/src/H5Dtest.c
index f7124f0..d9a418e 100644
--- a/src/H5Dtest.c
+++ b/src/H5Dtest.c
@@ -135,3 +135,49 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5D_layout_contig_size_test() */
+
+/*--------------------------------------------------------------------------
+ NAME
+ H5D_current_cache_size_test
+ PURPOSE
+ Determine current the size of the dataset's chunk cache
+ USAGE
+ herr_t H5D_layout_contig_size_test(did, size)
+ hid_t did; IN: Dataset to query
+ hsize_t *size; OUT: Pointer to location to place size info
+ RETURNS
+ Non-negative on success, negative on failure
+ DESCRIPTION
+ Checks the size of a contiguous dataset's storage.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ DO NOT USE THIS FUNCTION FOR ANYTHING EXCEPT TESTING
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+herr_t
+H5D_current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused)
+{
+ H5D_t *dset; /* Pointer to dataset to query */
+ herr_t ret_value = SUCCEED; /* return value */
+
+ FUNC_ENTER_NOAPI(H5D_current_cache_size_test, FAIL)
+
+ /* Check args */
+ if(NULL == (dset = (H5D_t *)H5I_object_verify(did, H5I_DATASET)))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset")
+
+ if(nbytes_used) {
+ HDassert(dset->shared->layout.type == H5D_CHUNKED);
+ *nbytes_used = dset->shared->cache.chunk.nbytes_used;
+ } /* end if */
+
+ if(nused) {
+ HDassert(dset->shared->layout.type == H5D_CHUNKED);
+ *nused = dset->shared->cache.chunk.nused;
+ } /* end if */
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* H5D_current_cache_size_test() */
+