Client-side streaming works slowly when spam with small messages.
        for (uint64_t i = 0; i < mCalls - 1; ++i) {
            request.setPing(i);
            stream->writeMessage(request);
        }
The above code consumes lot of time especially if the mCalls number is huge.
The flame graph  tst_bench_qtgrpcclient_dwarf_client_stream.svg shows that we spend lot of time on internal event queue locks. This happens because of frequent calls of the QNonContiguousByteDevice::deleteLater.
 shows that we spend lot of time on internal event queue locks. This happens because of frequent calls of the QNonContiguousByteDevice::deleteLater.
It's indeed should be optimized. The current proposal is to use of the different QHttp2Stream::sendDATA signature and control the QNonContiguousByteDevice lifetime from the QGrpcHttp2Channel side, but not leave this to QHttp2Stream internal logic. The re-usability of the QNonContiguousByteDevice* is questionable(most probably we still need to delete it after completing the sendDATA call, but we at least may try to clear its memory directly but not by using the deleteLater.
- is required for
- 
                     QTBUG-129161
        Various enhancements  in Qt gRPC and Protobuf QTBUG-129161
        Various enhancements  in Qt gRPC and Protobuf-         
- In Progress
 
-         
- mentioned in
- 
                    Page Loading... 
| For Gerrit Dashboard: QTBUG-126451 | ||||||
|---|---|---|---|---|---|---|
| # | Subject | Branch | Project | Status | CR | V | 
| 571447,13 | QGrpcHttp2Channel: optimize client side streaming under high load | dev | qt/qtgrpc | Status: MERGED | +2 | 0 | 
| 575486,3 | QGrpcHttp2Channel: optimize client side streaming under high load | 6.8 | qt/qtgrpc | Status: MERGED | +2 | 0 |