[ 
https://issues.apache.org/jira/browse/RATIS-2320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18069683#comment-18069683
 ] 

Tsz-wo Sze commented on RATIS-2320:
-----------------------------------

Tried to benchmark multiple threaded writers but the results were not good, 
i.e. the single thread cases are better.
- https://github.com/szetszwo/ratis/tree/MultiFileWriterBenchmark
- org.apache.ratis.benchmark.ReadWriteBenchmark

{code}
totalSize: 2GB
chunkSize: 128kB
tmpDir   : tmp_ReadWriteBenchmark
  SingleFileDoubleByteBufferThread         [random]:  2148.606 ms
  SingleFileDoubleByteBufferExecutor       [random]:  2179.302 ms
  SingleFileDoubleByteArrayThread          [random]:   592.518 ms
  SingleFileDoubleByteArrayExecutor        [random]:   468.007 ms
  MultiFileByteArray_2                     [random]:   970.278 ms
  MultiFileByteBuffer_2                    [random]:  1410.135 ms
  SingleFileByteArray                      [random]:  1478.742 ms
  SingleFileByteBuffer                     [random]:  2687.411 ms
Sorted: [SingleFileDoubleByteArrayExecutor, SingleFileDoubleByteArrayThread, 
MultiFileByteArray_2, MultiFileByteBuffer_2, SingleFileByteArray, 
SingleFileDoubleByteBufferThread, SingleFileDoubleByteBufferExecutor, 
SingleFileByteBuffer]

  SingleFileDoubleByteBufferThread         [random]:  2339.576 ms
  SingleFileDoubleByteBufferExecutor       [random]:  2278.057 ms
  SingleFileDoubleByteArrayThread          [random]:   625.461 ms
  SingleFileDoubleByteArrayExecutor        [random]:   664.312 ms
  MultiFileByteArray_4                     [random]:   699.564 ms
  MultiFileByteBuffer_4                    [random]:  1478.918 ms
  SingleFileByteArray                      [random]:  2773.708 ms
  SingleFileByteBuffer                     [random]:  4150.676 ms
Sorted: [SingleFileDoubleByteArrayThread, SingleFileDoubleByteArrayExecutor, 
MultiFileByteArray_4, MultiFileByteBuffer_4, 
SingleFileDoubleByteBufferExecutor, SingleFileDoubleByteBufferThread, 
SingleFileByteArray, SingleFileByteBuffer]

  SingleFileDoubleByteBufferThread         [random]:  2579.288 ms
  SingleFileDoubleByteBufferExecutor       [random]:  3033.265 ms
  SingleFileDoubleByteArrayThread          [random]:  1581.597 ms
  SingleFileDoubleByteArrayExecutor        [random]:  1814.084 ms
  MultiFileByteArray_8                     [random]:  3594.418 ms
  MultiFileByteBuffer_8                    [random]:   844.449 ms
  SingleFileByteArray                      [random]:  3623.475 ms
  SingleFileByteBuffer                     [random]:  2615.935 ms
Sorted: [MultiFileByteBuffer_8, SingleFileDoubleByteArrayThread, 
SingleFileDoubleByteArrayExecutor, SingleFileDoubleByteBufferThread, 
SingleFileByteBuffer, SingleFileDoubleByteBufferExecutor, MultiFileByteArray_8, 
SingleFileByteArray]

  SingleFileDoubleByteBufferThread         [random]:  2907.472 ms
  SingleFileDoubleByteBufferExecutor       [random]:  3665.446 ms
  SingleFileDoubleByteArrayThread          [random]:  2133.274 ms
  SingleFileDoubleByteArrayExecutor        [random]:  2267.345 ms
  MultiFileByteArray_16                    [random]:  5119.330 ms
  MultiFileByteBuffer_16                   [random]:  4772.853 ms
  SingleFileByteArray                      [random]:  2109.156 ms
  SingleFileByteBuffer                     [random]:  3590.026 ms
Sorted: [SingleFileByteArray, SingleFileDoubleByteArrayThread, 
SingleFileDoubleByteArrayExecutor, SingleFileDoubleByteBufferThread, 
SingleFileByteBuffer, SingleFileDoubleByteBufferExecutor, 
MultiFileByteBuffer_16, MultiFileByteArray_16]

  MultiFileByteArray_2                     [  file]:  5497.417 ms
  MultiFileByteBuffer_2                    [  file]:  6174.950 ms
  SingleFileByteArray                      [  file]:   771.020 ms
  SingleFileByteBuffer                     [  file]:  2933.446 ms
Sorted: [SingleFileByteArray, SingleFileByteBuffer, MultiFileByteArray_2, 
MultiFileByteBuffer_2]

  MultiFileByteArray_4                     [  file]:  5766.071 ms
  MultiFileByteBuffer_4                    [  file]:  3835.339 ms
  SingleFileByteArray                      [  file]:  2721.481 ms
  SingleFileByteBuffer                     [  file]:  1149.070 ms
Sorted: [SingleFileByteBuffer, SingleFileByteArray, MultiFileByteBuffer_4, 
MultiFileByteArray_4]

  MultiFileByteArray_8                     [  file]:  4313.972 ms
  MultiFileByteBuffer_8                    [  file]:  6063.481 ms
  SingleFileByteArray                      [  file]:  2386.332 ms
  SingleFileByteBuffer                     [  file]:  1792.636 ms
Sorted: [SingleFileByteBuffer, SingleFileByteArray, MultiFileByteArray_8, 
MultiFileByteBuffer_8]

  MultiFileByteArray_16                    [  file]:  4831.108 ms
  MultiFileByteBuffer_16                   [  file]:  4382.308 ms
  SingleFileByteArray                      [  file]:  2927.349 ms
  SingleFileByteBuffer                     [  file]:  2288.268 ms
Sorted: [SingleFileByteBuffer, SingleFileByteArray, MultiFileByteBuffer_16, 
MultiFileByteArray_16]
{code}


> Use multiple threads to write RaftLog
> -------------------------------------
>
>                 Key: RATIS-2320
>                 URL: https://issues.apache.org/jira/browse/RATIS-2320
>             Project: Ratis
>          Issue Type: Sub-task
>          Components: RaftLog
>            Reporter: Tsz-wo Sze
>            Assignee: Tsz-wo Sze
>            Priority: Major
>
> {quote}
> Change the way how the Raft log is written to the disk. For example, we can 
> create a layer that allows multiple threads to write to multiple files on 
> disk simultaneously, and later reconstruct the log from multiple files. The 
> downside is that the logic and implementation become more complicated. 
> {quote}
> Above is an suggestion from the doc
> https://docs.google.com/document/d/1gy8Y0imrciEyrsHyQcDIxVt_vkOVAL_P1HBB8tW072E/edit?usp=sharing
> (Thanks Lewis and Lucas for testing Ratis!)



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

Reply via email to