[Lldb-commits] [PATCH] D22914: [WIP] Add concurrent packets support to gdb-remote client

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Tue Aug 9 09:54:50 PDT 2016


labath added a comment.

These are the results before and after applying this change (on linux):
Before:

  (lldb) process plugin packet speed-test
  Testing sending 1000 packets of various sizes:
  qSpeedTest(send=0      , recv=0      ) in 0.057456000 sec for  17404.62 packets/sec (  0.057456 ms per packet) with standard deviation of   0.012368 ms
  qSpeedTest(send=0      , recv=4      ) in 0.048495000 sec for  20620.68 packets/sec (  0.048495 ms per packet) with standard deviation of   0.002189 ms
  qSpeedTest(send=0      , recv=8      ) in 0.048270000 sec for  20716.80 packets/sec (  0.048270 ms per packet) with standard deviation of   0.001979 ms
  qSpeedTest(send=0      , recv=16     ) in 0.048686000 sec for  20539.79 packets/sec (  0.048686 ms per packet) with standard deviation of   0.001992 ms
  qSpeedTest(send=0      , recv=32     ) in 0.050556000 sec for  19780.04 packets/sec (  0.050556 ms per packet) with standard deviation of   0.005152 ms
  qSpeedTest(send=0      , recv=64     ) in 0.051095000 sec for  19571.39 packets/sec (  0.051095 ms per packet) with standard deviation of   0.004969 ms
  qSpeedTest(send=0      , recv=128    ) in 0.056365000 sec for  17741.51 packets/sec (  0.056365 ms per packet) with standard deviation of   0.007733 ms
  qSpeedTest(send=0      , recv=256    ) in 0.061426000 sec for  16279.75 packets/sec (  0.061426 ms per packet) with standard deviation of   0.003777 ms
  qSpeedTest(send=0      , recv=512    ) in 0.065135000 sec for  15352.73 packets/sec (  0.065135 ms per packet) with standard deviation of   0.003205 ms
  qSpeedTest(send=0      , recv=1024   ) in 0.070767000 sec for  14130.88 packets/sec (  0.070767 ms per packet) with standard deviation of   0.005090 ms
  qSpeedTest(send=4      , recv=0      ) in 0.053847000 sec for  18571.14 packets/sec (  0.053847 ms per packet) with standard deviation of   0.003236 ms
  qSpeedTest(send=4      , recv=4      ) in 0.054817000 sec for  18242.52 packets/sec (  0.054817 ms per packet) with standard deviation of   0.002795 ms
  qSpeedTest(send=4      , recv=8      ) in 0.054378000 sec for  18389.79 packets/sec (  0.054378 ms per packet) with standard deviation of   0.002432 ms
  qSpeedTest(send=4      , recv=16     ) in 0.054126000 sec for  18475.41 packets/sec (  0.054126 ms per packet) with standard deviation of   0.005307 ms
  qSpeedTest(send=4      , recv=32     ) in 0.047904000 sec for  20875.08 packets/sec (  0.047904 ms per packet) with standard deviation of   0.003132 ms
  qSpeedTest(send=4      , recv=64     ) in 0.051456000 sec for  19434.08 packets/sec (  0.051456 ms per packet) with standard deviation of   0.004501 ms
  qSpeedTest(send=4      , recv=128    ) in 0.054608000 sec for  18312.34 packets/sec (  0.054608 ms per packet) with standard deviation of   0.003507 ms
  qSpeedTest(send=4      , recv=256    ) in 0.054924000 sec for  18206.98 packets/sec (  0.054924 ms per packet) with standard deviation of   0.005625 ms
  qSpeedTest(send=4      , recv=512    ) in 0.064180000 sec for  15581.18 packets/sec (  0.064180 ms per packet) with standard deviation of   0.005875 ms
  qSpeedTest(send=4      , recv=1024   ) in 0.068276000 sec for  14646.44 packets/sec (  0.068276 ms per packet) with standard deviation of   0.003039 ms
  qSpeedTest(send=8      , recv=0      ) in 0.053046000 sec for  18851.56 packets/sec (  0.053046 ms per packet) with standard deviation of   0.003500 ms
  qSpeedTest(send=8      , recv=4      ) in 0.054089000 sec for  18488.05 packets/sec (  0.054089 ms per packet) with standard deviation of   0.006284 ms
  qSpeedTest(send=8      , recv=8      ) in 0.049932000 sec for  20027.24 packets/sec (  0.049932 ms per packet) with standard deviation of   0.004150 ms
  qSpeedTest(send=8      , recv=16     ) in 0.058777000 sec for  17013.46 packets/sec (  0.058777 ms per packet) with standard deviation of   0.008652 ms
  qSpeedTest(send=8      , recv=32     ) in 0.051253000 sec for  19511.05 packets/sec (  0.051253 ms per packet) with standard deviation of   0.008256 ms
  qSpeedTest(send=8      , recv=64     ) in 0.052551000 sec for  19029.13 packets/sec (  0.052551 ms per packet) with standard deviation of   0.006581 ms
  qSpeedTest(send=8      , recv=128    ) in 0.049986000 sec for  20005.60 packets/sec (  0.049986 ms per packet) with standard deviation of   0.005448 ms
  qSpeedTest(send=8      , recv=256    ) in 0.054557000 sec for  18329.46 packets/sec (  0.054557 ms per packet) with standard deviation of   0.006423 ms
  qSpeedTest(send=8      , recv=512    ) in 0.052093000 sec for  19196.44 packets/sec (  0.052093 ms per packet) with standard deviation of   0.002142 ms
  qSpeedTest(send=8      , recv=1024   ) in 0.057268000 sec for  17461.76 packets/sec (  0.057268 ms per packet) with standard deviation of   0.001820 ms
  qSpeedTest(send=16     , recv=0      ) in 0.044685000 sec for  22378.87 packets/sec (  0.044685 ms per packet) with standard deviation of   0.001565 ms
  qSpeedTest(send=16     , recv=4      ) in 0.045271000 sec for  22089.20 packets/sec (  0.045271 ms per packet) with standard deviation of   0.001261 ms
  qSpeedTest(send=16     , recv=8      ) in 0.050808000 sec for  19681.94 packets/sec (  0.050808 ms per packet) with standard deviation of   0.007900 ms
  qSpeedTest(send=16     , recv=16     ) in 0.051924000 sec for  19258.92 packets/sec (  0.051924 ms per packet) with standard deviation of   0.005277 ms
  qSpeedTest(send=16     , recv=32     ) in 0.049635000 sec for  20147.07 packets/sec (  0.049635 ms per packet) with standard deviation of   0.001714 ms
  qSpeedTest(send=16     , recv=64     ) in 0.049719000 sec for  20113.04 packets/sec (  0.049719 ms per packet) with standard deviation of   0.001488 ms
  qSpeedTest(send=16     , recv=128    ) in 0.051774000 sec for  19314.71 packets/sec (  0.051774 ms per packet) with standard deviation of   0.002255 ms
  qSpeedTest(send=16     , recv=256    ) in 0.053197000 sec for  18798.05 packets/sec (  0.053197 ms per packet) with standard deviation of   0.001695 ms
  qSpeedTest(send=16     , recv=512    ) in 0.058951000 sec for  16963.24 packets/sec (  0.058951 ms per packet) with standard deviation of   0.005022 ms
  qSpeedTest(send=16     , recv=1024   ) in 0.061830000 sec for  16173.38 packets/sec (  0.061830 ms per packet) with standard deviation of   0.002527 ms
  qSpeedTest(send=32     , recv=0      ) in 0.047818000 sec for  20912.63 packets/sec (  0.047818 ms per packet) with standard deviation of   0.002138 ms
  qSpeedTest(send=32     , recv=4      ) in 0.048937000 sec for  20434.44 packets/sec (  0.048937 ms per packet) with standard deviation of   0.002160 ms
  qSpeedTest(send=32     , recv=8      ) in 0.049310000 sec for  20279.86 packets/sec (  0.049310 ms per packet) with standard deviation of   0.001967 ms
  qSpeedTest(send=32     , recv=16     ) in 0.049303000 sec for  20282.74 packets/sec (  0.049303 ms per packet) with standard deviation of   0.001901 ms
  qSpeedTest(send=32     , recv=32     ) in 0.048884000 sec for  20456.59 packets/sec (  0.048884 ms per packet) with standard deviation of   0.002039 ms
  qSpeedTest(send=32     , recv=64     ) in 0.049960000 sec for  20016.01 packets/sec (  0.049960 ms per packet) with standard deviation of   0.002190 ms
  qSpeedTest(send=32     , recv=128    ) in 0.051732000 sec for  19330.39 packets/sec (  0.051732 ms per packet) with standard deviation of   0.002192 ms
  qSpeedTest(send=32     , recv=256    ) in 0.053717000 sec for  18616.08 packets/sec (  0.053717 ms per packet) with standard deviation of   0.002260 ms
  qSpeedTest(send=32     , recv=512    ) in 0.056674000 sec for  17644.78 packets/sec (  0.056674 ms per packet) with standard deviation of   0.002280 ms
  qSpeedTest(send=32     , recv=1024   ) in 0.061923000 sec for  16149.09 packets/sec (  0.061923 ms per packet) with standard deviation of   0.002552 ms
  qSpeedTest(send=64     , recv=0      ) in 0.048675000 sec for  20544.43 packets/sec (  0.048675 ms per packet) with standard deviation of   0.002477 ms
  qSpeedTest(send=64     , recv=4      ) in 0.050288000 sec for  19885.46 packets/sec (  0.050288 ms per packet) with standard deviation of   0.004986 ms
  qSpeedTest(send=64     , recv=8      ) in 0.049818000 sec for  20073.07 packets/sec (  0.049818 ms per packet) with standard deviation of   0.001913 ms
  qSpeedTest(send=64     , recv=16     ) in 0.049816000 sec for  20073.87 packets/sec (  0.049816 ms per packet) with standard deviation of   0.001994 ms
  qSpeedTest(send=64     , recv=32     ) in 0.049917000 sec for  20033.26 packets/sec (  0.049917 ms per packet) with standard deviation of   0.002194 ms
  qSpeedTest(send=64     , recv=64     ) in 0.050215000 sec for  19914.37 packets/sec (  0.050215 ms per packet) with standard deviation of   0.002086 ms
  qSpeedTest(send=64     , recv=128    ) in 0.051921000 sec for  19260.03 packets/sec (  0.051921 ms per packet) with standard deviation of   0.002006 ms
  qSpeedTest(send=64     , recv=256    ) in 0.053772000 sec for  18597.04 packets/sec (  0.053772 ms per packet) with standard deviation of   0.002288 ms
  qSpeedTest(send=64     , recv=512    ) in 0.056476000 sec for  17706.64 packets/sec (  0.056476 ms per packet) with standard deviation of   0.002386 ms
  qSpeedTest(send=64     , recv=1024   ) in 0.063685000 sec for  15702.28 packets/sec (  0.063685 ms per packet) with standard deviation of   0.005601 ms
  qSpeedTest(send=128    , recv=0      ) in 0.050048000 sec for  19980.82 packets/sec (  0.050048 ms per packet) with standard deviation of   0.003461 ms
  qSpeedTest(send=128    , recv=4      ) in 0.050134000 sec for  19946.54 packets/sec (  0.050134 ms per packet) with standard deviation of   0.002229 ms
  qSpeedTest(send=128    , recv=8      ) in 0.056629000 sec for  17658.80 packets/sec (  0.056629 ms per packet) with standard deviation of   0.008926 ms
  qSpeedTest(send=128    , recv=16     ) in 0.053294000 sec for  18763.84 packets/sec (  0.053294 ms per packet) with standard deviation of   0.007024 ms
  qSpeedTest(send=128    , recv=32     ) in 0.053769000 sec for  18598.08 packets/sec (  0.053769 ms per packet) with standard deviation of   0.003904 ms
  qSpeedTest(send=128    , recv=64     ) in 0.053158000 sec for  18811.84 packets/sec (  0.053158 ms per packet) with standard deviation of   0.004076 ms
  qSpeedTest(send=128    , recv=128    ) in 0.054059000 sec for  18498.31 packets/sec (  0.054059 ms per packet) with standard deviation of   0.004584 ms
  qSpeedTest(send=128    , recv=256    ) in 0.055685000 sec for  17958.16 packets/sec (  0.055685 ms per packet) with standard deviation of   0.004079 ms
  qSpeedTest(send=128    , recv=512    ) in 0.058741000 sec for  17023.88 packets/sec (  0.058741 ms per packet) with standard deviation of   0.004337 ms
  qSpeedTest(send=128    , recv=1024   ) in 0.067375000 sec for  14842.30 packets/sec (  0.067375 ms per packet) with standard deviation of   0.003557 ms
  qSpeedTest(send=256    , recv=0      ) in 0.050108000 sec for  19956.89 packets/sec (  0.050108 ms per packet) with standard deviation of   0.003281 ms
  qSpeedTest(send=256    , recv=4      ) in 0.051799000 sec for  19305.39 packets/sec (  0.051799 ms per packet) with standard deviation of   0.003626 ms
  qSpeedTest(send=256    , recv=8      ) in 0.052719000 sec for  18968.49 packets/sec (  0.052719 ms per packet) with standard deviation of   0.004331 ms
  qSpeedTest(send=256    , recv=16     ) in 0.052387000 sec for  19088.71 packets/sec (  0.052387 ms per packet) with standard deviation of   0.004896 ms
  qSpeedTest(send=256    , recv=32     ) in 0.052822000 sec for  18931.51 packets/sec (  0.052822 ms per packet) with standard deviation of   0.005342 ms
  qSpeedTest(send=256    , recv=64     ) in 0.059212000 sec for  16888.47 packets/sec (  0.059212 ms per packet) with standard deviation of   0.007692 ms
  qSpeedTest(send=256    , recv=128    ) in 0.055576000 sec for  17993.38 packets/sec (  0.055576 ms per packet) with standard deviation of   0.004692 ms
  qSpeedTest(send=256    , recv=256    ) in 0.062278000 sec for  16057.03 packets/sec (  0.062278 ms per packet) with standard deviation of   0.006579 ms
  qSpeedTest(send=256    , recv=512    ) in 0.065064000 sec for  15369.48 packets/sec (  0.065064 ms per packet) with standard deviation of   0.003246 ms
  qSpeedTest(send=256    , recv=1024   ) in 0.070101000 sec for  14265.13 packets/sec (  0.070101 ms per packet) with standard deviation of   0.002870 ms
  qSpeedTest(send=512    , recv=0      ) in 0.055987000 sec for  17861.29 packets/sec (  0.055987 ms per packet) with standard deviation of   0.007052 ms
  qSpeedTest(send=512    , recv=4      ) in 0.050394000 sec for  19843.63 packets/sec (  0.050394 ms per packet) with standard deviation of   0.002432 ms
  qSpeedTest(send=512    , recv=8      ) in 0.050362000 sec for  19856.24 packets/sec (  0.050362 ms per packet) with standard deviation of   0.001982 ms
  qSpeedTest(send=512    , recv=16     ) in 0.050612000 sec for  19758.16 packets/sec (  0.050612 ms per packet) with standard deviation of   0.001977 ms
  qSpeedTest(send=512    , recv=32     ) in 0.050446000 sec for  19823.18 packets/sec (  0.050446 ms per packet) with standard deviation of   0.001591 ms
  qSpeedTest(send=512    , recv=64     ) in 0.050786000 sec for  19690.46 packets/sec (  0.050786 ms per packet) with standard deviation of   0.001496 ms
  qSpeedTest(send=512    , recv=128    ) in 0.052420000 sec for  19076.69 packets/sec (  0.052420 ms per packet) with standard deviation of   0.001954 ms
  qSpeedTest(send=512    , recv=256    ) in 0.053425000 sec for  18717.83 packets/sec (  0.053425 ms per packet) with standard deviation of   0.002012 ms
  qSpeedTest(send=512    , recv=512    ) in 0.058670000 sec for  17044.49 packets/sec (  0.058670 ms per packet) with standard deviation of   0.004880 ms
  qSpeedTest(send=512    , recv=1024   ) in 0.062009000 sec for  16126.69 packets/sec (  0.062009 ms per packet) with standard deviation of   0.001987 ms
  qSpeedTest(send=1024   , recv=0      ) in 0.053092000 sec for  18835.23 packets/sec (  0.053092 ms per packet) with standard deviation of   0.003347 ms
  qSpeedTest(send=1024   , recv=4      ) in 0.054213000 sec for  18445.76 packets/sec (  0.054213 ms per packet) with standard deviation of   0.001928 ms
  qSpeedTest(send=1024   , recv=8      ) in 0.053599000 sec for  18657.06 packets/sec (  0.053599 ms per packet) with standard deviation of   0.002024 ms
  qSpeedTest(send=1024   , recv=16     ) in 0.056705000 sec for  17635.13 packets/sec (  0.056705 ms per packet) with standard deviation of   0.005067 ms
  qSpeedTest(send=1024   , recv=32     ) in 0.056331000 sec for  17752.21 packets/sec (  0.056331 ms per packet) with standard deviation of   0.005956 ms
  qSpeedTest(send=1024   , recv=64     ) in 0.060983000 sec for  16398.01 packets/sec (  0.060983 ms per packet) with standard deviation of   0.009666 ms
  qSpeedTest(send=1024   , recv=128    ) in 0.052064000 sec for  19207.13 packets/sec (  0.052064 ms per packet) with standard deviation of   0.002793 ms
  qSpeedTest(send=1024   , recv=256    ) in 0.057106000 sec for  17511.29 packets/sec (  0.057106 ms per packet) with standard deviation of   0.002904 ms
  qSpeedTest(send=1024   , recv=512    ) in 0.073955000 sec for  13521.74 packets/sec (  0.073955 ms per packet) with standard deviation of   0.013739 ms
  qSpeedTest(send=1024   , recv=1024   ) in 0.074225000 sec for  13472.55 packets/sec (  0.074225 ms per packet) with standard deviation of   0.015451 ms
  Testing receiving 4.0MB of data using varying receive packet sizes:
  qSpeedTest(send=0      , recv=32     ) 131072 packets needed to receive 4.0MB in 6.696583000 sec for 0.597320 MB/sec for  19572.97 packets/sec (  0.051091 ms per packet)
  qSpeedTest(send=0      , recv=64     )  65536 packets needed to receive 4.0MB in 3.230414000 sec for 1.238231 MB/sec for  20287.18 packets/sec (  0.049292 ms per packet)
  qSpeedTest(send=0      , recv=128    )  32768 packets needed to receive 4.0MB in 1.686612000 sec for 2.371619 MB/sec for  19428.30 packets/sec (  0.051471 ms per packet)
  qSpeedTest(send=0      , recv=256    )  16384 packets needed to receive 4.0MB in 0.845153000 sec for 4.732871 MB/sec for  19385.84 packets/sec (  0.051584 ms per packet)
  qSpeedTest(send=0      , recv=512    )   8192 packets needed to receive 4.0MB in 0.421588000 sec for 9.487936 MB/sec for  19431.29 packets/sec (  0.051463 ms per packet)
  qSpeedTest(send=0      , recv=1024   )   4096 packets needed to receive 4.0MB in 0.232212000 sec for 17.225637 MB/sec for  17639.05 packets/sec (  0.056692 ms per packet)

