#include "addPrefetchEnhance.h"
-#include "prelookup.h"
+#include "altprelookup.h"
extern int numprefetchsites; // Number of prefetch sites
extern pfcstats_t *evalPrefetch; //Global array that keeps track of operation mode (ON/OFF) for each prefetch site
extern char bigarray[16*1024*1024];
extern int bigindex;
#define LOGEVENT(x) { \
- int tmp=bigindex++; \
- bigarray[tmp]=x; \
- }
+ int tmp=bigindex ++; \
+ bigarray[tmp]=x; \
+}
#else
#define LOGEVENT(x)
#endif
* we take action accordingly */
void handleDynPrefetching(int numLocal, int ntuples, int siteid) {
if(numLocal < ntuples) {
- /* prefetch not found locally(miss in cache) */
+ /* prefetch not found locally(miss in cache); turn on prefetching*/
evalPrefetch[siteid].operMode = 1;
evalPrefetch[siteid].uselesscount = SHUTDOWNINTERVAL;
} else {
+ //Turn off prefetch site
if(getOperationMode(siteid) != 0) {
evalPrefetch[siteid].uselesscount--;
if(evalPrefetch[siteid].uselesscount <= 0) {
- LOGEVENT('O');
- evalPrefetch[siteid].operMode = 0;
+ LOGEVENT('O');
+ evalPrefetch[siteid].operMode = 0;
}
}
}
chashlistnode_t *curr = &ptr[i]; //for each entry in the cache lookupTable
while(curr != NULL) {
if(curr->key == 0)
- break;
+ break;
objheader_t *header1, *header2;
/* Not found in local machine's object store and found in prefetch cache */
if((header1 = mhashSearch(curr->key)) == NULL && ((header2 = prehashSearch(curr->key)) != NULL)) {
- /* Remove from prefetch cache */
- prehashRemove(curr->key);
+ /* Remove from prefetch cache */
+ prehashRemove(curr->key);
}
curr = curr->next;
}
int retval;
char oidType;
/*//TODO comment it for now because objects read are already in the prefetch cache
- oidType = 'R';
- if(tdata->f.numread > 0) {
- if((retval = copyToCache(tdata->f.numread, (unsigned int *)(tdata->objread), oidType)) != 0) {
+ oidType = 'R';
+ if(tdata->f.numread > 0) {
+ if((retval = copyToCache(tdata->f.numread, (unsigned int *)(tdata->objread), oidType)) != 0) {
printf("%s(): Error in copying objects read at %s, %d\n", __func__, __FILE__, __LINE__);
return -1;
- }
- }
- */
+ }
+ }
+ */
if(tdata->f.nummod > 0) {
oidType = 'M';
if((retval = copyToCache(tdata->f.nummod, tdata->oidmod, oidType)) != 0) {
// oid = *((unsigned int *)(objread+(sizeof(unsigned int)+
// sizeof(unsigned short))*i));
//} else {
- oid = oidarray[i];
+ oid = oidarray[i];
//}
pthread_mutex_lock(&prefetchcache_mutex);
objheader_t * header;
newAddr->version += 1;
newAddr->notifylist = NULL;
}
+ STATUS(newAddr)=0;
+
//make an entry in prefetch lookup hashtable
- void *oldptr;
- if((oldptr = prehashSearch(oid)) != NULL) {
- prehashRemove(oid);
- prehashInsert(oid, newAddr);
- } else {
- prehashInsert(oid, newAddr);
- }
+ prehashInsert(oid, newAddr);
} //end of for
return 0;
}