Read blocks transaction takes a lot of cpu time
And if we look at flame graphs, we will see that mixed index reading takes a lot of CPU, but, on the other hand, mixed index is very sparse. We have approximately only 6% blocks in the mixed index, so most reads don't read any useful information.
We can add bloom or compressed bit mask filter for mixed index.
I wrote prototype of this optimization and with randrw 4k load it shows such results:
partition tablet consumes less CPU time by 28%
ReadBlocks Transaction ExecuteCPUTime and ReadBytes metrics
and compressed bitmap version consumes only ~10mb of RAM for 512 GB disk. So it is very cheap.
Read blocks transaction takes a lot of cpu time
And if we look at flame graphs, we will see that mixed index reading takes a lot of CPU, but, on the other hand, mixed index is very sparse. We have approximately only 6% blocks in the mixed index, so most reads don't read any useful information.
We can add bloom or compressed bit mask filter for mixed index.
I wrote prototype of this optimization and with randrw 4k load it shows such results:
partition tablet consumes less CPU time by 28%
ReadBlocks Transaction ExecuteCPUTime and ReadBytes metrics
and compressed bitmap version consumes only ~10mb of RAM for 512 GB disk. So it is very cheap.