The v1 API response construction is currently slower than the v0 API response construction. A primary reason for this is that the v1 API constructs intermediate C++ protobuf response objects, which are very expensive in terms of memory allocation/deallocation cost. Also involved is the use of evolve() which evolves messages from unversioned protobuf into v1 protobuf. This also has very high memory allocation / deallocation cost.
Using arenas for all v1 API response construction will provide a significant improvement.
This ticket currently captures all the aspects of this:
- Updating evolve() to use arenas across all v1 API responses.
- Updating all response construction functions (e.g. getState())) to use arenas.
- Making this change for both the master and agent.
This is blocked by MESOS-9755 since we need to upgrade our bundled protobuf to have string fields allocated in the arenas.
We may split out tickets for CHANGELOG purposes if only a portion of this lands in 1.9.0.