-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Speedup CI #5691
Speedup CI #5691
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
(I canceled old CI runs on this PR) |
Also, the arm-unknown-linux-gnueabihf1 in cross-test probably needs to be changed to armv5te-unknown-linux-gnueabi. It seems it was for testing platforms without AtomicU64, which is probably incorrect because arm-unknown-linux-gnueabihf has AtomicU64. ARM targets that do not have AtomicU64 are armv5te-unknown-linux-{gnu,musl,uclibc}eabi and arm-linux-androideabi (and some bere-metal targets). tokio/.github/workflows/ci.yml Lines 323 to 329 in 70364b7
Footnotes |
Thank you, I've updated PR as you requested. |
BTW, the performance of Valgrind-related tests is currently unstable and sometimes takes a long time, but I guess this should be fixed by passing tokio/.github/workflows/stress-test.yml Line 41 in 70364b7
tokio/.github/workflows/ci.yml Line 173 in 70364b7
tokio/.github/workflows/ci.yml Line 182 in 70364b7
|
Thanks, I've added this as instructed and it indeeds runs much faster. |
According to my observation of recent CI runs, this PR reduces workflow |
@taiki-e I've rebased this PR and removed the unstable sparse registries environment variable |
cc @taiki-e @carllerche This PR has been stale for quite some time. Thanks! |
@Darksonn Seems like disabling feature |
Yes, see tokio-rs/mio#1676. |
Thanks @Darksonn ! |
@carllerche Newly introduced self-tuning and Edit: I think this is because qemu doesn't like multi-threaded program. |
It seems test on i686 with Mutex-based AtomicU64 is hanging (it does not use QEMU): https://github.com/tokio-rs/tokio/actions/runs/5222355294/jobs/9427778431?pr=5691 |
So we don't need that I would try removing that. |
No, it installs linker and libraries for i686 as the comment says. tokio/.github/workflows/ci.yml Lines 393 to 394 in c5d52c1
|
Thanks! |
We previously used tokio/.github/workflows/ci.yml Line 397 in c5d52c1
|
Ok, I've added it back. |
Thanks, this seems to fix the problem: https://github.com/tokio-rs/tokio/actions/runs/5235492644/jobs/9452384654?pr=5691 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks @NobodyXu!
CI "Test hyper (macos-latest)" failed due to:
looks like just a temporary network failure. |
Hmm, is nextest not handling custom targets correctly? In addition to the following warning, all dependencies are recompiled when doctest is built.
https://github.com/tokio-rs/tokio/actions/runs/5244982846/jobs/9472222567#step:7:1274 Although it probably wouldn't be difficult for nextest to add support for custom targets (probably basically just porting the logic around this to nextest-runner). |
@taiki-e I opened a feature request in nextest nextest-rs/nextest#887 |
@taiki-e cargo-nextest v0.9.54 has released which support custom target. I triggered the PR before new release of install-action is cut which didn't include cargo-nextest v0.9.54 can you re-run the tests so that it uses latest nextest? |
Merge conflict resolved, this PR is now mergeable. |
- Pass `--no-deps` to `cargo-clippy` - Use `dtolnay/rust-toolchain@stale` instead of `dtolnay/rust-toolchain@master` - Use dtolnay/rust-toolchain instead of `rustup` directly - Use `cargo-nextest` in job test to speedup testing - Use `cargo-nextest` in job test-unstable to speedup testing - Use `cargo-nextest` in job test-unstable-taskdump to speedup testing - Use `cargo-nextest` in job no-atomic-u64 to speedup testing - Use `cargo-nextest` in job check-unstable-mt-counters - Run `cargo check --benches` for `benches/` in job test Since the benchmark is not run - Run `cargo-check` instead of `cargo-build` in job test-parking_lot since no test is run - Run `cargo-check` instead of `cargo-build` in job no-atomic-u64 - Run `Swatinem/rust-cache@v2` after `taiki-e/install-action@v2` to avoid caching pre-built artifacts downloaded by it. - Use `Swatinem/rust-cache@v2` in job no-atomic-u64 - Add concurrenty group to cancel outdated CI - Use `taiki-e/setup-cross-toolchain-action@v1` in job cross-test instead of cross, so that we can use `cargo-nextest` to run tests in parallel. Also use `Swatinem/rust-cache@v2` to cache artifacts. - Use `Swatinem/rust-cache@v2` in job cross-check to speedup ci. - Fix job `cross-test`: Use `armv5te-unknown-linux-gnueabi` for no-atomic-u64 testing instead of `arm-unknown-linux-gnueabihf`, which actually has atomic-u64 - Rm use of `cross` in job `cross-check` Since it does not run any test, it does not need the `cross-rs` toolchain as tokio does not use any external C/C++ library that require `gcc`/`clang` to compile. - Add more recognizable name for steps in job cross-test - Split job `test` into `test-{tokio-full, workspace-all-features, integration-tests-per-feature}` - Split job `no-atomic-u64` into `no-atomic-u64-{test, check}` - Parallelize job `features` by using matrix - Split `cross-test` into `cross-test-{with, without}-parking_lot` - Speedup job `cross-test-*` and `no-atomic-u64-test` by running `cargo-test` with `-- --test-threads 1` since `qemu` userspace emulation has problems running binaries with many threads. - Speedup workflow `stress-test.yml` and job `valgrind` in workflow `ci.yml` by passing `--fair-sched=yes` to `valgrind`. - Speedup job `test-hyper`: Cache `./hyper/target` instead of caching `./target`, which is non-existent. - Set `RUST_TEST_THREADS=1` to make sure `libtest` only use one thread so that qemu will be happy with the tests. This is applied to `cross-test-with(out)-parking_lot, no-atomic-u64-test`. - Apply suggestions from code review Co-authored-by: Taiki Endo <te316e89@gmail.com> Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
Thanks! |
Motivation
tokio CI is quite slow.
Solution
cargo-nextest
to speedup testingcargo-check
instead ofcargo-build
andcargo test --no-run
.cargo-clippy
with--no-deps
CARGO_UNSTABLE_SPARSE_REGISTRY
totrue
so that nightly toolchain would use sparse crates.io registriestaiki-e/install-action@v2
Swatinem/rust-cache@v2
in job no-atomic-u64Signed-off-by: Jiahao XU Jiahao_XU@outlook.com