Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

ByteBufferPool → partition/transaction thread → Partition Queue → Partition Queue Dispatcher Thread → Disk Writer Queue → Disk Writer Thread → Free Queue → ByteBuffer Releaser Thread → ByteBufferPool



ByteBufferPool


partition thread 


Partition Queue

transaction thread


ByteBuffer Releaser ThreadPartition Queue Dispatcher Thread

Free QueueDisk Writer ThreadDisk Writer Queue


ByteBuffer pool

Current solution uses thread local ByteBuffers with expanding size. This is ok for single threaded usage, but not suitable for passing to other threads. And this is also not good for transaction threads.

...

Wraps several ByteBuffers, extends ByteBuffer. It is created in ByteBufferPool#acquire and destroyed in ByteBufferPool#release when all internal buffers returned to the pool.

Writing to disk

We can often see that disk IO operation is the bottleneck in Ignite. So we should try to make writing to disk efficient. 

...

In case of multiple disk writers additionally a flag should be passed, which will be considered when choosing largest partition queue and will be reset on buffer release.

Disk Writer Queue and Free Queue 

They could be simple ArrayBlockingQueues.

...