I believe that this performance degration is caused by the large mount of inter-thread communication.
Actually, futex occupies large ratio of execution time.
To mitigate the issue, it is good idea to reduce the number of futex calls.
Currently, the PipeIntercepter sends single chunk by tx.send for each time.
This part can be improved more.
If PipeIntercepter can bufferes chunks and sends it to other thread,
number of futex will be reduced and performance improves rapidly under such the particular situation likea above.
teip
degrades the performance rapidly if is has large number of small chunks.I believe that this performance degration is caused by the large mount of inter-thread communication. Actually, futex occupies large ratio of execution time.
To mitigate the issue, it is good idea to reduce the number of
futex
calls. Currently, the PipeIntercepter sends single chunk bytx.send
for each time.https://github.com/greymd/teip/blob/v2.2.0/src/pipeintercepter.rs#L23-L53 https://github.com/greymd/teip/blob/v2.2.0/src/pipeintercepter.rs#L235
This part can be improved more. If PipeIntercepter can bufferes chunks and sends it to other thread, number of
futex
will be reduced and performance improves rapidly under such the particular situation likea above.