gRPCサーバのベンチマーククライアントを生成する
google.golang.org/grpcでサーバ書いたのでそろそろベンチマークしてみようと思ったらgoogle.golang.org/grpc/benchmarkという便利そうなパッケージを発見した。
早速clientをビルドしてみたけどgrpc_testingパッケージ専用だったので中のmain.goをテンプレート化して任意のパッケージで使えるようにするツールを作ってみた。
※今のところstreaming RPCには非対応
examplesのhelloworldで試してみるとこんな感じ。
# ベンチマーククライアントを生成する $ grpc-bench-generator -path $GOPATH/src/google.golang.org/grpc/examples/helloworld/helloworld > main.go # greeter_serverが起動している状態で実行する $ go run main.go -server=localhost:50051 -duration=1 -enable_ssl=false -data='{"Name": "grpc-bench-generator"}' 2016/09/23 15:20:57 Client profiling address: [::]:62291 2016/09/23 15:20:58 Histogram (unit: µs) Count: 5961 Min: 126 Max: 737 Avg: 164.21 ------------------------------------------------------------ [126.000000, 127.000000) 1 0.0% 0.0% [127.000000, 127.025476) 0 0.0% 0.0% [127.025476, 127.051602) 0 0.0% 0.0% [127.051602, 127.078393) 0 0.0% 0.0% [127.078393, 127.105866) 0 0.0% 0.0% [127.105866, 127.134040) 0 0.0% 0.0% [127.134040, 127.162931) 0 0.0% 0.0% [127.162931, 127.192558) 0 0.0% 0.0% [127.192558, 127.222940) 0 0.0% 0.0% [127.222940, 127.254096) 0 0.0% 0.0% [127.254096, 127.286046) 0 0.0% 0.0% [127.286046, 127.318810) 0 0.0% 0.0% [127.318810, 127.352408) 0 0.0% 0.0% [127.352408, 127.386863) 0 0.0% 0.0% [127.386863, 127.422195) 0 0.0% 0.0% [127.422195, 127.458427) 0 0.0% 0.0% [127.458427, 127.495583) 0 0.0% 0.0% [127.495583, 127.533685) 0 0.0% 0.0% [127.533685, 127.572757) 0 0.0% 0.0% [127.572757, 127.612826) 0 0.0% 0.0% [127.612826, 127.653914) 0 0.0% 0.0% [127.653914, 127.696050) 0 0.0% 0.0% [127.696050, 127.739259) 0 0.0% 0.0% [127.739259, 127.783569) 0 0.0% 0.0% [127.783569, 127.829008) 0 0.0% 0.0% [127.829008, 127.875605) 0 0.0% 0.0% [127.875605, 127.923388) 0 0.0% 0.0% [127.923388, 127.972389) 0 0.0% 0.0% [127.972389, 128.022638) 1 0.0% 0.0% [128.022638, 128.074168) 0 0.0% 0.0% [128.074168, 128.127010) 0 0.0% 0.0% [128.127010, 128.181199) 0 0.0% 0.0% [128.181199, 128.236768) 0 0.0% 0.0% [128.236768, 128.293752) 0 0.0% 0.0% [128.293752, 128.352189) 0 0.0% 0.0% [128.352189, 128.412114) 0 0.0% 0.0% [128.412114, 128.473566) 0 0.0% 0.0% [128.473566, 128.536583) 0 0.0% 0.0% [128.536583, 128.601206) 0 0.0% 0.0% [128.601206, 128.667475) 0 0.0% 0.0% [128.667475, 128.735433) 0 0.0% 0.0% [128.735433, 128.805122) 0 0.0% 0.0% [128.805122, 128.876586) 0 0.0% 0.0% [128.876586, 128.949871) 0 0.0% 0.0% [128.949871, 129.025023) 6 0.1% 0.1% [129.025023, 129.102090) 0 0.0% 0.1% [129.102090, 129.181119) 0 0.0% 0.1% [129.181119, 129.262163) 0 0.0% 0.1% [129.262163, 129.345271) 0 0.0% 0.1% [129.345271, 129.430496) 0 0.0% 0.1% [129.430496, 129.517893) 0 0.0% 0.1% [129.517893, 129.607516) 0 0.0% 0.1% [129.607516, 129.699422) 0 0.0% 0.1% [129.699422, 129.793670) 0 0.0% 0.1% [129.793670, 129.890319) 0 0.0% 0.1% [129.890319, 129.989430) 0 0.0% 0.1% [129.989430, 130.091066) 17 0.3% 0.4% [130.091066, 130.195292) 0 0.0% 0.4% [130.195292, 130.302172) 0 0.0% 0.4% [130.302172, 130.411776) 0 0.0% 0.4% [130.411776, 130.524172) 0 0.0% 0.4% [130.524172, 130.639431) 0 0.0% 0.4% [130.639431, 130.757627) 0 0.0% 0.4% [130.757627, 130.878834) 0 0.0% 0.4% [130.878834, 131.003129) 33 0.6% 1.0% [131.003129, 131.130591) 0 0.0% 1.0% [131.130591, 131.261299) 0 0.0% 1.0% [131.261299, 131.395338) 0 0.0% 1.0% [131.395338, 131.532792) 0 0.0% 1.0% [131.532792, 131.673747) 0 0.0% 1.0% [131.673747, 131.818294) 0 0.0% 1.0% [131.818294, 131.966522) 0 0.0% 1.0% [131.966522, 132.118528) 42 0.7% 1.7% [132.118528, 132.274405) 0 0.0% 1.7% [132.274405, 132.434254) 0 0.0% 1.7% [132.434254, 132.598176) 0 0.0% 1.7% [132.598176, 132.766273) 0 0.0% 1.7% [132.766273, 132.938653) 0 0.0% 1.7% [132.938653, 133.115425) 45 0.8% 2.4% [133.115425, 133.296700) 0 0.0% 2.4% [133.296700, 133.482593) 0 0.0% 2.4% [133.482593, 133.673223) 0 0.0% 2.4% [133.673223, 133.868708) 0 0.0% 2.4% [133.868708, 134.069174) 61 1.0% 3.5% [134.069174, 134.274748) 0 0.0% 3.5% [134.274748, 134.485558) 0 0.0% 3.5% [134.485558, 134.701739) 0 0.0% 3.5% [134.701739, 134.923428) 0 0.0% 3.5% [134.923428, 135.150764) 72 1.2% 4.7% [135.150764, 135.383892) 0 0.0% 4.7% [135.383892, 135.622960) 0 0.0% 4.7% [135.622960, 135.868118) 0 0.0% 4.7% [135.868118, 136.119521) 113 1.9% 6.6% [136.119521, 136.377330) 0 0.0% 6.6% [136.377330, 136.641706) 0 0.0% 6.6% [136.641706, 136.912818) 0 0.0% 6.6% [136.912818, 137.190837) 127 2.1% 8.7% [137.190837, 137.475939) 0 0.0% 8.7% [137.475939, 137.768304) 0 0.0% 8.7% [137.768304, 138.068117) 165 2.8% 11.5% [138.068117, 138.375569) 0 0.0% 11.5% [138.375569, 138.690854) 0 0.0% 11.5% [138.690854, 139.014170) 179 3.0% 14.5% [139.014170, 139.345724) 0 0.0% 14.5% [139.345724, 139.685724) 0 0.0% 14.5% [139.685724, 140.034387) 193 3.2% 17.7% [140.034387, 140.391932) 0 0.0% 17.7% [140.391932, 140.758586) 0 0.0% 17.7% [140.758586, 141.134581) 198 3.3% 21.0% [141.134581, 141.520155) 0 0.0% 21.0% [141.520155, 141.915552) 0 0.0% 21.0% [141.915552, 142.321022) 193 3.2% 24.3% [142.321022, 142.736822) 0 0.0% 24.3% [142.736822, 143.163215) 181 3.0% 27.3% [143.163215, 143.600472) 0 0.0% 27.3% [143.600472, 144.048868) 190 3.2% 30.5% [144.048868, 144.508687) 0 0.0% 30.5% [144.508687, 144.980221) 0 0.0% 30.5% [144.980221, 145.463768) 169 2.8% 33.3% [145.463768, 145.959634) 0 0.0% 33.3% [145.959634, 146.468132) 169 2.8% 36.2% [146.468132, 146.989586) 0 0.0% 36.2% [146.989586, 147.524324) 148 2.5% 38.6% [147.524324, 148.072685) 150 2.5% 41.2% [148.072685, 148.635017) 0 0.0% 41.2% [148.635017, 149.211675) 161 2.7% 43.9% [149.211675, 149.803024) 0 0.0% 43.9% [149.803024, 150.409438) 141 2.4% 46.2% [150.409438, 151.031301) 135 2.3% 48.5% [151.031301, 151.669008) 0 0.0% 48.5% [151.669008, 152.322961) 122 2.0% 50.5% [152.322961, 152.993574) 0 0.0% 50.5% [152.993574, 153.681272) 127 2.1% 52.7% [153.681272, 154.386490) 120 2.0% 54.7% [154.386490, 155.109674) 120 2.0% 56.7% [155.109674, 155.851282) 0 0.0% 56.7% [155.851282, 156.611784) 95 1.6% 58.3% [156.611784, 157.391661) 87 1.5% 59.7% [157.391661, 158.191406) 93 1.6% 61.3% [158.191406, 159.011526) 66 1.1% 62.4% [159.011526, 159.852539) 0 0.0% 62.4% [159.852539, 160.714979) 69 1.2% 63.6% [160.714979, 161.599390) 71 1.2% 64.8% [161.599390, 162.506333) 63 1.1% 65.8% [162.506333, 163.436381) 48 0.8% 66.6% [163.436381, 164.390124) 68 1.1% 67.8% [164.390124, 165.368164) 66 1.1% 68.9% [165.368164, 166.371122) 47 0.8% 69.7% [166.371122, 167.399631) 45 0.8% 70.4% [167.399631, 168.454342) 47 0.8% 71.2% [168.454342, 169.535924) 53 0.9% 72.1% [169.535924, 170.645061) 45 0.8% 72.8% [170.645061, 171.782455) 44 0.7% 73.6% [171.782455, 172.948825) 36 0.6% 74.2% [172.948825, 174.144910) 81 1.4% 75.5% [174.144910, 175.371467) 29 0.5% 76.0% [175.371467, 176.629272) 38 0.6% 76.7% [176.629272, 177.919121) 27 0.5% 77.1% [177.919121, 179.241831) 46 0.8% 77.9% [179.241831, 180.598239) 27 0.5% 78.3% [180.598239, 181.989203) 26 0.4% 78.8% [181.989203, 183.415604) 64 1.1% 79.9% [183.415604, 184.878345) 36 0.6% 80.5% [184.878345, 186.378351) 49 0.8% 81.3% [186.378351, 187.916571) 28 0.5% 81.7% [187.916571, 189.493980) 47 0.8% 82.5% [189.493980, 191.111575) 45 0.8% 83.3% [191.111575, 192.770381) 20 0.3% 83.6% [192.770381, 194.471447) 56 0.9% 84.6% [194.471447, 196.215850) 45 0.8% 85.3% [196.215850, 198.004694) 35 0.6% 85.9% [198.004694, 199.839111) 17 0.3% 86.2% [199.839111, 201.720262) 38 0.6% 86.8% [201.720262, 203.649339) 33 0.6% 87.4% [203.649339, 205.627561) 27 0.5% 87.8% [205.627561, 207.656181) 30 0.5% 88.3% [207.656181, 209.736483) 28 0.5% 88.8% [209.736483, 211.869784) 30 0.5% 89.3% [211.869784, 214.057433) 56 0.9% 90.3% [214.057433, 216.300816) 28 0.5% 90.7% [216.300816, 218.601351) 44 0.7% 91.5% [218.601351, 220.960497) 21 0.4% 91.8% [220.960497, 223.379744) 60 1.0% 92.8% [223.379744, 225.860625) 31 0.5% 93.3% [225.860625, 228.404710) 44 0.7% 94.1% [228.404710, 231.013609) 51 0.9% 94.9% [231.013609, 233.688973) 25 0.4% 95.4% [233.688973, 236.432496) 46 0.8% 96.1% [236.432496, 239.245913) 50 0.8% 97.0% [239.245913, 242.131007) 34 0.6% 97.5% [242.131007, 245.089602) 28 0.5% 98.0% [245.089602, 248.123571) 19 0.3% 98.3% [248.123571, 251.234835) 15 0.3% 98.6% [251.234835, 254.425362) 18 0.3% 98.9% [254.425362, 257.697172) 10 0.2% 99.0% [257.697172, 261.052336) 12 0.2% 99.2% [261.052336, 264.492978) 3 0.1% 99.3% [264.492978, 268.021274) 4 0.1% 99.4% [268.021274, 271.639459) 4 0.1% 99.4% [271.639459, 275.349822) 2 0.0% 99.5% [275.349822, 279.154711) 1 0.0% 99.5% [279.154711, 283.056535) 2 0.0% 99.5% [283.056535, 287.057764) 2 0.0% 99.5% [287.057764, 291.160929) 3 0.1% 99.6% [291.160929, 295.368628) 0 0.0% 99.6% [295.368628, 299.683523) 1 0.0% 99.6% [299.683523, 304.108346) 2 0.0% 99.6% [304.108346, 308.645898) 0 0.0% 99.6% [308.645898, 313.299050) 1 0.0% 99.7% [313.299050, 318.070748) 0 0.0% 99.7% [318.070748, 322.964011) 0 0.0% 99.7% [322.964011, 327.981936) 0 0.0% 99.7% [327.981936, 333.127700) 1 0.0% 99.7% [333.127700, 338.404559) 0 0.0% 99.7% [338.404559, 343.815854) 0 0.0% 99.7% [343.815854, 349.365008) 0 0.0% 99.7% [349.365008, 355.055535) 1 0.0% 99.7% [355.055535, 360.891035) 1 0.0% 99.7% [360.891035, 366.875203) 1 0.0% 99.7% [366.875203, 373.011825) 2 0.0% 99.8% [373.011825, 379.304787) 0 0.0% 99.8% [379.304787, 385.758070) 1 0.0% 99.8% [385.758070, 392.375759) 1 0.0% 99.8% [392.375759, 399.162043) 2 0.0% 99.8% [399.162043, 406.121217) 1 0.0% 99.8% [406.121217, 413.257685) 1 0.0% 99.9% [413.257685, 420.575964) 0 0.0% 99.9% [420.575964, 428.080687) 0 0.0% 99.9% [428.080687, 435.776602) 1 0.0% 99.9% [435.776602, 443.668581) 0 0.0% 99.9% [443.668581, 451.761619) 0 0.0% 99.9% [451.761619, 460.060839) 1 0.0% 99.9% [460.060839, 468.571492) 0 0.0% 99.9% [468.571492, 477.298965) 1 0.0% 99.9% [477.298965, 486.248783) 0 0.0% 99.9% [486.248783, 495.426610) 0 0.0% 99.9% [495.426610, 504.838254) 1 0.0% 99.9% [504.838254, 514.489672) 2 0.0% 100.0% [514.489672, 524.386974) 0 0.0% 100.0% [524.386974, 534.536422) 0 0.0% 100.0% [534.536422, 544.944442) 0 0.0% 100.0% [544.944442, 555.617620) 0 0.0% 100.0% [555.617620, 566.562712) 0 0.0% 100.0% [566.562712, 577.786645) 1 0.0% 100.0% [577.786645, 589.296522) 0 0.0% 100.0% [589.296522, 601.099630) 0 0.0% 100.0% [601.099630, 613.203438) 0 0.0% 100.0% [613.203438, 625.615606) 0 0.0% 100.0% [625.615606, 638.343992) 0 0.0% 100.0% [638.343992, 651.396650) 0 0.0% 100.0% [651.396650, 664.781843) 0 0.0% 100.0% [664.781843, 678.508041) 0 0.0% 100.0% [678.508041, 692.583933) 0 0.0% 100.0% [692.583933, 707.018428) 0 0.0% 100.0% [707.018428, 721.820660) 0 0.0% 100.0% [721.820660, 737.000000) 0 0.0% 100.0% [737.000000, inf) 1 0.0% 100.0% 2016/09/23 15:20:58 Status Codes OK: 5961