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

Use fewer borrows in ExtentInner API #1147

Merged
merged 1 commit into from
Feb 6, 2024

Conversation

mkeeter
Copy link
Contributor

@mkeeter mkeeter commented Feb 5, 2024

This PR tweaks the ExtentInner API to use fewer borrows from the caller's frame.

It's a building block for making extents independent and capable of executing their own IOs in parallel.

This is theoretically slightly less efficient, because it allocates an extra Vec or two, but I doubt there's any real impact; I'm waiting for Madrid to come back up to get some performance numbers.

@mkeeter mkeeter requested review from jmpesp and leftwo February 5, 2024 22:04
@mkeeter
Copy link
Contributor Author

mkeeter commented Feb 6, 2024

I don't see any performance concerns here.

Before

4K WRITE: bw=19.7MiB/s (20.7MB/s), 19.7MiB/s-19.7MiB/s (20.7MB/s-20.7MB/s), io=1185MiB (1242MB), run=60011-60011msec
1M WRITE: bw=596MiB/s (625MB/s), 596MiB/s-596MiB/s (625MB/s-625MB/s), io=35.0GiB (37.5GB), run=60064-60064msec
4M WRITE: bw=722MiB/s (757MB/s), 722MiB/s-722MiB/s (757MB/s-757MB/s), io=42.5GiB (45.6GB), run=60202-60202msec

4K READ: bw=27.3MiB/s (28.6MB/s), 27.3MiB/s-27.3MiB/s (28.6MB/s-28.6MB/s), io=1635MiB (1715MB), run=60004-60004msec
1M READ: bw=513MiB/s (538MB/s), 513MiB/s-513MiB/s (538MB/s-538MB/s), io=30.1GiB (32.3GB), run=60049-60049msec
4M READ: bw=426MiB/s (446MB/s), 426MiB/s-426MiB/s (446MB/s-446MB/s), io=25.0GiB (26.9GB), run=60237-60237msec

After

4K WRITE: bw=15.8MiB/s (16.6MB/s), 15.8MiB/s-15.8MiB/s (16.6MB/s-16.6MB/s), io=949MiB (995MB), run=60025-60025msec
1M WRITE: bw=547MiB/s (573MB/s), 547MiB/s-547MiB/s (573MB/s-573MB/s), io=32.1GiB (34.4GB), run=60049-60049msec
4M WRITE: bw=777MiB/s (815MB/s), 777MiB/s-777MiB/s (815MB/s-815MB/s), io=45.6GiB (49.0GB), run=60098-60098msec

4K READ: bw=29.5MiB/s (30.9MB/s), 29.5MiB/s-29.5MiB/s (30.9MB/s-30.9MB/s), io=1798MiB (1885MB), run=60968-60968msec
1M READ: bw=529MiB/s (555MB/s), 529MiB/s-529MiB/s (555MB/s-555MB/s), io=31.0GiB (33.3GB), run=60062-60062msec
4M READ: bw=446MiB/s (468MB/s), 446MiB/s-446MiB/s (468MB/s-468MB/s), io=26.2GiB (28.2GB), run=60231-60231msec

There's a bit of fluctuation up and down, but nothing obviously terrible.

@mkeeter mkeeter merged commit 18acb09 into oxidecomputer:main Feb 6, 2024
18 checks passed
@mkeeter mkeeter deleted the standalone-extent-fns branch February 6, 2024 18:20
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.

3 participants