Commit Graph

719 Commits

Author SHA1 Message Date
Yunjia Wang c3c24d089d Use Template 2019-07-29 10:30:09 -07:00
Yunjia Wang d87b5285ca Fix comment 2019-07-24 13:33:24 -07:00
Yunjia Wang efd6946d21 Reformat 2019-07-23 15:35:50 -07:00
Yunjia Wang 9242fe122d AddSelf more scenarios 2019-07-23 09:47:26 -07:00
Mark D. Roth 46f706c99b Revert "Merge pull request #19686 from gnossen/revert_breakage"
This reverts commit 1f2398b0d5, reversing
changes made to 99169d811c.
2019-07-23 07:50:27 -07:00
Yunjia Wang 8278d3e6a5 Resolving comments 2019-07-22 17:24:09 -07:00
Yunjia Wang 847faf407f Removes unused variable error 2019-07-19 12:10:52 -07:00
Yunjia Wang 85314b3fcc Re-format 2019-07-19 10:49:35 -07:00
Yunjia Wang c6bc2b1875 Add threadpool benchmark and build files 2019-07-19 10:23:22 -07:00
Richard Belleville 63b4f3d819 Revert "Merge pull request #19673 from markdroth/channel_grpc_init"
This reverts commit 4e21980716, reversing
changes made to 62b8a783fa.
2019-07-18 13:00:24 -07:00
Mark D. Roth 8cc5b8f680 Defer grpc shutdown until after channel destruction. 2019-07-17 16:35:14 -07:00
Arjun Roy b1d73a01f1 Removed duplicate static table from hpack table. Removed an or instruction for
every usage of static grpc metadata. Inlined hpack table lookups for static
metadata.

This leads to faster hpack parser creation:
BM_HpackParserInitDestroy 5.32µs ± 1% 0.06µs ± 1%  -98.91% (p=0.000 n=18+19)

And slightly faster parsing:
BM_HpackParserParseHeader<RepresentativeClientInitialMetadata, OnInitialHeader>
456ns ± 1%              435ns ± 1%   -4.74%        (p=0.000 n=18+19)
BM_HpackParserParseHeader<MoreRepresentativeClientInitialMetadata,
OnInitialHeader>
1.06µs ± 2%             1.04µs ± 2%   -1.82%        (p=0.000 n=19+20)

