From fffc77a7057492801dc320d943b25b69dc05922a Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Thu, 3 Nov 2011 12:22:50 +0100 Subject: [PATCH] allow global limitation of mrefs in trans_logger (not yet activated) --- mars_trans_logger.c | 3 +++ mars_trans_logger.h | 1 + sy_old/mars_light.c | 3 +++ 3 files changed, 7 insertions(+) diff --git a/mars_trans_logger.c b/mars_trans_logger.c index f2d749f0..706eab32 100644 --- a/mars_trans_logger.c +++ b/mars_trans_logger.c @@ -587,6 +587,9 @@ int trans_logger_ref_get(struct trans_logger_output *output, struct mref_object MARS_IO("pos = %lld len = %d\n", mref->ref_pos, mref->ref_len); + if (mref->ref_len > brick->max_mref_size && brick->max_mref_size > 0) + mref->ref_len = brick->max_mref_size; + atomic_inc(&brick->outer_balance_count); if (atomic_read(&mref->ref_count) > 0) { // setup already performed diff --git a/mars_trans_logger.h b/mars_trans_logger.h index 730650d9..baa14bb8 100644 --- a/mars_trans_logger.h +++ b/mars_trans_logger.h @@ -111,6 +111,7 @@ struct trans_logger_brick { // parameters int shadow_mem_limit; // max # master shadows int limit_congest;// limit phase1 congestion. + int max_mref_size;// shorten mrefs to this maxlen int align_size; // alignment between requests int chunk_size; // must be at least 8K (better 64k) int flush_delay; // delayed firing of incomplete chunks diff --git a/sy_old/mars_light.c b/sy_old/mars_light.c index deb84517..3812dab2 100644 --- a/sy_old/mars_light.c +++ b/sy_old/mars_light.c @@ -66,6 +66,8 @@ struct light_class { #define CONF_TRANS_SHADOW_LIMIT (65536 * 1) // don't fill the hashtable too much #define CONF_TRANS_CHUNKSIZE (128 * 1024) +#define CONF_TRANS_MAX_MREF_SIZE 0 +//#define CONF_TRANS_MAX_MREF_SIZE PAGE_SIZE //#define CONF_TRANS_ALIGN 512 #define CONF_TRANS_ALIGN 0 //#define FLUSH_DELAY (HZ / 100 + 1) @@ -166,6 +168,7 @@ int _set_trans_params(struct mars_brick *_brick, void *private) trans_brick->debug_shortcut = true; #endif + trans_brick->max_mref_size = CONF_TRANS_MAX_MREF_SIZE; trans_brick->align_size = CONF_TRANS_ALIGN; trans_brick->chunk_size = CONF_TRANS_CHUNKSIZE; trans_brick->flush_delay = FLUSH_DELAY;