[ 
https://issues.apache.org/jira/browse/IGNITE-23240?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ivan Bessonov updated IGNITE-23240:
-----------------------------------
    Attachment: Screenshot from 2024-09-20 10-42-49.png

> Ignite 3 new log storage
> ------------------------
>
>                 Key: IGNITE-23240
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23240
>             Project: Ignite
>          Issue Type: Epic
>            Reporter: Ivan Bessonov
>            Priority: Major
>              Labels: ignite-3
>         Attachments: Screenshot from 2024-09-20 10-38-53.png, Screenshot from 
> 2024-09-20 10-38-57.png, Screenshot from 2024-09-20 10-42-49.png, Screenshot 
> from 2024-09-20 10-43-09.png
>
>
> h1. Preface
> Current implementation, based on {{{}RocksDB{}}}, is known to be way slower 
> then it should be. There are multiple obvious reasons for that:
>  * Writing into WAL +and+ memtable
>  * Creating unique keys for every record
>  * Inability to efficiently serialize data, we must have an intermediate 
> state before we pass data into {{{}RocksDB{}}}'s API.
> h1. Benchmarks
> h3. Local benchmarks
> Local benchmarks ({{{}LogStorageBenchmarks{}}}) have been performed on my 
> local environment with fsync disabled. I got the following results:
>  * {{{}Logit{}}}:
>  
> {noformat}
> Test write:
>   Log number      : 1024000
>   Log Size        : 16384
>   Batch Size      : 100
>   Cost time(s)    : 23.541
>   Total size      : 16777216000
>   Throughput(bps) : 712680684
>   Throughput(rps) : 43498
> Test read:
>   Log number      : 1024000
>   Log Size        : 16384
>   Batch Size      : 100
>   Cost time(s)    : 3.808
>   Total size      : 16777216000
>   Throughput(bps) : 4405781512
>   Throughput(rps) : 268907
> Test done!{noformat}
>  * {{{}RocksDB{}}}:
> {noformat}
> Test write:
>   Log number      : 1024000
>   Log Size        : 16384
>   Batch Size      : 100
>   Cost time(s)    : 178.785
>   Total size      : 16777216000
>   Throughput(bps) : 93840176
>   Throughput(rps) : 5727
> Test read:
>   Log number      : 1024000
>   Log Size        : 16384
>   Batch Size      : 100
>   Cost time(s)    : 13.572
>   Total size      : 16777216000
>   Throughput(bps) : 1236163866
>   Throughput(rps) : 75449
> Test done!{noformat}
> While testing on local environment is not optimal, is still shows a huge 
> improvement in writing speed (7.5x) and reading speed (3.5x). Enabling 
> {{fsync}} sort-of equalizes writing speed, but we still expect that simpler 
> log implementation would be faster dues to smaller overall overhead.
> h3. Integration testing
> Benchmark for 3 servers and 1 client writing data in multiple threads show 
> the following.
> {{{}RocksDB{}}}:
>  
>  
> {{{}Logit{}}}:
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to