# HG changeset patch # User Merten Sach # Date 1328292004 -3600 # Node ID f89bf9e368f546df5deeef8698e21fd394917f9f # Parent c66137e4dc2f65ebdfbee157987e95cf86544511 tuning of backoff on xoanon diff -r c66137e4dc2f -r f89bf9e368f5 CoreLoop.c --- a/CoreLoop.c Fri Jan 13 11:49:05 2012 +0100 +++ b/CoreLoop.c Fri Feb 03 19:00:04 2012 +0100 @@ -47,6 +47,8 @@ int32 numMasterInARow = 0; volatile int32 *masterLock; VirtProcr *masterVP; + + volatile double workspace1,workspace2; //variables for master lock busy waiting // init random number generator for retries uint32_t seed1 = rand()%1000; @@ -141,11 +143,15 @@ while( currVP == NULL ) //if queue was empty, enter get masterLock loop { //queue was empty, so get master lock - if(numMasterInARow > 2){ - wait_iterations=(randomNumber(&seed1, &seed2) % (numMasterInARow*numMasterInARow))*100; - int i; - for(i=0; i 2){ + wait_iterations=(randomNumber(&seed1, &seed2) % (numMasterInARow*NUM_CORES)); + int i; + for(i=0; iwait_iterations_hist ); int i; - for(i=0; istartMaster.longVal = endSusp.longVal; #endif //================================================== - }//CoreLoop - } + }//CoreLoop + + return (void*)&workspace1; //gcc fake out for -O3 +} inline uint32_t randomNumber(uint32_t* seed1, uint32_t* seed2){ diff -r c66137e4dc2f -r f89bf9e368f5 VMS_defs.h --- a/VMS_defs.h Fri Jan 13 11:49:05 2012 +0100 +++ b/VMS_defs.h Fri Feb 03 19:00:04 2012 +0100 @@ -81,7 +81,7 @@ // tradeoff amortizing master fixed overhead vs imbalance potential // when work-stealing, can make bigger, at risk of losing cache affinity -#define NUM_SCHED_SLOTS 5 +#define NUM_SCHED_SLOTS 3 #define MIN_WORK_UNIT_CYCLES 20000 @@ -91,7 +91,7 @@ #define VIRT_PROCR_STACK_SIZE 0x8000 /* 32K */ // memory for VMS__malloc -#define MALLOC_ADDITIONAL_MEM_FROM_OS_SIZE 0x10000000 /* 256M */ +#define MALLOC_ADDITIONAL_MEM_FROM_OS_SIZE 0x40000000 /* 1G */ #define CACHE_LINE 64 #define PAGE_SIZE 4096