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

Add a benchmarking mode #758

Open
tsoutsman opened this issue Dec 20, 2022 · 3 comments
Open

Add a benchmarking mode #758

tsoutsman opened this issue Dec 20, 2022 · 3 comments

Comments

@tsoutsman
Copy link
Member

tsoutsman commented Dec 20, 2022

Currently, benchmarking fundamental subsystems (e.g. the task subsystem) is hard. It'd be nice to have a configuration option to run a benchmarking application rather than the shell at startup. The mode would minimise the number of tasks spawned before the benchmark is run, improving the accuracy of benchmarks.

Ideally, there'd also be some automation to repeat benchmark runs, calculating averages, standard deviations, etc.

@amab8901
Copy link
Contributor

amab8901 commented Dec 21, 2022

Which of the subsystems are fundamental? Is it all the crates in the kernel directory?

I think flamegraph seems like a good choice of benchmarking tool. It can help us see at a glance where performance bottlenecks exist in the OS. Do you agree with my recommendation?

@tsoutsman
Copy link
Member Author

Which of the subsystems are fundamental? Is it all the crates in the kernel directory?

Mostly just the task subsystem. It's hard to test because everything is a task, and so any tasks not relevant to the benchmark impact the benchmark. For example, in #759 the benchmark tasks have to be pinned to core 3 so that they don't yield to the shell task.

I think flamegraph seems like a good choice of benchmarking tool. It can help us see at a glance where performance bottlenecks exist in the OS. Do you agree with my recommendation?

Flamegraph relies on perf or dtrace depending on the OS, neither of which are available on Theseus. Porting them would be non-trivial.

@amab8901
Copy link
Contributor

I found another benchmarker: bencher. It seems to be very lightweight with minimal dependencies (if any at all). Would this be a good choice?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 📋 Backlog
Development

No branches or pull requests

2 participants