From 62bc6b51136760b1d4f4b691aaa089bdb9bf0af5 Mon Sep 17 00:00:00 2001 From: Eric Holk Date: Sat, 23 Jul 2011 19:03:02 -0700 Subject: Per-thread scheduling. Closes #682. Tasks are spawned on a random thread. Currently they stay there, but we should add task migration and load balancing in the future. This should drammatically improve our task performance benchmarks. --- src/rt/rust.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/rt/rust.cpp') diff --git a/src/rt/rust.cpp b/src/rt/rust.cpp index 06097e34197..df1486952eb 100644 --- a/src/rt/rust.cpp +++ b/src/rt/rust.cpp @@ -140,9 +140,10 @@ rust_start(uintptr_t main_fn, int argc, char **argv, void* crate_map) { update_log_settings(crate_map, getenv("RUST_LOG")); enable_claims(getenv("CHECK_CLAIMS")); + int num_threads = get_num_threads(); rust_srv *srv = new rust_srv(); - rust_kernel *kernel = new rust_kernel(srv); + rust_kernel *kernel = new rust_kernel(srv, num_threads); kernel->start(); rust_task *root_task = kernel->create_task(NULL, "main"); rust_scheduler *sched = root_task->sched; @@ -158,11 +159,9 @@ rust_start(uintptr_t main_fn, int argc, char **argv, void* crate_map) { root_task->start(main_fn, (uintptr_t)args->args); - int num_threads = get_num_threads(); - DLOG(sched, dom, "Using %d worker threads.", num_threads); - int ret = kernel->start_task_threads(num_threads); + int ret = kernel->start_task_threads(); delete args; delete kernel; delete srv; -- cgit 1.4.1-3-g733a5