diff --git a/benches/baseline.json b/benches/baseline.json index f06249c..edc3326 100644 --- a/benches/baseline.json +++ b/benches/baseline.json @@ -2,313 +2,313 @@ "chained_spawn": { "smarm 1-thread": { "result": 1000, - "median": 390, - "min": 380, - "max": 1872 + "median": 410, + "min": 379, + "max": 2167 }, "smarm 24-thread": { "result": 1000, - "median": 877, - "min": 834, - "max": 1289 + "median": 977, + "min": 883, + "max": 1154 }, "tokio current_thread": { "result": 1000, - "median": 57, - "min": 56, - "max": 62 + "median": 72, + "min": 71, + "max": 80 }, "tokio multi-thread": { "result": 1000, - "median": 188, - "min": 174, - "max": 213 + "median": 216, + "min": 171, + "max": 257 } }, "yield_many": { "smarm 1-thread": { "result": 200000, - "median": 16992, - "min": 16132, - "max": 20241 + "median": 15617, + "min": 15039, + "max": 16240 }, "smarm 24-thread": { "result": 200000, - "median": 110968, - "min": 109901, - "max": 113206 + "median": 155738, + "min": 149294, + "max": 157106 }, "tokio current_thread": { "result": 200000, - "median": 4874, - "min": 4812, - "max": 4915 + "median": 4820, + "min": 4771, + "max": 5091 }, "tokio multi-thread": { "result": 200000, - "median": 8667, - "min": 7713, - "max": 9942 + "median": 8403, + "min": 7445, + "max": 9752 } }, "fan_out_compute": { "smarm 1-thread": { "result": 33860, - "median": 13249, - "min": 13189, - "max": 13350 + "median": 13412, + "min": 13361, + "max": 13917 }, "smarm 24-thread": { "result": 33860, - "median": 2448, - "min": 2279, - "max": 3147 + "median": 2359, + "min": 2158, + "max": 2631 }, "tokio current_thread": { "result": 33860, - "median": 12319, - "min": 12299, - "max": 12460 + "median": 14138, + "min": 13512, + "max": 14236 }, "tokio multi-thread": { "result": 33860, - "median": 1605, - "min": 1363, - "max": 2695 + "median": 1532, + "min": 1455, + "max": 2447 } }, "ping_pong_oneshot": { "smarm 1-thread": { "result": 1000, - "median": 912, - "min": 875, - "max": 971 + "median": 983, + "min": 853, + "max": 1166 }, "smarm 24-thread": { "result": 1000, - "median": 1540, - "min": 1430, - "max": 1815 + "median": 1562, + "min": 1466, + "max": 1726 }, "tokio current_thread": { "result": 1000, - "median": 376, - "min": 360, - "max": 548 + "median": 421, + "min": 405, + "max": 634 }, "tokio multi-thread": { "result": 1000, - "median": 10736, - "min": 8365, - "max": 13093 + "median": 9254, + "min": 7836, + "max": 11613 } }, "spawn_storm_busy": { "smarm 1-thread": { "result": 10000, - "median": 106102, - "min": 95978, - "max": 111386 + "median": 108420, + "min": 107179, + "max": 110463 }, "smarm 24-thread": { "result": 10000, - "median": 69661, - "min": 67241, - "max": 72895 + "median": 49405, + "min": 48118, + "max": 51497 }, "tokio current_thread": { "result": 10000, - "median": 1150, - "min": 1141, - "max": 1180 + "median": 1157, + "min": 1152, + "max": 1194 }, "tokio multi-thread": { "result": 10000, - "median": 18821, - "min": 16107, - "max": 25494 + "median": 20476, + "min": 15912, + "max": 31254 } }, "mpsc_contention": { "smarm 1-thread": { "result": 320000, - "median": 3535, - "min": 3439, - "max": 3804 + "median": 6270, + "min": 6133, + "max": 6932 }, "smarm 24-thread": { "result": 320000, - "median": 36652, - "min": 33385, - "max": 39609 + "median": 34690, + "min": 32198, + "max": 38480 }, "tokio current_thread": { "result": 320000, - "median": 5510, - "min": 5402, - "max": 6584 + "median": 6022, + "min": 5901, + "max": 6185 }, "tokio multi-thread": { "result": 320000, - "median": 52301, - "min": 37540, - "max": 78902 + "median": 59561, + "min": 43293, + "max": 72976 } }, "many_timers": { "smarm 1-thread": { "result": 10000, - "median": 105353, - "min": 101581, - "max": 125061 + "median": 120756, + "min": 108228, + "max": 126568 }, "smarm 24-thread": { "result": 10000, - "median": 95839, - "min": 92306, - "max": 98854 + "median": 97810, + "min": 93054, + "max": 100845 }, "tokio current_thread": { "result": 10000, - "median": 12568, - "min": 12372, - "max": 12675 + "median": 12554, + "min": 12425, + "max": 13280 }, "tokio multi-thread": { "result": 10000, - "median": 16393, - "min": 15434, - "max": 17018 + "median": 16463, + "min": 15913, + "max": 17058 } }, "multi_thread_scaling": { "smarm 1-thread": { "result": 33860, - "median": 15063, - "min": 14963, - "max": 15957 + "median": 15086, + "min": 15046, + "max": 15274 }, "smarm 2-thread": { "result": 33860, - "median": 8075, - "min": 7799, - "max": 13446 + "median": 8057, + "min": 7948, + "max": 8227 }, "smarm 4-thread": { "result": 33860, - "median": 4396, - "min": 4312, - "max": 4650 + "median": 4476, + "min": 4353, + "max": 4605 }, "smarm 24-thread": { "result": 33860, - "median": 2278, - "min": 2145, - "max": 2480 + "median": 2383, + "min": 2231, + "max": 2868 }, "tokio multi 1-thread": { "result": 33860, - "median": 14203, - "min": 14163, - "max": 14723 + "median": 14301, + "min": 14176, + "max": 14484 }, "tokio multi 2-thread": { "result": 33860, - "median": 7346, - "min": 7143, - "max": 7587 + "median": 7293, + "min": 7190, + "max": 7455 }, "tokio multi 4-thread": { "result": 33860, - "median": 3782, - "min": 3699, - "max": 4305 + "median": 3768, + "min": 3690, + "max": 3861 }, "tokio multi 24-thread": { "result": 33860, - "median": 1757, - "min": 1255, - "max": 2058 + "median": 1585, + "min": 1312, + "max": 2239 } }, "deep_recursion": { "smarm 1-thread": { "result": 1, - "median": 227, - "min": 214, - "max": 1685 + "median": 240, + "min": 219, + "max": 2111 }, "smarm 24-thread": { "result": 1, - "median": 744, - "min": 706, - "max": 802 + "median": 782, + "min": 708, + "max": 983 }, "tokio current_thread": { "result": 1, - "median": 11, + "median": 10, "min": 10, "max": 12 }, "tokio multi-thread": { "result": 1, "median": 53, - "min": 43, - "max": 59 + "min": 40, + "max": 70 } }, "yield_in_hot_loop": { "smarm 1-thread": { "result": 1000000, - "median": 65826, - "min": 64361, - "max": 66076 + "median": 64650, + "min": 64154, + "max": 66049 }, "tokio current_thread": { "result": 1000000, - "median": 75553, - "min": 75338, - "max": 76179 + "median": 73761, + "min": 70903, + "max": 74957 } }, "uncontended_channel": { "smarm 1-thread": { "result": 1000000, - "median": 13502, - "min": 10935, - "max": 13626 + "median": 13745, + "min": 11201, + "max": 14048 }, "tokio current_thread": { "result": 1000000, - "median": 16994, - "min": 16968, - "max": 17030 + "median": 17067, + "min": 17054, + "max": 17092 } }, "catch_unwind_panics": { "smarm 1-thread": { "result": 10000, - "median": 108080, - "min": 105901, - "max": 122945 + "median": 109788, + "min": 108526, + "max": 113713 }, "smarm 24-thread": { "result": 10000, - "median": 11650, - "min": 11110, - "max": 12260 + "median": 13864, + "min": 12963, + "max": 14602 }, "tokio current_thread": { "result": 10000, - "median": 9680, - "min": 9437, - "max": 10924 + "median": 9624, + "min": 9407, + "max": 11185 }, "tokio multi-thread": { "result": 10000, - "median": 5625, - "min": 3051, - "max": 7275 + "median": 5224, + "min": 2805, + "max": 7833 } } } \ No newline at end of file diff --git a/src/runtime.rs b/src/runtime.rs index b693274..5a1c866 100644 --- a/src/runtime.rs +++ b/src/runtime.rs @@ -275,6 +275,7 @@ impl Default for Config { /// Lockless per-scheduler-thread counters. Written only by the owning thread; /// readable from any thread (introspection actor, tests). +#[repr(align(64))] pub struct SchedulerStats { /// PID index of the actor currently on-CPU, or `u32::MAX` when idle. pub current_pid_index: AtomicU32,