The alarm is only used in the fixed-load scenarios, but its
construction is a major point of contention in both the closed-loop
and fixed-load scenarios. Delay its creation to when it is going to be
used, which will get rid of the contention in the closed-loop scenarios.
There aren't the right set of alarms in callback streaming reactor, so it exceeds the attempted qps while testing the fixed load streaming scenarios in synthetic benchmarks.
alignment options (for cache-alignment).
We shrink by:
1) Removing an unnecessary zone pointer.
2) Replacing gpr_mu (40 bytes when using pthread_mutex_t) with
std::atomic_flag.
We also header-inline the fastpath alloc (ie. when not doing a zone
alloc) and move the malloc() for a zone alloc outside of the mutex
critical zone, which allows us to replace the mutex with a spinlock.
We also cache-align created arenas.
This reverts commit dc1089a6d1, reversing
changes made to 31843787cc.
This change also includes - Revert "Merge pull request #17932 from soheilhy/gprpp-mutex"
This reverts commit df4b6a763d, reversing
changes made to dc1089a6d1.
Introduce RAII wrappers in the grpc::internal and grpc_core
namespaces, and use them in place of std::mutex and
std::condition_variable.
Note that, since std::mutex is also used by the public
C++ headers we cannot introduce these wrappers in grpc_core.
Also, note that in grpcpp we cannot use gRPC core and vice versa.
So we had to duplicate the code, once using core_codegen_interface
and once using direct calls.
It looks like CFStream doesn't detect stream errors when the server is listening on 127.0.0.2 and the interface is shutdown.
The test started failing after address was changed from 10.0.0.1 to 127.0.0.2 in #18381. This commit changes the server address back to 10.0.0.1.
grpc_byte_buffer_reader_next() copies and references the slice. This
is not always necessary since the caller will not use the slice
after destroying the byte buffer.
A prominent example is the protobuf parser, which
calls grpc_byte_buffer_reader_next() and immediately unrefs the slice
after the call. This ref() and unref() calls can be very expensive
in the hot path.
This commit introduces grpc_byte_buffer_reader_peek() which
essentialy return a pointer to the slice in the buffer, i.e.,
no copies, and no refs.
QPS of 1MiB 1 Channel callback benchmark increases by 5%.
More importantly insructions per cycle is increased by 10%.
Also add tests and benchmarks for byte_buffer_reader_peek()
This commit reaplies 509e77a5a3