I have redone the perf reports with tree and missing debug symbols.
Here my analysis:
fio + aioengine + krbd : 35000iops randread 4K
-----------------------------------------------
TOP
---
87,1% idle : 104% cpu total usage
2132 root 20 0 97740 4000 3612 S 47,9 0,0 0:14.50fio
2134 root 20 0 0 0 0 S 42,6 0,0 0:12.8 kworker/0:2
48624 root 20 0 0 0 0 S 6,3 0,0 0:54.9 kworker/2:1
48396 root 20 0 0 0 0 S 5,3 0,0 0:13.14kworker/4:0
3 root 20 0 0 0 0 S 4,0 0,0 2:34.53ksoftirqd/0
48387 root 20 0 0 0 0 S 1,3 0,0 0:07.82kworker/6:1
2130 root 20 0 67788 38m 38m S 0,3 0,1 0:00.09
perf
----
+ 24,23% kworker/0:2 [kernel.kallsyms]
+ 21,47% swapper [kernel.kallsyms]
+ 21,10% fio [kernel.kallsyms]
+ 5,37% fio fio
+ 5,36% fio [libceph]
+ 4,93% kworker/2:1 [kernel.kallsyms]
+ 4,89% kworker/0:2 [libceph]
+ 2,08% fio [rbd]
+ 1,80% kworker/0:2 [rbd]
+ 1,69% swapper [tg3]
+ 0,78% kworker/0:2 [tg3]
+ 0,74% kworker/4:0 [kernel.kallsyms]
+ 0,73% ksoftirqd/0 [kernel.kallsyms]
+ 0,66% kworker/2:1 [libceph]
+ 0,60% kworker/3:1 [kernel.kallsyms]
...
I think that kworker/0:2 is main rbd kernel management : 42% cpi
FIO + RBD ENGINE : 35000iops randread 4K
------------------------------------------
TOP
---
28%idle : 576% cpu total usage
1231 root 20 0 922m 38m 35m S 576,1 0,1 1:28.96 fio
3 root 20 0 0 0 0 S 1,3 0,0 2:27.24 ksoftirqd/0
perf
----
+ 25,00% fio [kernel.kallsyms]
+ 24,84% fio libc-2.13.so -----> malloc,free,... from fio rbdengine
+ 16,92% fio librados.so.2.0.0
+ 12,68% swapper [kernel.kallsyms]
+ 9,87% fio librbd.so.1.0.0
+ 4,64% fio libpthread-2.13.so
+ 2,33% fio libstdc++.so.6.0.17
+ 1,88% fio fio
librados+ librd = 26,79% of 576% = 154% cpu.
So, seem that librbd+librados use 3x more cpu than krbd. Is it normal ????
For fio-rbd engine, seem that it's missing a lot of optimisations.
malloc,free take around 25% of 576% : 144%cpu
other seem to be related to fio code too.
Alexandre
krbd-reportree.txt.gz
Description: GNU Zip compressed data
rbd-reporttree.txt.gz
Description: GNU Zip compressed data
