GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-82054: Parallel test sharding of test_asyncio and test_multiprocessing by zitterbewegung · Pull Request #103934 · python/cpython

Conversation

@zitterbewegung

@zitterbewegung zitterbewegung commented Apr 27, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Summary:

This runs test_asyncio and test_multiprocessing sub-tests in parallel using sharding from cinder. These two tests are typically the long-poles in runs because they are modules with a lot of further sub-tests run serially. By breaking out the sub-tests as independent modules we can run a lot more in parallel.

After porting we can see the direct impact on a multicore system.

  • Without this change:
    • Running make test is 5 min 26 seconds
  • With this change:
    • Running make test takes 3 min 39 seconds

The drawbacks are that this implementation is hacky and due to the sorting of the tests it obscures when the asyncio tests occur and involves changing CPython test infrastructure but, the time saved it is worth it . I believe this is a good tradeoff but in the future this could be refactored.

original_time_cpython.txt

optimized_asyncio.txt

optimized_multiprocess_asyncio.txt

  • Issue: unittest: execute tests in parallel #82054

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
zitterbewegung and others added 8 commits April 25, 2023 18:02
@zitterbewegung
pythongh-82054: Executing tests in parallel by sharding.
6901a03
@zitterbewegung
Fixing syntax error in commit
851c5f6
@blurb-it
📜🤖 Added by blurb_it.
95799b6
@zitterbewegung
pythongh-82054 Removing news entry since end users won't be impacted.
f4b476b
@zitterbewegung
Update runtest.py to not have test_compiler since this does nothing.
9365e99
@carljm
Merge branch 'main' into main
949ec86
@zitterbewegung
Merge branch 'python:main' into main
16a1c87
@zitterbewegung
This allows the test runner to execute test_multiprocessing and test_…
9ffd6b7
…asyncio in parallel

By sharding the individual tests in test_multiprocessing and test_asyncio we are able to reduce considerably the time it takes to run the whole test suite.
@bedevere-bot bedevere-bot mentioned this pull request Apr 27, 2023
unittest: execute tests in parallel #82054
Closed
@bedevere-bot bedevere-bot added the awaiting review label Apr 27, 2023
zitterbewegung added 3 commits April 27, 2023 10:40
@zitterbewegung
Update runtest.py
f5a79cc
Fixing formatting in SPLITTESTDIRS
@zitterbewegung
Merge branch 'main' into parallel_test_sharding
2206a0f
@zitterbewegung
Merge branch 'main' into parallel_test_sharding
839e06b
@zitterbewegung zitterbewegung closed this Apr 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

awaiting review

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@zitterbewegung @bedevere-bot @carljm
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.