It also yields a slight (0.5 - 1.0 microsecond) reduction in CPU time for
fullstack unary pingpong:
BM_UnaryPingPong<TCP, NoOpMutator, NoOpMutator>/0/512
[polls/iter:3.0001                         ]            23.9µs ± 2%
23.0µs ± 1%  -3.63%          (p=0.002 n=6+6)
BM_UnaryPingPong<TCP, NoOpMutator, NoOpMutator>/0/32768
[polls/iter:3.00015                        ]            35.1µs ± 1%
34.2µs ± 1%  -2.57%          (p=0.036 n=5+3)
BM_UnaryPingPong<MinTCP, NoOpMutator, NoOpMutator>/8/0
[polls/iter:3.00011                        ]            21.7µs ± 3%
21.2µs ± 2%  -2.44%          (p=0.017 n=6+5)
2019-07-15 15:39:31 -07:00
Yash Tibrewal 56a0153f16 Heap allocate the stream object for other benchmark cases too 2019-06-14 14:44:49 -07:00
Yash Tibrewal cceca10a8a Fix data race, heap use-after-free issue in bm_chttp2_transport 2019-06-13 17:05:51 -07:00
Mark D. Roth 4f3a55b73d Merge remote-tracking branch 'upstream/master' into lb_policy_create_channel_api_improvement 2019-06-05 13:56:06 -07:00
Mark D. Roth 0f5834b88d Merge remote-tracking branch 'upstream/master' into lb_policy_create_channel_api_improvement 2019-05-29 15:40:24 -07:00
Karthik Ravi Shankar 196b0aa3a3
Revert "Revert "Start supporting a callback-based RPC under lock"" 2019-05-29 13:15:47 -07:00
Karthik Ravi Shankar b790c24e5c
Revert "Start supporting a callback-based RPC under lock" 2019-05-29 11:20:36 -07:00
Mark D. Roth 477ebef532 Remove CreateChannel() method from LB helper API. 2019-05-28 14:18:15 -07:00
Karthik Ravi Shankar b18faa6c95 Fix tsan error 2019-05-23 20:08:45 -07:00
Karthik Ravi Shankar d2c8eb94c9 Fix microbenchmark failures 2019-05-23 18:09:12 -07:00
Karthik Ravi Shankar 3f05ac9584 Merge branch 'master' into callback-rpc-lock 2019-05-22 17:39:08 -07:00
Karthik Ravi Shankar e1f62278e3 Fix clang error 2019-05-22 13:53:10 -07:00
Karthik Ravi Shankar 4f7f561564 Add synchronization to bm test
- since we made the callback run on another thread, add synchronization
in bm tests as well
2019-05-22 10:42:50 -07:00
Karthik Ravi Shankar 40210d3b8a Move Channel to grpc_impl 2019-05-17 09:12:33 -07:00
Karthik Ravi Shankar 772a74aced Revert changes to Channel 2019-05-15 14:24:17 -07:00
Na-Na Pang a02c76dfb9 Cancel predefine number of streaming 2019-05-13 13:29:06 -07:00
Na-Na Pang 87d75d2a88 Add explicit and fix error 2019-05-10 11:23:24 -07:00
Na-Na Pang 7a464a3bc9 Merge remote-tracking branch 'upstream/master' 2019-05-10 11:16:14 -07:00
Karthik Ravi Shankar 476f7cd81f
Merge pull request #18730 from karthikravis/grpc_namespace_channel_new
Fold Channel into grpc_impl from grpc namespace
2019-05-09 14:09:21 -07:00
Na-Na Pang a2daa4ff08 Clean format' 2019-05-09 12:29:05 -07:00
Na-Na Pang 1ea651aee3 Add assertion 2019-05-09 12:22:55 -07:00
Na-Na Pang 9b50fbcaac Solve conflict 2019-05-08 18:50:06 -07:00
Na-Na Pang 762e58b574 Change client context allocation 2019-05-08 17:34:27 -07:00
Na-Na Pang 070902b871 Merge bm_callback_cq to bm_cq 2019-05-08 15:51:58 -07:00
Na-Na Pang 3fc702510f Reuse reactor to send new RPC 2019-05-08 10:15:43 -07:00
Na-Na Pang 2d5a9750a0 Manually add echo.proto to pass Portability build test 2019-05-06 16:20:59 -07:00
Na-Na Pang 1ba5f5c701 Modify build file 2019-05-06 14:55:00 -07:00
Na-Na Pang 32e10e618a address the reference arguments 2019-05-06 10:41:37 -07:00
Na-Na Pang 714e13b426 Delete log 2019-05-06 09:25:46 -07:00
Na-Na Pang c905f76a5b Clang format 2019-05-06 09:18:29 -07:00
Na-Na Pang 4198c4fcc6 Merge remote-tracking branch 'upstream/master' 2019-05-03 10:41:12 -07:00
Na-Na Pang 2787dedd70 Modify dependency of callback_test_service 2019-05-03 10:40:49 -07:00
Na-Na Pang 927c2f2c61 Change format 2019-05-02 17:24:54 -07:00
Na-Na Pang 5748665bc5 Add callback completion queue and modify callback streaming ping pong 2019-05-02 17:21:55 -07:00
Esun Kim e18ed03c04 Made gRPC inialized after entering main function in microbenchmarks. 2019-05-02 16:58:37 -07:00
Na-Na Pang 25128d18c1 Modify unary ping pong to send next rpc in callback function 2019-05-02 15:14:44 -07:00
Na-Na Pang 7d3fdec445 Add microbenchmark for callback completion queue 2019-05-01 11:29:28 -07:00
Na-Na Pang e70d507abe Changes based on comment 2019-04-30 16:32:31 -07:00
Karthik Ravi Shankar e3a0c85960 Merge branch 'master' into grpc_namespace_channel_new 2019-04-30 14:30:03 -07:00
Na-Na Pang b028141f01 Change streaming ping pong args and add comment 2019-04-30 14:24:40 -07:00
Karthik Ravi Shankar bc09c70799
Merge pull request #18454 from grpc/grpc_namespace_channel_arguments
Bring ChannelArguments to grpc_impl from grpc
2019-04-30 10:16:45 -07:00
Na-Na Pang 8bf138d799 Add copyright 2019-04-26 14:29:57 -07:00
Na-Na Pang 57bc124d3f Merge remote-tracking branch 'upstream/master' 2019-04-26 12:03:01 -07:00
Na-Na Pang 875d2df399 Modify build file 2019-04-26 10:52:21 -07:00
Na-Na Pang bbd4eb5028 Add microbenchmark for callback unary ping pong and bidistreaming ping pong 2019-04-26 09:52:12 -07:00
Yash Tibrewal 9345b7e276 s/atleast/at\ least 2019-04-25 17:15:30 -07:00
Arjun Roy 8ce42f67b2 Shrink arena size by 40 bytes and add additional
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.
2019-04-24 16:39:03 -07:00
Mark D. Roth ce3ff86763 Convert call_combiner to C++. 2019-04-23 15:27:06 -07:00
Karthik Ravi Shankar 858b5cca20 Fix clang_format_code.sh issues and move the internal calls to new name 2019-04-23 11:45:11 -07:00
Nicolas "Pixel" Noble b9a279c030 Resolving ambiguous call to CreateCustomChannel. 2019-04-22 23:53:53 +02:00
Karthik Ravi Shankar 973fa6950e Fold Channel into grpc_impl from grpc namespace 2019-04-11 12:04:23 -07:00
Karthik Ravi Shankar dad3f34207
Revert "Revert "Revert "Folding the Channel class into the grpc_impl namespace.""" 2019-04-10 12:14:04 -07:00
Karthik Ravi Shankar 9875fabdd4 Merge branch 'master' into revert-18076-revert-17797-channel 2019-04-08 12:55:07 -07:00
Karthik Ravi Shankar dcc199048f
Merge pull request #18396 from grpc/revert-18392-revert-18223-grpc_namespace_opencensus
Revert "Revert "Fold opencensus into grpc_impl namespace""
2019-03-29 10:09:01 -07:00
Bill Feng c1b03b68da Merge remote-tracking branch 'upstream/master' into feature/reinstate-rbe-windows 2019-03-28 16:45:41 -07:00
Guantao Liu 872d2787a0 Avoid using grpc_core::Executor when the background poller is available.
Instead, run closures in the background poller. This will generally
avoid the thread hop in the gRPC runtime.
2019-03-25 16:19:08 -07:00
Karthik Ravi Shankar 4e0923e802 Fix errors from clang_format_code.sh 2019-03-25 15:49:22 -07:00
Bill Feng d49cdbd01f Merge remote-tracking branch 'upstream/master' into feature/reinstate-rbe-windows 2019-03-25 14:09:00 -07:00
Soheil Hassas Yeganeh a3366c1b7f
Merge pull request #18464 from soheilhy/slice-buffer
Introduce grpc_byte_buffer_reader_peek and use it for Protobuf parsing.
2019-03-23 22:42:23 -04:00
Soheil Hassas Yeganeh 1014fe507f Use const ref for grpc_slice.
We are copying the slice on every call creation, which is hurting
ping/pong traffic.
2019-03-22 06:38:33 -04:00
Bill Feng d93959853f Enabled Windows Bazel build for cpp tests 2019-03-21 18:00:48 -07:00
Karthik Ravi Shankar 4260fe1147 More fixes 2019-03-21 17:51:28 -07:00
Soheil Hassas Yeganeh ad1b3e5094 Introduce grpc_byte_buffer_reader_peek and use it for Protobuf parsing.
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
2019-03-21 06:03:45 -04:00
Karthik Ravi Shankar 2a8f3f79ab Fix more namespace stuff 2019-03-15 17:08:58 -07:00
Karthik Ravi Shankar f66b654795
Revert "Revert "Fold opencensus into grpc_impl namespace"" 2019-03-15 11:30:23 -07:00
Karthik Ravi Shankar 3b4835d92d
Merge pull request #18392 from grpc/revert-18223-grpc_namespace_opencensus
Revert "Fold opencensus into grpc_impl namespace"
2019-03-15 11:27:35 -07:00
Karthik Ravi Shankar 2bf934f97d
Revert "Fold opencensus into grpc_impl namespace" 2019-03-15 10:20:06 -07:00
Jan Tattermusch cf6a311761
Revert "Windows builds for gRPC C++ tests" 2019-03-15 17:15:20 +01:00
Karthik Ravi Shankar 276c4dc593
Merge pull request #18223 from grpc/grpc_namespace_opencensus
Fold opencensus into grpc_impl namespace
2019-03-08 15:45:03 -08:00
Bill Feng d61f690a33
Merge pull request #18285 from billfeng327/update-deps-version
Windows local Bazel build for gRPC C++ tests
2019-03-08 14:17:36 -08:00
Soheil Hassas Yeganeh 0031393a17
Merge pull request #18240 from soheilhy/tcp-inq
Implement TCP_INQ for gRPC in Linux
2019-03-08 11:29:39 -05:00
billfeng327 9e102ea8b0 excluded non-compatible test 2019-03-07 16:14:02 -08:00
billfeng327 4241edeaa4 renamed tag to no_windows in conformation with Bazel and TensorFlow 2019-03-07 14:52:49 -08:00
Soheil Hassas Yeganeh 18b19105f2 Implement TCP_INQ for gRPC in Linux
TCP_INQ is a socket option we added to Linux to report pending bytes
on the socket as a control message.

