SIGN IN SIGN UP

[TENT] Reduce copies in the TCP data path (sendData/onRecvData) (#3536)

* [TENT] Make RPC server thread count configurable via MC_TENT_RPC_THREADS

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* [TENT] Route RPC server threads through the tent config system

MC_TENT_RPC_THREADS now maps to the rpc_server_threads config key via
ConfigHelper::loadFromEnv, so the knob works from MC_TENT_CONF too, with
validation and a [1, 1024] bound in TransferEngineImpl. The value is
passed down to CoroRpcAgent::start() instead of read via getenv.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* [TENT] Reduce copies in the TCP data path (sendData/onRecvData)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* [TENT] Move the RPC response attachment out of the client buffer

release_resp_attachment() returns the internal buffer by value, but that
buffer is padded to at least sizeof(std::string) for small attachments,
so the moved string carries a garbage tail and the wrong length. Take
the real length from the attachment view first and trim the moved string
with an O(1) shrinking resize(). Large attachments keep the pure-move
path. Also add a TCP data-path round-trip test (fork + WRITE/READ +
memcmp, modeled on rdma_transport_test) that runs on loopback without
special hardware and covers both single- and multi-threaded RPC servers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
X
XiaoTian committed
cdf8b1ea04d6350bcb00d122c4d288f5da71d423
Parent: 99fb01e
Committed by GitHub <noreply@github.com> on 8/20/2026, 7:10:58 AM