Skip to content

Investigate block device performance. #1529

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

Closed
sandreim opened this issue Jan 20, 2020 · 4 comments
Closed

Investigate block device performance. #1529

sandreim opened this issue Jan 20, 2020 · 4 comments
Assignees
Labels
Priority: High Indicates than an issue or pull request should be resolved ahead of issues or pull requests labelled

Comments

@sandreim
Copy link
Contributor

Previous benchmarks showed low performance when running a 4K random read test with fio.

We need to measure current I/O performance with different block sizes on the refactoring/epoll branch, identify possible bottlenecks and options for improving performance.

@sandreim sandreim added Performance: IO Priority: High Indicates than an issue or pull request should be resolved ahead of issues or pull requests labelled labels Jan 20, 2020
@sandreim sandreim self-assigned this Jan 20, 2020
@dianpopa
Copy link
Contributor

We should keep in mind that these tests also need to be exercised on aarch64.

@sandreim
Copy link
Contributor Author

sandreim commented Feb 11, 2020

There are multiple issues which bring down the overall performance of our block device emulation. I am listing them below sorted by their impact (from high to low):

  • Serial block file I/O
  • Guest interrupt rate
  • Double processing of virtio descriptors (in parse() and execute())

Serializing the block file I/O also serializes the latencies of each IO request resulting in very low throughput (4-5k IOPS) on nvme SSDs. This also temporarly blocks our emulation thread, meaning increased latency in all other emulated devices. Possible solutions:

An increased guest interrupt rate adds significant overhead in the guest due to frequent context switches. Possible solutions: driver and device event suppression / Interrupt mitigation

@andreeaflorescu
Copy link
Member

@sandreim do we already have an issue for improving block performance?

@sandreim
Copy link
Contributor Author

@andreeaflorescu Yes we do have #1600.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: High Indicates than an issue or pull request should be resolved ahead of issues or pull requests labelled
Projects
None yet
Development

No branches or pull requests

3 participants