Comments (5)
Last year, I posted out zero copy patches[1], but not got accepted.
The biggest concern is that the interface is too specific.
I plan to restart the work this year after further thinking & investigation.
[1] https://lore.kernel.org/linux-block/[email protected]/
from ublksrv.
When I run 4KB QD1 random write on them, the second approach >shows an additional ~20us average latency and 50x tail latency (110 vs 5900 p99.99).
zero copy usually makes a bit big difference for big sized IO, I remembered that difference starts to be observed since 64K IO.
For 4K IO, one time copy shouldn't have big effect.
I guess it is because of QD1.
The communication cost for QD1 can't be neglected, and ublk is supposed to perform well in high QD case.
from ublksrv.
Hi, I've also been experimenting with ublk recently.
If I use spdk to expose and nvme device over ublk, I find I get
IOPS=54.3k, BW=212MiB/s
lat (usec): min=16, max=125, avg=17.79, stdev= 1.65
vs the raw device
IOPS=89.7k, BW=350MiB/s
lat (usec): min=9, max=124, avg=10.75, stdev= 1.99
With 16QD I get
IOPS=209k, BW=817MiB/s
lat (usec): min=46, max=11941, avg=76.22, stdev=332.83
vs
IOPS=510k, BW=1993MiB/s
lat (usec): min=11, max=171, avg=31.20, stdev= 2.56
Are these the results which you'd expect to see?
from ublksrv.
Hi, I've also been experimenting with ublk recently.
If I use spdk to expose and nvme device over ublk, I find I get IOPS=54.3k, BW=212MiB/s lat (usec): min=16, max=125, avg=17.79, stdev= 1.65 vs the raw device IOPS=89.7k, BW=350MiB/s lat (usec): min=9, max=124, avg=10.75, stdev= 1.99
With 16QD I get IOPS=209k, BW=817MiB/s lat (usec): min=46, max=11941, avg=76.22, stdev=332.83
vs IOPS=510k, BW=1993MiB/s lat (usec): min=11, max=171, avg=31.20, stdev= 2.56
Are these the results which you'd expect to see?
No, definitely no, and the gap isn't supposed to be so big, at least
for 16QD.
What is the result when you run test on ublk-loop?
BTW, the performance improvement is in-progress:
- zero copy support
- bpf support
- in early development stage
The final goal is to align ublk perf with kernel driver, or the gap
is small enough.
Thanks,
from ublksrv.
What is the result when you run test on ublk-loop?
sudo $ublk add -t loop -f /dev/nvme0n1
With 16QD I get
IOPS=223k, BW=871MiB/s
lat (usec): min=25, max=447, avg=71.56
So a little better than my SPDK device, but not much.
The final goal is to align ublk perf with kernel driver, or the gap is small enough.
That would be great! Thanks for all your efforts on this btw, it's awesome!
Let me know if you ever need some testing.
Thanks
from ublksrv.
Related Issues (20)
- cannot link to pthread HOT 3
- tgt_loop: hardcoded 512 logical block size causes zram unaligned I/O failures HOT 6
- [build error]gettimeofday is undefined HOT 4
- [build error] undefined reference to __find_slice() HOT 8
- Cannot link to pthread HOT 2
- Can we let ublk support lower gcc version HOT 8
- An easier way to enable ublksrv log functions HOT 2
- runtime error need help when trying to build ublk server in ubuntu kernel 6.1.9 HOT 19
- ublk-qcow2 work with kvm guests HOT 3
- Remove lib/ublksrv_aio.c HOT 3
- Documentation of the API functions HOT 5
- Add tests cases in blktests HOT 3
- ublksrv_ctrl_del_dev block HOT 2
- Will be v1.1 released? HOT 2
- Should we enable gnutls? HOT 2
- FR: Improve testing for users/builders HOT 1
- ublk del --all always returns failure HOT 2
- ublk can't get sqe HOT 7
- failed to create ublk device with qcow2 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ublksrv.