Tags: texascloud/ractor
Tags
Move to oneshot's instead of bounded channels of size 1 (slawlor#263) * Before ``` 9.82 real 4.19 user 3.78 sys 1353138176 maximum resident set size 0 average shared memory size 0 average unshared data size 0 average unshared stack size 90426 page reclaims 3 page faults 0 swaps 0 block input operations 0 block output operations 0 messages sent 0 messages received 0 signals received 1870 voluntary context switches 524687 involuntary context switches 40331547246 instructions retired 23204316450 cycles elapsed 1351667776 peak memory footprint ``` After: ``` 6.29 real 2.73 user 2.32 sys 1121075200 maximum resident set size 0 average shared memory size 0 average unshared data size 0 average unshared stack size 76399 page reclaims 3 page faults 0 swaps 0 block input operations 0 block output operations 0 messages sent 0 messages received 0 signals received 10887 voluntary context switches 413558 involuntary context switches 29945793283 instructions retired 14556521293 cycles elapsed 1119671040 peak memory footprint ``` * version bump
More memory improvements, but smaller. No API changes (slawlor#261) This change further reduces the memory utilization of the actors, down to ~ 13KB. However it also has the added benefit that some benchmarks are showing additional wins in message processing latencies. ``` Benchmarking Waiting on 100 actors to process first message: Warming up for 3.0000 s Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 5.5s, enable flat sampling, or reduce sample count to 60. Waiting on 100 actors to process first message time: [804.50 µs 818.01 µs 833.69 µs] change: [-34.074% -26.977% -21.803%] (p = 0.00 < 0.05) Performance has improved. Found 4 outliers among 100 measurements (4.00%) 3 (3.00%) high mild 1 (1.00%) high severe Waiting on 1000 actors to process first message time: [9.6242 ms 9.7702 ms 9.9224 ms] change: [-8.5173% -5.9246% -3.3614%] (p = 0.00 < 0.05) Performance has improved. Found 3 outliers among 100 measurements (3.00%) 1 (1.00%) low mild 2 (2.00%) high mild Waiting on 100000 messages to be processed time: [17.640 ms 17.759 ms 17.881 ms] change: [-3.1347% -2.0925% -1.0043%] (p = 0.00 < 0.05) Performance has improved. ``` No change to other metrics.
Some of this is unavoidable due to each actor having 3 bounded and 1 … …unbounded messaging channels, but the supervision logic alone had 3 dashmaps inside it. The monitoring functionality is pretty limited at-best, and we have no active use-cases for it, so dropping it and moving to a simple locked HashMap has allowed us to drop the heap space per actor to a little over 9KB (slawlor#260) Additionally in running benchmarks against `main` we see large perf wins on actor creation time ``` Running benches/actor.rs (target/release/deps/actor-464b0ad86c94b02f) Gnuplot not found, using plotters backend Creation of 100 actors time: [269.21 µs 282.84 µs 298.29 µs] change: [-66.867% -64.514% -61.953%] (p = 0.00 < 0.05) Performance has improved. Found 15 outliers among 100 measurements (15.00%) 9 (9.00%) high mild 6 (6.00%) high severe Creation of 10000 actors time: [25.273 ms 25.862 ms 26.484 ms] change: [-55.663% -53.735% -51.795%] (p = 0.00 < 0.05) Performance has improved. Found 1 outliers among 100 measurements (1.00%) 1 (1.00%) high mild ```
Adding handling if the actor fails during pre_start that it doesn't p… …oison the named and pid registries. (slawlor#243) * Adding handling if the actor fails during pre_start that it doesn't poison the named and pid registries. Resolves slawlor#240 * Expose job and worker options for custom routing and queuing implementations. This allows people implementing their own traits for routing and queueing to have access to the necessary worker properties to route jobs, as well as necessary job properties.
Updating defunct docs from new factory migration (slawlor#241) * Updating defunct docs from new factory migration * Version bump to 0.10.1
Prep for 0.10.0 release (slawlor#238) * Update readmes for 0.10.0 release * Adjust inconsistent naming with `SpawnErr` and `ActorErr` since panic isn't the only "failure", actors can return a regular Error as well Resolves slawlor#164
Update panic documentation on abort. Resolves slawlor#214 (slawlor#215)
PreviousNext