Skip to content
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

Support multi-queue and load balance for multi-core Arceos #82

Merged
merged 71 commits into from
Jun 9, 2023

Conversation

131131yhx
Copy link

New feature(s):

  1. Split the run_queue into one queue per hart.
  2. Add loadbalance crate (with some modifications in scheduler crate) with a Zircon style implementation.
  3. Support automatically choice of hart to run for each new tasks.
  4. Support thread steal mechanism between different harts.
  5. Add new task called unbalance. It has many unbalance payloads to run, simulating real world parallel apps like SpMV.
    Achievement(s):
  6. The thread steal mechanism speed up by 10% in task unbalance. Moreover, current version is slightly faster than single run_queue even with only 4 cores in unbalance task.
  7. The high concurrence of I/O thread wake up simulation obtains more than 50% time reduction on SMP=8 ACCEL=y compared to single run queue

@chyyuu chyyuu merged commit 12a4706 into arceos-org:dev Jun 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants