KVell icon indicating copy to clipboard operation
KVell copied to clipboard

some questions about paper

Open suxiao111 opened this issue 5 years ago • 9 comments

Hi,How did you experiment with bandwidth and CPU utilization for RocksDB?One more question,How is the time ratio of each step of the RocksDB in the merge process calculated? Thanks~

suxiao111 avatar Feb 17 '20 02:02 suxiao111

Hi,

Thanks for your interest.

We modified the db_bench tool to run YCSB in RocksDB. The code of the bench is here: https://github.com/theoanab/SILK-USENIXATC2019 (tools/db_bench_tools.cc). We configured the number of injection/compaction threads to saturate the CPU (number of threads must be significantly higher than number of cores).

For the ratios, we used perf. Percentages are directly what's reported by perf report.

BLepers avatar Feb 17 '20 02:02 BLepers

Hi, ok, I've got it. Thank you very much for your reply!

suxiao111 avatar Feb 17 '20 03:02 suxiao111

Hi, In your paper,Figure 3 shows the disk utilization and the CPU utilization on Config-Optane for RocksDB and Wired Tiger. Both systems saturate the CPU and do not take full advantage of the available bandwidth. And Figure 4 shows the throughput fluctuation over time for RocksDB and for WiredTiger.I have some questions:

  1. What is the relationship between the bandwidth in Figure 3 and the throughput in figure 4?How is the maximum IO bandwidth value obtained in Figure 3? 2.Figure 4 shows that RocksDB sustains on average 63K requests/s ,and the KV-item size is1KB ,so RocksDB sustains on average 63KB/s.But Figure 3 shows that RocksDB sustains on average 600KB/s.

Thank you very much~

suxiao111 avatar Feb 28 '20 10:02 suxiao111

1/ We measure the IO bw using iostat, and throughput directly in the systems. When IO goes up, throughput goes down. 2/ The 63MB/s -> 600MB/s is due to compactions (write amplification is a good keyword to search for :) )

BLepers avatar Mar 01 '20 04:03 BLepers

Yeah, thanks,write magnification is a serious matter, but the experimental setup and the benchmark in figure 3 and figure 4 is the same.They just have different experimental observation indexes(bw&throught).Because the KV-item size is1KB ,so I think the two values should be equal?

suxiao111 avatar Mar 01 '20 08:03 suxiao111

If RocksDB has a 10x write amplification, then 1KB translate into 10KB used BW. That's what we measure (disk level bandwidth). Or am I missing something in your question?

BLepers avatar Mar 01 '20 11:03 BLepers

Yeah, thanks,Maybe I'm not making it clear. Actually, The experimental setup in figure 3 and figure 4 is the same,including same system and same benchmark. Take RocksDB for example, Figure 3 shows that RocksDB sustains on average 600KB/s.But Figure 4 shows that RocksDB sustains on average 600KB/s?

suxiao111 avatar Mar 04 '20 14:03 suxiao111

I am not sure to understand your question. One figure shows the throughput (requests/s), and the other one the disk usage (MB/s). The disk usage is due to RocksDB writing updates (commit log + flushing the memory component), and performing compaction. You cannot guess the throughput from the disk usage or vice versa, it is very dependant on the workloads and timings. For instance, if a key is updated twice, the disk usage will be lower than if two different keys are updated, but the throughput will be the same. Not sure what you are trying to measure here.

BLepers avatar Mar 09 '20 23:03 BLepers

Good.! Your example is very specific. I understand what you mean.That's a good idea! Thank you very much~

suxiao111 avatar Mar 10 '20 07:03 suxiao111