After:

  (lldb) process plugin packet speed-test
  Testing sending 1000 packets of various sizes:
  qSpeedTest(send=0      , recv=0      ) in 0.047088000 sec for  21236.83 packets/sec (  0.047088 ms per packet) with standard deviation of   0.006629 ms
  qSpeedTest(send=0      , recv=4      ) in 0.045426000 sec for  22013.82 packets/sec (  0.045426 ms per packet) with standard deviation of   0.001687 ms
  qSpeedTest(send=0      , recv=8      ) in 0.045206000 sec for  22120.96 packets/sec (  0.045206 ms per packet) with standard deviation of   0.001241 ms
  qSpeedTest(send=0      , recv=16     ) in 0.045476000 sec for  21989.62 packets/sec (  0.045476 ms per packet) with standard deviation of   0.001294 ms
  qSpeedTest(send=0      , recv=32     ) in 0.045909000 sec for  21782.22 packets/sec (  0.045909 ms per packet) with standard deviation of   0.001929 ms
  qSpeedTest(send=0      , recv=64     ) in 0.046741000 sec for  21394.49 packets/sec (  0.046741 ms per packet) with standard deviation of   0.001344 ms
  qSpeedTest(send=0      , recv=128    ) in 0.048040000 sec for  20815.99 packets/sec (  0.048040 ms per packet) with standard deviation of   0.001184 ms
  qSpeedTest(send=0      , recv=256    ) in 0.049685000 sec for  20126.80 packets/sec (  0.049685 ms per packet) with standard deviation of   0.001366 ms
  qSpeedTest(send=0      , recv=512    ) in 0.052725000 sec for  18966.34 packets/sec (  0.052725 ms per packet) with standard deviation of   0.001989 ms
  qSpeedTest(send=0      , recv=1024   ) in 0.059048000 sec for  16935.38 packets/sec (  0.059048 ms per packet) with standard deviation of   0.001811 ms
  qSpeedTest(send=4      , recv=0      ) in 0.044740000 sec for  22351.36 packets/sec (  0.044740 ms per packet) with standard deviation of   0.001847 ms
  qSpeedTest(send=4      , recv=4      ) in 0.045536000 sec for  21960.65 packets/sec (  0.045536 ms per packet) with standard deviation of   0.001471 ms
  qSpeedTest(send=4      , recv=8      ) in 0.045569000 sec for  21944.74 packets/sec (  0.045569 ms per packet) with standard deviation of   0.001264 ms
  qSpeedTest(send=4      , recv=16     ) in 0.045332000 sec for  22059.47 packets/sec (  0.045332 ms per packet) with standard deviation of   0.001097 ms
  qSpeedTest(send=4      , recv=32     ) in 0.046639000 sec for  21441.28 packets/sec (  0.046639 ms per packet) with standard deviation of   0.004458 ms
  qSpeedTest(send=4      , recv=64     ) in 0.050692000 sec for  19726.98 packets/sec (  0.050692 ms per packet) with standard deviation of   0.003364 ms
  qSpeedTest(send=4      , recv=128    ) in 0.050537000 sec for  19787.48 packets/sec (  0.050537 ms per packet) with standard deviation of   0.001669 ms
  qSpeedTest(send=4      , recv=256    ) in 0.052030000 sec for  19219.68 packets/sec (  0.052030 ms per packet) with standard deviation of   0.001357 ms
  qSpeedTest(send=4      , recv=512    ) in 0.057476000 sec for  17398.57 packets/sec (  0.057476 ms per packet) with standard deviation of   0.005383 ms
  qSpeedTest(send=4      , recv=1024   ) in 0.062974000 sec for  15879.57 packets/sec (  0.062974 ms per packet) with standard deviation of   0.006826 ms
  qSpeedTest(send=8      , recv=0      ) in 0.048881000 sec for  20457.85 packets/sec (  0.048881 ms per packet) with standard deviation of   0.007901 ms
  qSpeedTest(send=8      , recv=4      ) in 0.049233000 sec for  20311.58 packets/sec (  0.049233 ms per packet) with standard deviation of   0.006031 ms
  qSpeedTest(send=8      , recv=8      ) in 0.049758000 sec for  20097.27 packets/sec (  0.049758 ms per packet) with standard deviation of   0.007929 ms
  qSpeedTest(send=8      , recv=16     ) in 0.049089000 sec for  20371.16 packets/sec (  0.049089 ms per packet) with standard deviation of   0.006375 ms
  qSpeedTest(send=8      , recv=32     ) in 0.050110000 sec for  19956.10 packets/sec (  0.050110 ms per packet) with standard deviation of   0.008473 ms
  qSpeedTest(send=8      , recv=64     ) in 0.050779000 sec for  19693.18 packets/sec (  0.050779 ms per packet) with standard deviation of   0.005380 ms
  qSpeedTest(send=8      , recv=128    ) in 0.053557000 sec for  18671.70 packets/sec (  0.053557 ms per packet) with standard deviation of   0.008242 ms
  qSpeedTest(send=8      , recv=256    ) in 0.054547000 sec for  18332.81 packets/sec (  0.054547 ms per packet) with standard deviation of   0.007676 ms
  qSpeedTest(send=8      , recv=512    ) in 0.058448000 sec for  17109.22 packets/sec (  0.058448 ms per packet) with standard deviation of   0.009949 ms
  qSpeedTest(send=8      , recv=1024   ) in 0.064296000 sec for  15553.07 packets/sec (  0.064296 ms per packet) with standard deviation of   0.007377 ms
  qSpeedTest(send=16     , recv=0      ) in 0.047807000 sec for  20917.44 packets/sec (  0.047807 ms per packet) with standard deviation of   0.008033 ms
  qSpeedTest(send=16     , recv=4      ) in 0.047000000 sec for  21276.60 packets/sec (  0.047000 ms per packet) with standard deviation of   0.005585 ms
  qSpeedTest(send=16     , recv=8      ) in 0.047780000 sec for  20929.26 packets/sec (  0.047780 ms per packet) with standard deviation of   0.006055 ms
  qSpeedTest(send=16     , recv=16     ) in 0.048940000 sec for  20433.18 packets/sec (  0.048940 ms per packet) with standard deviation of   0.007877 ms
  qSpeedTest(send=16     , recv=32     ) in 0.048452000 sec for  20638.98 packets/sec (  0.048452 ms per packet) with standard deviation of   0.006351 ms
  qSpeedTest(send=16     , recv=64     ) in 0.053125000 sec for  18823.53 packets/sec (  0.053125 ms per packet) with standard deviation of   0.007059 ms
  qSpeedTest(send=16     , recv=128    ) in 0.054247000 sec for  18434.20 packets/sec (  0.054247 ms per packet) with standard deviation of   0.006543 ms
  qSpeedTest(send=16     , recv=256    ) in 0.050342000 sec for  19864.13 packets/sec (  0.050342 ms per packet) with standard deviation of   0.003944 ms
  qSpeedTest(send=16     , recv=512    ) in 0.056098000 sec for  17825.95 packets/sec (  0.056098 ms per packet) with standard deviation of   0.004119 ms
  qSpeedTest(send=16     , recv=1024   ) in 0.058348000 sec for  17138.55 packets/sec (  0.058348 ms per packet) with standard deviation of   0.002004 ms
  qSpeedTest(send=32     , recv=0      ) in 0.044705000 sec for  22368.86 packets/sec (  0.044705 ms per packet) with standard deviation of   0.003299 ms
  qSpeedTest(send=32     , recv=4      ) in 0.046046000 sec for  21717.41 packets/sec (  0.046046 ms per packet) with standard deviation of   0.001855 ms
  qSpeedTest(send=32     , recv=8      ) in 0.045633000 sec for  21913.96 packets/sec (  0.045633 ms per packet) with standard deviation of   0.001534 ms
  qSpeedTest(send=32     , recv=16     ) in 0.045522000 sec for  21967.40 packets/sec (  0.045522 ms per packet) with standard deviation of   0.001016 ms
  qSpeedTest(send=32     , recv=32     ) in 0.046046000 sec for  21717.41 packets/sec (  0.046046 ms per packet) with standard deviation of   0.001172 ms
  qSpeedTest(send=32     , recv=64     ) in 0.046843000 sec for  21347.91 packets/sec (  0.046843 ms per packet) with standard deviation of   0.001441 ms
  qSpeedTest(send=32     , recv=128    ) in 0.047837000 sec for  20904.32 packets/sec (  0.047837 ms per packet) with standard deviation of   0.001571 ms
  qSpeedTest(send=32     , recv=256    ) in 0.049504000 sec for  20200.39 packets/sec (  0.049504 ms per packet) with standard deviation of   0.001091 ms
  qSpeedTest(send=32     , recv=512    ) in 0.052681000 sec for  18982.18 packets/sec (  0.052681 ms per packet) with standard deviation of   0.001701 ms
  qSpeedTest(send=32     , recv=1024   ) in 0.058205000 sec for  17180.65 packets/sec (  0.058205 ms per packet) with standard deviation of   0.002028 ms
  qSpeedTest(send=64     , recv=0      ) in 0.045595000 sec for  21932.23 packets/sec (  0.045595 ms per packet) with standard deviation of   0.001447 ms
  qSpeedTest(send=64     , recv=4      ) in 0.048343000 sec for  20685.52 packets/sec (  0.048343 ms per packet) with standard deviation of   0.004192 ms
  qSpeedTest(send=64     , recv=8      ) in 0.052826000 sec for  18930.07 packets/sec (  0.052826 ms per packet) with standard deviation of   0.006674 ms
  qSpeedTest(send=64     , recv=16     ) in 0.053331000 sec for  18750.82 packets/sec (  0.053331 ms per packet) with standard deviation of   0.006791 ms
  qSpeedTest(send=64     , recv=32     ) in 0.053790000 sec for  18590.82 packets/sec (  0.053790 ms per packet) with standard deviation of   0.005458 ms
  qSpeedTest(send=64     , recv=64     ) in 0.049696000 sec for  20122.34 packets/sec (  0.049696 ms per packet) with standard deviation of   0.002810 ms
  qSpeedTest(send=64     , recv=128    ) in 0.050803000 sec for  19683.88 packets/sec (  0.050803 ms per packet) with standard deviation of   0.001376 ms
  qSpeedTest(send=64     , recv=256    ) in 0.052227000 sec for  19147.18 packets/sec (  0.052227 ms per packet) with standard deviation of   0.001451 ms
  qSpeedTest(send=64     , recv=512    ) in 0.056122000 sec for  17818.32 packets/sec (  0.056122 ms per packet) with standard deviation of   0.002323 ms
  qSpeedTest(send=64     , recv=1024   ) in 0.061925000 sec for  16148.57 packets/sec (  0.061925 ms per packet) with standard deviation of   0.002727 ms
  qSpeedTest(send=128    , recv=0      ) in 0.048665000 sec for  20548.65 packets/sec (  0.048665 ms per packet) with standard deviation of   0.002070 ms
  qSpeedTest(send=128    , recv=4      ) in 0.049676000 sec for  20130.45 packets/sec (  0.049676 ms per packet) with standard deviation of   0.001542 ms
  qSpeedTest(send=128    , recv=8      ) in 0.049602000 sec for  20160.48 packets/sec (  0.049602 ms per packet) with standard deviation of   0.001353 ms
  qSpeedTest(send=128    , recv=16     ) in 0.049804000 sec for  20078.71 packets/sec (  0.049804 ms per packet) with standard deviation of   0.001733 ms
  qSpeedTest(send=128    , recv=32     ) in 0.050268000 sec for  19893.37 packets/sec (  0.050268 ms per packet) with standard deviation of   0.001648 ms
  qSpeedTest(send=128    , recv=64     ) in 0.050944000 sec for  19629.40 packets/sec (  0.050944 ms per packet) with standard deviation of   0.001650 ms
  qSpeedTest(send=128    , recv=128    ) in 0.052144000 sec for  19177.66 packets/sec (  0.052144 ms per packet) with standard deviation of   0.001757 ms
  qSpeedTest(send=128    , recv=256    ) in 0.053151000 sec for  18814.32 packets/sec (  0.053151 ms per packet) with standard deviation of   0.008508 ms
  qSpeedTest(send=128    , recv=512    ) in 0.056988000 sec for  17547.55 packets/sec (  0.056988 ms per packet) with standard deviation of   0.002518 ms
  qSpeedTest(send=128    , recv=1024   ) in 0.062617000 sec for  15970.10 packets/sec (  0.062617 ms per packet) with standard deviation of   0.002400 ms
  qSpeedTest(send=256    , recv=0      ) in 0.049461000 sec for  20217.95 packets/sec (  0.049461 ms per packet) with standard deviation of   0.001476 ms
  qSpeedTest(send=256    , recv=4      ) in 0.050928000 sec for  19635.56 packets/sec (  0.050928 ms per packet) with standard deviation of   0.001747 ms
  qSpeedTest(send=256    , recv=8      ) in 0.050779000 sec for  19693.18 packets/sec (  0.050779 ms per packet) with standard deviation of   0.001450 ms
  qSpeedTest(send=256    , recv=16     ) in 0.050916000 sec for  19640.19 packets/sec (  0.050916 ms per packet) with standard deviation of   0.002230 ms
  qSpeedTest(send=256    , recv=32     ) in 0.051062000 sec for  19584.04 packets/sec (  0.051062 ms per packet) with standard deviation of   0.001511 ms
  qSpeedTest(send=256    , recv=64     ) in 0.052163000 sec for  19170.68 packets/sec (  0.052163 ms per packet) with standard deviation of   0.001650 ms
  qSpeedTest(send=256    , recv=128    ) in 0.053406000 sec for  18724.49 packets/sec (  0.053406 ms per packet) with standard deviation of   0.001675 ms
  qSpeedTest(send=256    , recv=256    ) in 0.055275000 sec for  18091.36 packets/sec (  0.055275 ms per packet) with standard deviation of   0.006017 ms
  qSpeedTest(send=256    , recv=512    ) in 0.058381000 sec for  17128.86 packets/sec (  0.058381 ms per packet) with standard deviation of   0.006529 ms
  qSpeedTest(send=256    , recv=1024   ) in 0.062474000 sec for  16006.66 packets/sec (  0.062474 ms per packet) with standard deviation of   0.002550 ms
  qSpeedTest(send=512    , recv=0      ) in 0.050066000 sec for  19973.63 packets/sec (  0.050066 ms per packet) with standard deviation of   0.001578 ms
  qSpeedTest(send=512    , recv=4      ) in 0.051145000 sec for  19552.25 packets/sec (  0.051145 ms per packet) with standard deviation of   0.002413 ms
  qSpeedTest(send=512    , recv=8      ) in 0.051583000 sec for  19386.23 packets/sec (  0.051583 ms per packet) with standard deviation of   0.001808 ms
  qSpeedTest(send=512    , recv=16     ) in 0.052346000 sec for  19103.66 packets/sec (  0.052346 ms per packet) with standard deviation of   0.005228 ms
  qSpeedTest(send=512    , recv=32     ) in 0.054020000 sec for  18511.66 packets/sec (  0.054020 ms per packet) with standard deviation of   0.004604 ms
  qSpeedTest(send=512    , recv=64     ) in 0.052584000 sec for  19017.19 packets/sec (  0.052584 ms per packet) with standard deviation of   0.001935 ms
  qSpeedTest(send=512    , recv=128    ) in 0.054611000 sec for  18311.33 packets/sec (  0.054611 ms per packet) with standard deviation of   0.001507 ms
  qSpeedTest(send=512    , recv=256    ) in 0.055602000 sec for  17984.96 packets/sec (  0.055602 ms per packet) with standard deviation of   0.004139 ms
  qSpeedTest(send=512    , recv=512    ) in 0.060131000 sec for  16630.36 packets/sec (  0.060131 ms per packet) with standard deviation of   0.004732 ms
  qSpeedTest(send=512    , recv=1024   ) in 0.063374000 sec for  15779.34 packets/sec (  0.063374 ms per packet) with standard deviation of   0.002498 ms
  qSpeedTest(send=1024   , recv=0      ) in 0.058207000 sec for  17180.06 packets/sec (  0.058207 ms per packet) with standard deviation of   0.004969 ms
  qSpeedTest(send=1024   , recv=4      ) in 0.057945000 sec for  17257.74 packets/sec (  0.057945 ms per packet) with standard deviation of   0.002644 ms
  qSpeedTest(send=1024   , recv=8      ) in 0.056318000 sec for  17756.31 packets/sec (  0.056318 ms per packet) with standard deviation of   0.001681 ms
  qSpeedTest(send=1024   , recv=16     ) in 0.057504000 sec for  17390.10 packets/sec (  0.057504 ms per packet) with standard deviation of   0.003238 ms
  qSpeedTest(send=1024   , recv=32     ) in 0.058180000 sec for  17188.04 packets/sec (  0.058180 ms per packet) with standard deviation of   0.001859 ms
  qSpeedTest(send=1024   , recv=64     ) in 0.057998000 sec for  17241.97 packets/sec (  0.057998 ms per packet) with standard deviation of   0.002039 ms
  qSpeedTest(send=1024   , recv=128    ) in 0.058390000 sec for  17126.22 packets/sec (  0.058390 ms per packet) with standard deviation of   0.001929 ms
  qSpeedTest(send=1024   , recv=256    ) in 0.061801000 sec for  16180.97 packets/sec (  0.061801 ms per packet) with standard deviation of   0.004318 ms
  qSpeedTest(send=1024   , recv=512    ) in 0.063850000 sec for  15661.71 packets/sec (  0.063850 ms per packet) with standard deviation of   0.002689 ms
  qSpeedTest(send=1024   , recv=1024   ) in 0.068770000 sec for  14541.22 packets/sec (  0.068770 ms per packet) with standard deviation of   0.002334 ms
  Testing receiving 4.0MB of data using varying receive packet sizes:
  qSpeedTest(send=0      , recv=32     ) 131072 packets needed to receive 4.0MB in 5.729221000 sec for 0.698175 MB/sec for  22877.80 packets/sec (  0.043710 ms per packet)
  qSpeedTest(send=0      , recv=64     )  65536 packets needed to receive 4.0MB in 3.002543000 sec for 1.332204 MB/sec for  21826.83 packets/sec (  0.045815 ms per packet)
  qSpeedTest(send=0      , recv=128    )  32768 packets needed to receive 4.0MB in 1.634748000 sec for 2.446860 MB/sec for  20044.68 packets/sec (  0.049889 ms per packet)
  qSpeedTest(send=0      , recv=256    )  16384 packets needed to receive 4.0MB in 0.834877000 sec for 4.791125 MB/sec for  19624.45 packets/sec (  0.050957 ms per packet)
  qSpeedTest(send=0      , recv=512    )   8192 packets needed to receive 4.0MB in 0.462364000 sec for 8.651193 MB/sec for  17717.64 packets/sec (  0.056441 ms per packet)
  qSpeedTest(send=0      , recv=1024   )   4096 packets needed to receive 4.0MB in 0.243027000 sec for 16.459076 MB/sec for  16854.09 packets/sec (  0.059333 ms per packet)

The results seem to be within error margin or even slightly faster (although I can't explain why).

The mac build is still ongiong. I'll have the results tomorrow, but I wouldn't expect this to affect them to be any different. In the uncontended case, all this is doing is replacing a recursive mutex with a read/write lock + a normal mutex. All of these operations should be extremely fast compared to the rest of the things we are doing here(*). If we wanted to speed things up here, we should probably try to avoid all the string copying going on when building packets.

(*) There is also the push/pop of an item on the queue, but again that should be very fast in case of an empty queue. And we could even optimize that away in the case we have an exclusive lock, but it does not seem to be necessary.


https://reviews.llvm.org/D22914





More information about the lldb-commits mailing list