You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jul 6, 2023. It is now read-only.
Use 16k pages for next versions of OrientDB by default
Goals:
Improve speed of read/writes operation by decreasing of default size of database page
Non-Goals:
Success metrics:
Improve numbers of performance benchmarks
Motivation:
If we decrease default size of cache page we decrease amplification of read and write operations.
Description:
According to our investigation during the database load:
Most of the non-leaf index pages are placed into the disk cache, and leaf pages are accessed using random IO pattern.
The difference between random IO and sequential IO much smaller on modern SSDs and in the case of big pages like 64KB time is needed to write page can be comparable with random access overhead.
All writes which we perform on the database are performed using sequential operations if possible.
The smaller size of pages the better efficiency of disk cache.
All of this suggest do decrease page size from 64KB which is huge to 16 KB, which should increase a speed of random IO operations and should not affect or should improve the speed of write operations.
Let's check all those speculations by real YCSB benchmark. If we run following YCSB loads (mixed load (50% writes, 50% reads),
mostly read load (5% writes, 95% reads), read only load (100% of reads)) in case page sizes are 16 KB and 64 KB we get following
results:
Performance gain - read throughput is improved at 1.9 times, read latency is improved at 14 times !,
write throughput is improved at 1.45 times, write latency is improved at 26 times !
Performance gain: write throughput is almost the same, write latency is improved at 2.6 times.
Read throughput 1.32 times better, read latency is improved at 3.26 times.
Reference:
https://github.com/orientechnologies/orientdb-labs/blob/master/OEP_9.md
Summary:
Use 16k pages for next versions of OrientDB by default
Goals:
Improve speed of read/writes operation by decreasing of default size of database page
Non-Goals:
Success metrics:
Improve numbers of performance benchmarks
Motivation:
If we decrease default size of cache page we decrease amplification of read and write operations.
Description:
According to our investigation during the database load:
All of this suggest do decrease page size from 64KB which is huge to 16 KB, which should increase a speed of random IO operations and should not affect or should improve the speed of write operations.
Let's check all those speculations by real YCSB benchmark. If we run following YCSB loads (mixed load (50% writes, 50% reads),
mostly read load (5% writes, 95% reads), read only load (100% of reads)) in case page sizes are 16 KB and 64 KB we get following
results:
Load of data
64k pages
Total time: 18 hrs 32 mins 59.659 secs = 66 721 secs
16k pages
Total time: 11 hrs 31 mins 58.591 secs = 41 461 secs
Performance gain - 16k pages 1.61 times faster on load
Mixed load 50% of writes, 50% of reads
64k pages
Thoroughput = 3494 op/secs
Thoroughput = 1 088 op/secs
16k pages
Thoroughput = 6668 op/secs
Thoroughput = 1 587 op/secs
Performance gain - read throughput is improved at 1.9 times, read latency is improved at 14 times !,
write throughput is improved at 1.45 times, write latency is improved at 26 times !
Read mostly load 5% writes, 95% reads
64k pages
Thoroughput = 3 421 op/secs
Thoroughput = 10 767 op/secs
16k pages
Thoroughput = 3 210 op/secs
Thoroughput = 14 288 op/secs
Performance gain: write throughput is almost the same, write latency is improved at 2.6 times.
Read throughput 1.32 times better, read latency is improved at 3.26 times.
Read only workload
64k pages
Thoroughput = 16 538 op/secs
16k pages
Thoroughput = 30 327 op/secs
Performance gain - read throughput 1.8 times better, read latency is improved at 2.2 times
Alternatives:
Risks and assumptions:
Maximum key size will be decreased from 10240 to about 5120
Impact matrix
The text was updated successfully, but these errors were encountered: