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

Chandru chandru.in at gmail.com
Fri Jul 11 10:39:27 PDT 2014


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/rust-dev/attachments/20140711/dff2b578/attachment.html>


More information about the Rust-dev mailing list