Using TCP_INQ we can accurately decide whether to continue read or not.
Add an urgent parameter, when we do not want to wait for EPOLLIN.

This commit improves the latency of 1 RPC unary (minimal benchmark)
significantly:

  Before:
    l_50: 61.3584984733
    l_90: 94.8328711277
    l_99: 126.211351174
    l_999: 158.722406029

  After:
    l_50: 51.3546011488 (-16%)
    l_90: 72.3420731581 (-23%)
    l_99: 103.280218974 (-18%)
    l_999: 130.905689996 (-17%)
2019-03-06 22:15:53 -05:00
billfeng327 928aedf5c8 Merge branch 'master' into update-deps-version 2019-03-06 15:48:29 -08:00
billfeng327 ab06853fc9 C++ Windows test builds 2019-03-06 15:47:49 -08:00
Soheil Hassas Yeganeh c060d55cc7
Revert "Introduce grpc_byte_buffer_reader_peek and use it for Protobuf parsing." 2019-03-05 14:01:01 -05:00
Karthik Ravi Shankar b606cad6cc Fold opencensus into grpc_impl namespace
Moving opencensus into grpc_impl namespace..
2019-03-04 15:47:37 -08:00
Soheil Hassas Yeganeh 509e77a5a3 Introduce grpc_byte_buffer_reader_peek and use it for Protobuf parsing.
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()
2019-03-04 14:17:46 -05:00
Mark D. Roth 251d66aac6 Convert client channel factory to C++ 2019-03-01 08:40:21 -08:00
Nicolas Noble 91ad888497
Revert "Revert "Folding the Channel class into the grpc_impl namespace."" 2019-02-27 16:53:23 -08:00
Vijay Pai 29191d5eda Need to properly init library for microbenchmarks 2019-02-26 12:44:13 -08:00
Mark D. Roth aa149fedbb Revert "Merge pull request #18093 from grpc/revert-17770-lb_policy_picker_api"
This reverts commit f327b83706, reversing
changes made to b3b5d63423.
2019-02-19 13:19:24 -08:00
hcaseyal 275296c594
Revert "LB policy picker API" 2019-02-19 11:05:52 -08:00
Soheil Hassas Yeganeh db38d4ca9b
Merge pull request #17939 from vertextao/gpr_mu_cv-leak-test
Add ASAN-only leak detection for gpr_mu/cv and fix the newly caught leaks
2019-02-15 21:43:32 -05:00
Nicolas Noble 2ad245cb0c
Revert "Folding the Channel class into the grpc_impl namespace." 2019-02-15 09:52:15 -08:00
xtao 7766912dda
fix more detected mu/cv leaks 2019-02-16 00:00:50 +08:00
Nicolas "Pixel" Noble de332cfcee Merge branch 'master' of https://github.com/grpc/grpc into channel 2019-02-13 22:11:47 +01:00
Mark D. Roth bab8123763 LB policy picker API 2019-02-13 08:30:04 -08:00