FR-GRE-BDS-HPC-SW-SAGE2-GMA/iocatcher

Review of the worker thread model propoal

Opened this issue · 0 comments

Goal

Introduce a worker thread mechanism to delegate the storage backend read/write/memcpy operations to other threads than the network handling one.

Actual model

In the current implementation there is a unique thread handling the network and executing all the requests. It means that if we make a sync on an operation or trigger a read from the storage backend the incoming requests will not be treated until the end of the operation.

Target model

I want to have a worker thread model so we can schedule tasks over a list of worker threads and keep the network handling thread only handling network and making the basic operations on the object representation.

About the patch series

I will start to push step by step the worker implementation I made two weeks ago. I rewrote the history so it will be easier to review and see the adding of the new components one by one with their full final documentation. If you want to see the original full branch with the real step by step implementation progress you can go here : https://github.com/svalat/iocatcher/tree/feature/implement-worker-and-worker-manager.

I will push all the patches reviewed step by step in the branch feature/worker. Then it would be nice to make a performance test to check the tasking system does not degrade too much the performance on an IB device.

I will detail the concepts in the PR descriptions to reuse the related text into the source documentation at the end of the process.

Targeted UML diagram

I show here the new UML class diagram which is targeted by the coming PRs.

Target UML class diagram