Changeset: f27f412c9800 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f27f412c9800
Added Files:
monetdb5/scheduler/Tests/transientTestFinal.mal
Branch: mutation
Log Message:
script to test transient bat added
diffs (204 lines):
diff --git a/monetdb5/scheduler/Tests/transientTestFinal.mal
b/monetdb5/scheduler/Tests/transientTestFinal.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/scheduler/Tests/transientTestFinal.mal
@@ -0,0 +1,199 @@
+# script to check the functionality of bat.setTransient in guaranteeing the
correct cardinality of the mutation subselect calls.
+# Follow the instructions at the end of the page to invoke
+
+
+function initializeLeft640MB{unsafe}():bat[:oid,:lng];
+
+ t0 := alarm.usec();
+
+ b:= bat.new(:oid,:lng);
+ bat.setPersistent(b,true);
+ bat.setName(b, "Left640MB");
+
+ io.printf("\n Left 640MB started");
+ r:= mmath.srand(0);
+ barrier i:= 0:lng;
+ k:= mmath.rand();
+ l:= calc.lng(k);
+ bat.append(b,l);
+ redo i:= iterator.next(1:lng,80000000:lng);
+ exit i;
+ cnt := aggr.count(b);
+ io.printf("\n Left 640 MB count= %d",cnt);
+
+ t1 := alarm.usec();
+ t2 := t1-t0;
+ io.printf("\n Time for 640MB left - %d \n",t2);
+
+ bat.unload("Left640MB");
+ transaction.commit();
+
+ return b;
+end initializeLeft640MB;
+
+
+function initializeLeft2000MB{unsafe}():bat[:oid,:lng];
+
+
+ t0 := alarm.usec();
+ b:= bat.new(:oid,:lng);
+ bat.setPersistent(b,true);
+ bat.setName(b, "Left2000MB");
+
+ io.printf("\n Left 2000MB started");
+ r:= mmath.srand(0);
+ barrier i:= 0:lng;
+ k:= mmath.rand();
+ l:= calc.lng(k);
+ bat.append(b,l);
+ redo i:= iterator.next(1:lng,250000000:lng);
+ exit i;
+ cnt := aggr.count(b);
+# io.print(cnt);
+ io.printf("\n Left 2000 MB count= %d",cnt);
+
+ bat.unload("Left2000MB");
+ transaction.commit();
+
+ t1 := alarm.usec();
+ t2 := t1-t0;
+ io.printf("\n Time for 2GB left - %d \n",t2);
+
+ return b;
+end initializeLeft2000MB;
+
+function initializeLeft3200MB{unsafe}():bat[:oid,:lng];
+
+ t0 := alarm.usec();
+ b:= bat.new(:oid,:lng);
+ bat.setPersistent(b,true);
+ bat.setName(b, "Left3200MB");
+
+ io.printf("\n Left 3200MB started");
+ r:= mmath.srand(0);
+ barrier i:= 0:lng;
+ k:= mmath.rand();
+ l:= calc.lng(k);
+ bat.append(b,l);
+ redo i:= iterator.next(1:lng,400000000:lng);
+ exit i;
+ cnt := aggr.count(b);
+# io.print(cnt);
+ io.printf("\n Left 3200 MB count= %d",cnt);
+
+ bat.unload("Left3200MB");
+ transaction.commit();
+
+ t1 := alarm.usec();
+ t2 := t1-t0;
+ io.printf("\n Time for 3.2GB left - %d \n",t2);
+
+ return b;
+end initializeLeft3200MB;
+
+function initializeNewLeft3200MB{unsafe}():bat[:oid,:lng];
+
+ t0 := alarm.usec();
+ b:= bat.new(:oid,:lng);
+ bat.setPersistent(b,true);
+ bat.setName(b, "NewLeft3200MB");
+
+ io.printf("\n New Left 3200MB started");
+ r:= mmath.srand(0);
+ barrier i:= 0:lng;
+ k:= mmath.rand();
+ l:= calc.lng(k);
+ bat.append(b,l);
+ redo i:= iterator.next(1:lng,400000000:lng);
+ exit i;
+ cnt := aggr.count(b);
+# io.print(cnt);
+ io.printf("\n Left 3200 MB count= %d",cnt);
+
+ bat.unload("NewLeft3200MB");
+ transaction.commit();
+
+ t1 := alarm.usec();
+ t2 := t1-t0;
+ io.printf("\n Time for 3.2GB left - %d \n",t2);
+
+ return b;
+end initializeNewLeft3200MB;
+
+function initBatCreate{unsafe}();
+
+# a := initializeLeft640MB();
+# a: = initializeLeft2000MB();
+# a := initializeLeft3200MB();
+# a := initializeNewLeft3200MB();
+
+end initBatCreate;
+
+function initialize{unsafe}():bat[:oid,:lng];
+
+# b:bat[:oid,:lng] := bat.load("Left3200MB");
+# bat.setTransient(b);
+
+ cnt := aggr.count(b);
+ io.printf("\nLeft count %d\n",cnt);
+
+ return b;
+end initialize;
+
+function query(b:bat[:oid,:lng]):lng;
+ profiler.activate("ticks");
+ profiler.activate("thread");
+ profiler.activate("stmt");
+ profiler.activate("time");
+ profiler.setAll();
+# profiler.start();
+
+ t0:= alarm.usec();
+ s1:= nil:bat[:oid,:oid];
+
+barrier z:= language.dataflow();
+ s1 := algebra.subselect(b,1:lng,999999:lng,true,true,false);
+
+exit z;
+ t1:= alarm.usec();
+ cnt := aggr.count(s1);
+ io.print(cnt);
+
+ stmt:= profiler.getTrace("stmt");
+ ticks:= profiler.getTrace("ticks");
+ thread:= profiler.getTrace("thread");
+ time1:= profiler.getTrace("time");
+# io.print(time1,thread,ticks,stmt);
+# profiler.stop();
+
+ return query := t1-t0;
+end query;
+
+optimizer.multicore("user","query");
+function testrun();
+ t0:= alarm.usec();
+ b:= initialize();
+ bat.setReadMode(b);
+# cnt := aggr.count(b);
+# io.print(cnt);
+
+barrier step:=0;
+ t2:= user.query(b);
+ io.printf("%d %d\n",step,t2);
+ redo step:= iterator.next(1,20);
+exit step;
+
+end testrun;
+
+#################################### Instructions
#######################################
+
+#Call this function during first run keeping the testrun call below commented,
to create a persistent bat
+
+#initBatCreate();
+
+#In the second run, comment initBatCreate call above and uncomment testrun
call below to invoke it. Cardinality count will be different for different runs.
+#In the third run keeping the initBatCreate commented, and testrun
uncommented, also uncomment the bat.setTransient in the initialize function to
get correct cardinality count.
+
+#testrun();
+
+
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list