[rust-dev] Seemingly Poor Scalability of M:N Scheduler

Alex Crichton alex at crichton.co
Fri Jul 11 10:41:52 PDT 2014


This is a known performance bug in the green schedulers being tracked
at https://github.com/rust-lang/rust/issues/11730.

To see the difference, you can run with RUST_THREADS=1 when using the
green scheduler.

On Fri, Jul 11, 2014 at 1:39 PM, Chandru <chandru.in at gmail.com> wrote:
> I tried the rust-http's comparison with go from here.
> https://github.com/chris-morgan/rust-http/tree/master/comparisons
>
> Using the default code, which I guess uses 1:1 scheduling, rust falls behind
> go when concurrency goes greater than the number of cores (4). I guess this
> is to be expected as context switches increase without additional
> parallelism.
>
> go 1 wrk 7856.76
> rust 1 wrk 19617.39
> go 2 wrk 20364.92
> rust 2 wrk 30591.88
> go 3 wrk 30408.15
> rust 3 wrk 45847.69
> go 4 wrk 41953.29
> rust 4 wrk 53632.75
> go 8 wrk 56632.79
> rust 8 wrk 54660.72
> go 16 wrk 58263.69
> rust 16 wrk 54906.18
> go 32 wrk 57773.54
> rust 32 wrk 56682.38
>
> However, on switching to M:N with this change,
>
> #![feature(phase)]
> #[phase(plugin)]
> extern crate green;
>
> green_start!(main)
>
> rust seems to be stuck around 25K req/s while go's throughput goes much
> higher.
>
> go 1 wrk 7850.23
> rust 1 wrk 24361.64
> go 2 wrk 20478.89
> rust 2 wrk 23349.38
> go 3 wrk 30592.79
> rust 3 wrk 24232.2
> go 4 wrk 42165.1
> rust 4 wrk 25950.4
> go 8 wrk 56540.86
> rust 8 wrk 27284.01
> go 16 wrk 57957.76
> rust 16 wrk 26275.33
> go 32 wrk 57611.55
> rust 32 wrk 25674.82
>
> Am I reading this wrong or does it indicate some bottleneck in the M:N
> scheduler?
>
> --
> Chandra Sekar.S
>
> _______________________________________________
> Rust-dev mailing list
> Rust-dev at mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev
>


More information about the Rust-dev mailing list