Changeset: 22695fcea790 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=22695fcea790
Modified Files:
monetdb5/extras/crackers/crackers.mx
monetdb5/extras/crackers/crackers_holistic.c
monetdb5/extras/crackers/crackers_holistic.h
monetdb5/extras/crackers/crackers_selecthol_ops.mx
monetdb5/extras/crackers/crackers_selectholpl_ops.mx
Branch: holindex
Log Message:
Call a new "select" function when there are idle resources.
diffs (truncated from 768 to 300 lines):
diff --git a/monetdb5/extras/crackers/crackers.mx
b/monetdb5/extras/crackers/crackers.mx
--- a/monetdb5/extras/crackers/crackers.mx
+++ b/monetdb5/extras/crackers/crackers.mx
@@ -273,7 +273,7 @@ address CRKselectholValue_@2
comment "Retrieve the subset using a cracker
index producing preferably a BATview.";
-command selecthol(b:bat[:oid,:@2],l:@2,h:@2,li:bit,hi:bit,iq:bit):bat[:oid,:@2]
+command selecthol(b:bat[:oid,:@2],l:@2,h:@2,li:bit,hi:bit):bat[:oid,:@2]
address CRKselectholBounds_@2
comment "Retrieve the subset using a cracker
index producing preferably a BATview.";
@@ -288,7 +288,7 @@ address CRKuselectholValue_@2
comment "Retrieve the subset using a cracker
index producing preferably a BATview.";
-command
uselecthol(b:bat[:any_1,:@2],l:@2,h:@2,li:bit,hi:bit,iq:bit):bat[:any_1,:void]
+command uselecthol(b:bat[:any_1,:@2],l:@2,h:@2,li:bit,hi:bit):bat[:any_1,:void]
address CRKuselectholBounds_@2
comment "Retrieve the subset using a cracker
index producing preferably a BATview.";
@@ -353,7 +353,7 @@ address CRKselectholplValue_@2
comment "Retrieve the subset using a cracker
index producing preferably a BATview.";
-command
selectholpl(b:bat[:oid,:@2],l:@2,h:@2,li:bit,hi:bit,iq:bit):bat[:oid,:@2]
+command selectholpl(b:bat[:oid,:@2],l:@2,h:@2,li:bit,hi:bit):bat[:oid,:@2]
address CRKselectholplBounds_@2
comment "Retrieve the subset using a cracker
index producing preferably a BATview.";
@@ -368,7 +368,7 @@ address CRKuselectholplValue_@2
comment "Retrieve the subset using a cracker
index producing preferably a BATview.";
-command
uselectholpl(b:bat[:any_1,:@2],l:@2,h:@2,li:bit,hi:bit,iq:bit):bat[:any_1,:void]
+command
uselectholpl(b:bat[:any_1,:@2],l:@2,h:@2,li:bit,hi:bit):bat[:any_1,:void]
address CRKuselectholplBounds_@2
comment "Retrieve the subset using a cracker
index producing preferably a BATview.";
diff --git a/monetdb5/extras/crackers/crackers_holistic.c
b/monetdb5/extras/crackers/crackers_holistic.c
--- a/monetdb5/extras/crackers/crackers_holistic.c
+++ b/monetdb5/extras/crackers/crackers_holistic.c
@@ -162,6 +162,29 @@ findMax(FrequencyNode* head)
}
return ret_node;
}
+/*this function returns the maximum weight (excluding the bid weight) from the
list and is used for all the cost models*/
+FrequencyNode*
+findOtherMax(FrequencyNode* head, int bat_id)
+{
+ FrequencyNode* temp=NULL;
+ FrequencyNode* ret_node=NULL;
+ double tmpW;
+ //int bat;
+ temp=head;
+ tmpW=temp->weight;
+ //bat=temp->bid;
+ while(temp!=NULL)
+ {
+ if((temp->weight >= tmpW) && (temp->bid != bat_id))
+ {
+ tmpW=temp->weight;
+ //bat=temp->bid;
+ ret_node=temp;
+ }
+ temp=temp->next;
+ }
+ return ret_node;
+}
/*this function returns a random node from the list with positive weight*/
FrequencyNode*
@@ -352,45 +375,28 @@ CRKrandomCrack(int *ret)
{
int bid=0;
FrequencyNode* max_node;
- BAT *b;
- int low=0, hgh=0;
- int *t;
- int temp=0;
- bit isIdleQuery=TRUE;
- oid posl,posh,p;
- //FILE *ofp1;
- int dummy = 0;
- //char outputFilename1[] =
"/export/scratch2/petraki/experiments_paper1/thresholds/client1/waiting0/cpuload70/idletime4/idle_columns.txt";
-
+ int change_bat=0;
bit inclusive=TRUE;
FrequencyNode *fs = getFrequencyStruct('A');
- //ofp1 = fopen(outputFilename1,"a");
+
(void) ret;
max_node=findMax(fs);
if(max_node!=NULL && max_node->weight > 0)
{
bid=max_node->bid;
- b=BATdescriptor(bid);
- t=(int*)Tloc(b,BUNfirst(b));
- posl=BUNfirst(b);
- posh=BUNlast(b) - 1;
- p=(rand()%(posh-posl+1))+posl;
- low=t[p];
- p=(rand()%(posh-posl+1))+posl;
- hgh=t[p];
- if(hgh < low)
+ change_bat = CRKrandomholpl_int(&bid,&inclusive);
+ if (change_bat == -1)
{
- temp=low;
- low=hgh;
- hgh=temp;
+ max_node=findOtherMax(fs,bid);
+ if(max_node!=NULL && max_node->weight > 0)
+ {
+ bid=max_node->bid;
+ (void) CRKrandomholpl_int(&bid,&inclusive);
+ }
}
- CRKselectholplBounds_int(&dummy, &bid, &low, &hgh, &inclusive,
&inclusive,&isIdleQuery);
- //fprintf(ofp1,"%d\n",max_node->bid);
}
- //fclose(ofp1);
-
return MAL_SUCCEED;
}
diff --git a/monetdb5/extras/crackers/crackers_holistic.h
b/monetdb5/extras/crackers/crackers_holistic.h
--- a/monetdb5/extras/crackers/crackers_holistic.h
+++ b/monetdb5/extras/crackers/crackers_holistic.h
@@ -50,6 +50,7 @@ crackers_export double changeWeight_1(Fr
crackers_export double changeWeight_2(FrequencyNode* node,int N,int L1);
crackers_export double changeWeight_3(FrequencyNode* node,int N,int L1);
crackers_export FrequencyNode* findMax(FrequencyNode* head);
+crackers_export FrequencyNode* findOtherMax(FrequencyNode* head,int bat_id);
crackers_export FrequencyNode* pickRandom(FrequencyNode* head);
crackers_export void deleteNode(FrequencyNode* head,int bat_id);
crackers_export IdleFuncPtr IdleFunc;
diff --git a/monetdb5/extras/crackers/crackers_selecthol_ops.mx
b/monetdb5/extras/crackers/crackers_selecthol_ops.mx
--- a/monetdb5/extras/crackers/crackers_selecthol_ops.mx
+++ b/monetdb5/extras/crackers/crackers_selecthol_ops.mx
@@ -54,8 +54,8 @@ All Rights Reserved.
* @- Exported signatures
*/
@= SelectholFunctions_decl
-crackers_export str CRKselectholBounds_@1(int *vid, int *bid, @1 *low, @1
*hgh, bit *inclusiveLow, bit *inclusiveHgh,bit *isIdleQuery);
-crackers_export str CRKuselectholBounds_@1(int *vid, int *bid, @1 *low, @1
*hgh, bit *inclusiveLow, bit *inclusiveHgh, bit *isIdleQuery);
+crackers_export str CRKselectholBounds_@1(int *vid, int *bid, @1 *low, @1
*hgh, bit *inclusiveLow, bit *inclusiveHgh);
+crackers_export str CRKuselectholBounds_@1(int *vid, int *bid, @1 *low, @1
*hgh, bit *inclusiveLow, bit *inclusiveHgh);
crackers_export str CRKselectholValue_@1(int *vid, int *bid, @1 *value);
crackers_export str CRKuselectholValue_@1(int *vid, int *bid, @1 *value);
crackers_export str CRKselecthol_@1(int *vid, int *bid, @1 *low, @1 *hgh);
@@ -88,51 +88,47 @@ crackers_export str CRKsumholBounds_@1(i
@= SelectholFunctions_impl
str
-CRKselectholBounds_@1(int *vid, int *bid, @1 *low, @1 *hgh, bit *inclusiveLow,
bit *inclusiveHgh, bit *isIdleQuery){
+CRKselectholBounds_@1(int *vid, int *bid, @1 *low, @1 *hgh, bit *inclusiveLow,
bit *inclusiveHgh){
if (@2_EQ(low,ATOMnilptr(TYPE_@1),@3@1))
- return CRKRangeLeftNilTree_@1(vid, bid, hgh, inclusiveHgh,
TRUE, isIdleQuery);
+ return CRKRangeLeftNilTree_@1(vid, bid, hgh, inclusiveHgh,
TRUE);
else if (@2_EQ(hgh,ATOMnilptr(TYPE_@1),@3@1))
- return CRKRangeRightNilTree_@1(vid, bid, low, inclusiveLow,
TRUE, isIdleQuery);
+ return CRKRangeRightNilTree_@1(vid, bid, low, inclusiveLow,
TRUE);
else
- return CRKRangeTree_@1(vid, bid, low, hgh, inclusiveLow,
inclusiveHgh, TRUE, isIdleQuery);
+ return CRKRangeTree_@1(vid, bid, low, hgh, inclusiveLow,
inclusiveHgh, TRUE);
}
str
-CRKuselectholBounds_@1(int *vid, int *bid, @1 *low, @1 *hgh, bit
*inclusiveLow, bit *inclusiveHgh, bit *isIdleQuery){
+CRKuselectholBounds_@1(int *vid, int *bid, @1 *low, @1 *hgh, bit
*inclusiveLow, bit *inclusiveHgh){
if (@2_EQ(low,ATOMnilptr(TYPE_@1),@3@1))
- return CRKRangeLeftNilTree_@1(vid, bid, hgh, inclusiveHgh,
FALSE, isIdleQuery);
+ return CRKRangeLeftNilTree_@1(vid, bid, hgh, inclusiveHgh,
FALSE);
else if (@2_EQ(hgh,ATOMnilptr(TYPE_@1),@3@1))
- return CRKRangeRightNilTree_@1(vid, bid, low, inclusiveLow,
FALSE, isIdleQuery);
+ return CRKRangeRightNilTree_@1(vid, bid, low, inclusiveLow,
FALSE);
else
- return CRKRangeTree_@1(vid, bid, low, hgh, inclusiveLow,
inclusiveHgh, FALSE, isIdleQuery);
+ return CRKRangeTree_@1(vid, bid, low, hgh, inclusiveLow,
inclusiveHgh, FALSE);
}
str
CRKselectholValue_@1(int *vid, int *bid, @1 *value){
bit inclusive = TRUE;
- bit isIdleQuery=FALSE;
- return CRKuselectholBounds_@1(vid, bid, value, value, &inclusive,
&inclusive, &isIdleQuery);
+ return CRKuselectholBounds_@1(vid, bid, value, value, &inclusive,
&inclusive);
}
str
CRKuselectholValue_@1(int *vid, int *bid, @1 *value){
bit inclusive = TRUE;
- bit isIdleQuery=FALSE;
- return CRKuselectholBounds_@1(vid, bid, value, value, &inclusive,
&inclusive, &isIdleQuery);
+ return CRKuselectholBounds_@1(vid, bid, value, value, &inclusive,
&inclusive);
}
str
CRKselecthol_@1(int *vid, int *bid, @1 *low, @1 *hgh){
bit inclusive = TRUE;
- bit isIdleQuery=FALSE;
- return CRKselectholBounds_@1(vid, bid, low, hgh, &inclusive,
&inclusive, &isIdleQuery);
+ return CRKselectholBounds_@1(vid, bid, low, hgh, &inclusive,
&inclusive);
}
str
CRKuselecthol_@1(int *vid, int *bid, @1 *low, @1 *hgh){
bit inclusive = TRUE;
- bit isIdleQuery=FALSE;
- return CRKuselectholBounds_@1(vid, bid, low, hgh, &inclusive,
&inclusive, &isIdleQuery);
+ return CRKuselectholBounds_@1(vid, bid, low, hgh, &inclusive,
&inclusive);
}
str
@@ -140,7 +136,6 @@ CRKthetaselecthol_@1(int *vid, int *bid,
ptr nilptr = ATOMnilptr(TYPE_@1);
char *op = *OP;
bit lin = TRUE, rin = TRUE;
- bit isIdleQuery=FALSE;
@1 *low = nilptr, *high = nilptr;
if (op[0] == '=') {
@@ -156,7 +151,7 @@ CRKthetaselecthol_@1(int *vid, int *bid,
throw(MAL, "crackers.thetaselecthol", "unknown operator");
}
- return CRKselectholBounds_@1(vid, bid, low, high, &lin, &rin,
&isIdleQuery);
+ return CRKselectholBounds_@1(vid, bid, low, high, &lin, &rin);
}
str
@@ -164,7 +159,6 @@ CRKthetauselecthol_@1(int *vid, int *bid
ptr nilptr = ATOMnilptr(TYPE_@1);
char *op = *OP;
bit lin = TRUE, rin = TRUE;
- bit isIdleQuery=FALSE;
@1 *low = nilptr, *high = nilptr;
if (op[0] == '=') {
@@ -179,7 +173,7 @@ CRKthetauselecthol_@1(int *vid, int *bid
throw(MAL, "crackers.thetauselecthol", "unknown operator");
}
- return CRKuselectholBounds_@1(vid, bid, low, high, &lin, &rin,
&isIdleQuery);
+ return CRKuselectholBounds_@1(vid, bid, low, high, &lin, &rin);
}
str
CRKsumholBounds_@1(int *vid, int *bid, @1 *low, @1 *hgh, bit *inclusiveLow,
bit *inclusiveHgh){
@@ -386,9 +380,7 @@ createView:
FN=searchBAT(FrequencyStructA,*bid);
- if (*isIdleQuery==FALSE)
- FN->f1 = FN->f1 + 1;
-
+ FN->f1 = FN->f1 + 1;
FN->c = FN->c + 2;
FN->weight = changeWeight_1(FN,countBatElements,L1);
@@ -443,10 +435,7 @@ createView:
FN=searchBAT(FrequencyStructA,*bid);
- if (*isIdleQuery==FALSE)
- {
- FN->f1 = FN->f1 + 1;
- }
+ FN->f1 = FN->f1 + 1;
/* If an index exists for this bat (so it has been cracked
before)
@@ -579,7 +568,7 @@ createView:
- if((foundLow!=0 && foundHgh!=0)&&(*isIdleQuery==FALSE)) FN->f2 = FN->f2
+ 1;
+ if((foundLow!=0 && foundHgh!=0)) FN->f2 = FN->f2 + 1;
/* If one or both of the result view bounds were not found using the
index then we have to crack */
@@ -660,10 +649,7 @@ createView:
MT_lock_unset(&CrackerIndex[m].columnLock,"Lock Attribute");
gettimeofday(&tv1,0); ct+=dt(tv0,tv1); tv0=tv1;
- if(*isIdleQuery==FALSE)
- fprintf(ofp,"User_query \t 1 \t Wait_time\t %9.6lf \t
Selection_time\t %9.6lf\n",wt,ct);
- else
- fprintf(ofp,"Idle_Query \t 0 \t Wait_time\t %9.6lf \t
Selection_time\t %9.6lf\n",wt,ct);
+ fprintf(ofp,"User_query \t 1 \t Wait_time\t %9.6lf \t Selection_time\t
%9.6lf\n",wt,ct);
fclose(ofp);
@@ -1065,7 +1051,7 @@ To do that, we first search the index to
know and which parts we have to crack. Then we crack, if necessary,
the appropriate pieces, update the index and return the result */
static str
-CRKRangeTree_@1(int *vid, int *bid, @1 *low, @1 *hgh, bit *inclusiveLow, bit
*inclusiveHgh, bit tail, bit *isIdleQuery){
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list