Final configuration for benchmarking get/set API on server.
authorGerd Zellweger <zgerd@student.ethz.ch>
Sat, 28 Jan 2012 16:02:38 +0000 (17:02 +0100)
committerGerd Zellweger <zgerd@student.ethz.ch>
Sat, 28 Jan 2012 16:02:38 +0000 (17:02 +0100)
hake/Main.hs
include/dist2/definitions.h
lib/barrelfish/waitset.c
lib/dist2/client/dist2.c
lib/dist2/parser/Makefile
lib/dist2/server/service.c
usr/skb/Hakefile
usr/skb/skb_main.c
usr/tests/dist2test/d2bench.c
usr/tests/dist2test/d2bench2.c

index 57344aa..943d375 100644 (file)
@@ -19,9 +19,7 @@ import System.Directory
 import System.Exit
 import GHC hiding (Target)
 import GHC.Paths ( libdir )
-import DynFlags ( defaultDynFlags,
-                  xopt_set,
-                  ExtensionFlag (Opt_DeriveDataTypeable) )
+import DynFlags ( defaultDynFlags )
 import Data.Dynamic
 import Data.Maybe
 import List
@@ -368,12 +366,12 @@ evalHakeFiles o allfiles hakefiles =
            setSessionDynFlags dflags { importPaths = moddirs,
                 hiDir = Just "./hake",
                 objectDir = Just "./hake",
-                flags = (flags $ xopt_set dflags Opt_DeriveDataTypeable) }
+                flags = Opt_DeriveDataTypeable:(flags dflags) }
            targets <- mapM (\m -> guessTarget m Nothing) imports
            setTargets targets
            load LoadAllTargets
            modlist <- mapM (\m -> findModule (mkModuleName m) Nothing) all_imports
-           setContext [] $ map (\x -> (x, Nothing)) modlist
+           setContext [] modlist
            val <- dynCompileExpr "Hakefiles.hf :: [(String, HRule)]" 
            return (fromDyn val [("failed",Error "failed")])
 
index 46cc01d..1a85c56 100644 (file)
@@ -18,6 +18,6 @@
 #ifndef DIST2_DEFINITIONS_H_
 #define DIST2_DEFINITIONS_H_
 
-#define MAX_QUERY_LENGTH (32*1024)
+#define MAX_QUERY_LENGTH (5*1024)
 
 #endif /* DIST2_DEFINITIONS_H_ */
index 39adc5b..3cc37f5 100644 (file)
@@ -43,7 +43,7 @@ static inline cycles_t cyclecount(void)
 #endif
 
 // FIXME: bogus default value. need to measure this at boot time
-#define WAITSET_POLL_CYCLES_DEFAULT 2000
+#define WAITSET_POLL_CYCLES_DEFAULT 192000
 
 /// Maximum number of cycles to spend polling channels before yielding CPU
 cycles_t waitset_poll_cycles = WAITSET_POLL_CYCLES_DEFAULT;
index aa75389..a59a50b 100644 (file)
@@ -48,7 +48,7 @@ struct dist2_rpc_client* get_dist_rpc_client(void)
     return rpc.rpc_client;
 }
 
-static void identify_response_handler(struct dist2_binding* b)
+/*static void identify_response_handler(struct dist2_binding* b)
 {
     thread_sem_post(&ts);
 }
@@ -96,7 +96,7 @@ static void event_bind_cb(void *st, errval_t err, struct dist2_binding *b)
     assert(!event.is_done);
     event.is_done = true;
     event.err = err;
-}
+}*/
 
 static void rpc_bind_cb(void *st, errval_t err, struct dist2_binding* b)
 {
@@ -164,10 +164,10 @@ errval_t dist_init(void)
         return err;
     }
 
-    err = init_binding(&event, event_bind_cb, "dist2_event");
+/*    err = init_binding(&event, event_bind_cb, "dist2_event");
     if (err_is_fail(err)) {
         return err;
-    }
+    }*/
 
     // TODO: Hack. Tell the server that these bindings belong together
     // We can't use the same binding in 2 different threads with
@@ -182,8 +182,8 @@ errval_t dist_init(void)
     }
 
     // Spawn event handler thread (handles asynchronous messages from server)
-    struct thread* t = thread_create(event_handler_thread, (void*) id);
-    assert(t != NULL);
+/*    struct thread* t = thread_create(event_handler_thread, (void*) id);
+    assert(t != NULL);*/
 
     // Register rpc binding using identifier
     err = dist_rpc->vtbl.identify(dist_rpc, id, dist2_BINDING_RPC);
@@ -191,6 +191,6 @@ errval_t dist_init(void)
     dist_pubsub_init();
 
     // Wait until event binding has registered itself
-    thread_sem_wait(&ts);
+//    thread_sem_wait(&ts);
     return err;
 }
index 0c39230..87713b4 100644 (file)
@@ -5,10 +5,10 @@ CFLAGS = -DTEST_PARSER -std=c99
 objects = parse.o scan.o y.tab.h test_parser.o ast.o
 
 test_parser: $(objects)
-parse.o: parse.y
-scan.o: scan.l
+parse.o: parse.c parse.y
+scan.o: scan.c scan.l
 flex.h: scan.o
-y.tab.h: parse.c scan.c
+y.tab.h: parse.c scan.c scan.o
 test_parser.o: test_parser.c ast.c y.tab.h flex.h
 
 clean:
