async-rs / async-rs/async-std

Performance Regression with async-std > 1.6.2

Open
#892 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
4.1k
Forks
339
PR merge metrics
No merged PRs in 30d

Description

Hello Everyone,

First of all thanks very much for the great work on async-std. We are making heavy use of this framework in [zenoh](http://zenoh.io) and have remarked a major performance drop when upgrading from 1.6.2. Whey I say major I mean that our throughput for in some cases is divided by two.

We have identified that the performance issue is introduced on the publishing side and to highlight the huge difference in the cpu time taken by async 1.6.5 vs that taken by 1.6.2 we have made some flames graphs collecting **perf** data while running our throughput performance test.

The exact command used to collect perf data is included below and the code was compiled in release mode:

```
$ perf record --call-graph dwarf,16384 -e cpu-clock -F 997 ./target/release/examples/zn_pub_thr 8
```

The resulting flame graphs are available [here for 1.6.2](https://drive.google.com/file/d/1NqJ1iO_3WVCseetHrDD9Wtk6Iszr7vIC/view?usp=sharing) and [here for 1.6.5](https://drive.google.com/file/d/1NnjBekSFD1NeFYHW3kxuF_3xYvnIz30s/view?usp=sharing).

[zenoh](http://zenoh.io) GitHub depository is [https://github.com/eclipse-zenoh/zenoh/tree/rust-master](https://github.com/eclipse-zenoh/zenoh/tree/rust-master)

As you will see from the flame graphs the as core::future::future::Future>::poll takes very little time on 1.6.2 and almost 50% of the time on 1.6.5.

I know that there have been changes in the scheduler, maybe we need to change something on our side. In any case any insight will be extremely welcome.

Thanks very much in advance!

Keep the Good Hacking!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.