Hi All: We use libprocess as our underlying communication library, but we find it’s performance don’t meet, we want to optimize it, for example: ‘send’ function implementation one metadata has four times memory copy, 1. ProtobufMessage SerializeToString then processbase ‘encode’ construct string once; 2. In ‘encode’ function Message body copy again; 3. In MessageEncoder in order to construct HTTP Request, copy again;
4. MessageEncoder return copy again; How to optimize this scenario may be useful. Also , in libprocess it has so many lock: 1. SocketManager: std::recursive_mutex mutex; 2. ProcessManager: std::recursive_mutex processes_mutex; std::recursive_mutex runq_mutex; std::recursive_mutex firewall_mutex; In particular, everytime event enqueue/dequeue both need to get lock, maybe use lookfree struct is better. If have any optimize suggestion or discussion, please let me know, thanks. [cid:[email protected]] Bingqiang Pang(庞兵强) Distributed and Parallel Software Lab Huawei Technologies Co., Ltd. Email:[email protected]<mailto:[email protected]>