index a8e94f7..9301345 100644 (file)
@@ -141,10 +141,11 @@ void get_handler(struct dist2_binding *b, char *query, dist2_trigger_t trigger)
 {
     errval_t err = SYS_ERR_OK;
     cycles_t time0 = 0, time1 = 0;
+    //time0 = bench_tsc();
     struct dist_reply_state* srt = NULL;
     err = new_dist_reply_state(&srt, get_reply);
     assert(err_is_ok(err));
-
+    //time1 = bench_tsc();
     err = check_query_length(query);
     if (err_is_fail(err)) {
         goto out;
@@ -161,8 +162,9 @@ void get_handler(struct dist2_binding *b, char *query, dist2_trigger_t trigger)
 
 out:
     srt->error = err;
+    //time1 = bench_tsc();
     srt->time = time1 - time0 - bench_tscoverhead();
-
+    srt->busy = 0;
     srt->reply(b, srt);
 
     free_ast(ast);
index 7110cfa..89161a2 100644 (file)
@@ -33,7 +33,7 @@ let ramfs_files = find inDir "eclipse_kernel/lib" ".eco"
                                          "icsolver", "vfs", "nfs", "ahci", "lwip",
                                          "contmng", "procon", "hashtable", "pcre", 
                                          "dist_server", "dist_parser", "skb",
-                                         "bench", "collections"],
+                                         "bench", "collections", "dmalloc"],
                         architectures = [ arch ]
                 }
 in
index d8a3127..5dc9aea 100644 (file)
@@ -25,7 +25,7 @@
 #include "dist/predicates.h"
 #include "shared_lib_dict.h"
 
-#define MEMORY_SIZE 32*1024*1024
+#define MEMORY_SIZE 512*1024*1024
 #define ECLIPSE_DIR "/skb"
 
 #define RESULT_BUF_SIZE 1024
@@ -82,8 +82,27 @@ static void test(void)
 }
 */
 
+#include <dmalloc/dmalloc.h>
+
+typedef void *(*alt_malloc_t)(size_t bytes);
+extern alt_malloc_t alt_malloc;
+
+typedef void (*alt_free_t)(void *p);
+extern alt_free_t alt_free;
+
+typedef void *(*alt_realloc_t)(void *p, size_t bytes);
+extern alt_realloc_t alt_realloc;
+
+static void init_dmalloc(void)
+{
+    alt_malloc = &dlmalloc;
+    alt_free = &dlfree;
+    alt_realloc = &dlrealloc;
+}
+
 int main(int argc, char**argv)
 {
+    init_dmalloc();
     // we'll be needing this...
     vfs_mkdir("/tmp");
 
@@ -113,15 +132,15 @@ int main(int argc, char**argv)
 
     execute_string("set_flag(print_depth,100).");
 
-    if(disp_get_core_id() == 0) {
+    if(disp_get_core_id() == 3) {
         debug_printf("dist_server_init\n");
-        //execute_string("set_flag(gc, off).");
+        execute_string("set_flag(gc, off).");
         //execute_string("set_flag(gc_policy, fixed).");
         //execute_string("set_flat(gc_interval, 536870912)."); // 512 mb
         //execute_string("set_flag(gc_interval_dict, 10000).");
-        //execute_string("set_flag(enable_interrupts, off).");
-        //execute_string("set_flag(debug_compile, off).");
-        //execute_string("set_flag(debugging, nodebug).");
+        execute_string("set_flag(enable_interrupts, off).");
+        execute_string("set_flag(debug_compile, off).");
+        execute_string("set_flag(debugging, nodebug).");
 
         bench_init();
         errval_t err = dist_server_init();
index d7b5857..48f315d 100644 (file)
@@ -30,7 +30,7 @@ struct timestamp {
 };
 struct timestamp timestamps[MAX_ITERATIONS] = { { 0, 0, 0, 0 } };
 static size_t records[] = { 0, 8, 16, 256, 512, 768, 1000, 1500, 2000, 2500,
-        4000, 5000, 6000, 7000, 8000, 9000, 10000, 12000  };
+        4000, 5000, 6000, 7000, 8000, 9000, 10000, 12000, 20000 };
 
 static void variable_records(void)
 {
@@ -99,6 +99,7 @@ static void one_record(void)
 
         assert(err_is_ok(error_code));
         free(data);
+        for(size_t j=0; j<1<<20; j++) {}
     }
 
     for (size_t i = 0; i < MAX_ITERATIONS; i++) {
@@ -134,7 +135,7 @@ int main(int argc, char** argv)
     bench_init();
     dist_init();
 
-    if (0) one_record();
+    one_record();
     if (0) variable_records();
-    unnamed_record();
+    if (0) unnamed_record();
 }
index 68fcad1..d36fec2 100644 (file)
@@ -30,7 +30,7 @@ struct timestamp {
 };
 struct timestamp timestamps[MAX_ITERATIONS] = {{ 0, 0 }};
 static size_t records[] = { 0, 8, 16, 256, 512, 768, 1000, 1500, 2000, 2500,
-        4000, 5000, 6000, 7000, 8000, 9000, 10000, 12000  };
+        4000, 5000, 6000, 7000, 8000, 9000, 10000, 12000, 20000  };
 
 static inline uint64_t get_cycle_counter(void)
 {