[PATCH] staging: greybus: operation: add generic timeout support

Johan Hovold johan at kernel.org
Tue Jan 24 15:09:01 UTC 2017


On Mon, Jan 23, 2017 at 05:50:23PM +0100, Johan Hovold wrote:
> On Mon, Jan 23, 2017 at 03:39:43PM +0000, Bryan O'Donoghue wrote:

> > Have you run this through loopback without any # of in-flight operations
> > constrained ?
> 
> No, not yet as that would require also your changes to the loopback
> driver (the loopback driver still has its custom timeout implementation
> after this patch).
> 
> I tested this using gbsim and synchronous operations as my Ara build
> setup is currently broken.

Ok, I spent my morning restoring my Ara build setup (java apparently
broke after an nss update).

I tested Bryan's loopback cleanups on top of my core-timeout patch and
all look fine.

Some stats below for the interested.

Consistently increased throughput, which is not unexpected even if a
more controlled benchmark is needed to claim that to be a direct
consequence of the more efficient timeout handling (and not at least
partly due to noise). Note that the final test with 1000 outstanding
async operations shows a 50% throughput increase however.

Bryan, if you could consider my review feedback and respin your last
three patches on top of my timeout patch, I think we should be good.

Thanks,
Johan


core timeouts + loopback cleanups
---------------------------------
arche:/ # gb_loopback_test -i 1000 -s 128 -t sink -p

1970-9-3 22:9:55
 test:                  sink
 path:                  gb_loopback0
 size:                  128
 iterations:            1000
 errors:                0
 async:                 Disabled
 requests per-sec:      min=438, max=443, average=441.816132, jitter=5
 ap-throughput B/s:     min=68403 max=69198 average=68923.312500 jitter=795
 ap-latency usec:       min=1801 max=3303 average=2252.021973 jitter=1502
 apbridge-latency usec: min=0 max=0 average=0.000000 jitter=0
 gbphy-latency usec:    min=0 max=0 average=0.000000 jitter=0

arche:/ # gb_loopback_test -i 1000 -s 128 -t sink -x -c 4 -p

1970-9-3 22:9:24
 test:                  sink
 path:                  gb_loopback0
 size:                  128
 iterations:            1000
 errors:                0
 async:                 Enabled
 requests per-sec:      min=1556, max=1556, average=1556.902466, jitter=0
 ap-throughput B/s:     min=242876 max=242876 average=242876.781250 jitter=0
 ap-latency usec:       min=1548 max=3949 average=2226.724121 jitter=2401
 apbridge-latency usec: min=0 max=0 average=0.000000 jitter=0
 gbphy-latency usec:    min=0 max=0 average=0.000000 jitter=0

arche:/ # gb_loopback_test -i 1000 -s 128 -t sink -x -c 4 -p -o 2000           

1970-9-3 22:7:35
 test:                  sink
 path:                  gb_loopback0
 size:                  128
 iterations:            1000
 errors:                479
 async:                 Enabled
 requests per-sec:      min=889, max=889, average=889.307678, jitter=0
 ap-throughput B/s:     min=138731 max=138731 average=138732.000000 jitter=0
 ap-latency usec:       min=1489 max=3937 average=2498.234131 jitter=2448
 apbridge-latency usec: min=0 max=0 average=0.000000 jitter=0
 gbphy-latency usec:    min=0 max=0 average=0.000000 jitter=0

arche:/ # gb_loopback_test -i 1000 -s 128 -t sink -x -c 1000 -p -o 500000      

1970-9-3 22:13:37
 test:                  sink
 path:                  gb_loopback0
 size:                  128
 iterations:            1000
 errors:                0
 async:                 Enabled
 requests per-sec:      min=2448, max=2448, average=2448.567871, jitter=0
 ap-throughput B/s:     min=381976 max=381976 average=381976.593750 jitter=0
 ap-latency usec:       min=1818 max=390546 average=197478.406250 jitter=388728
 apbridge-latency usec: min=0 max=0 average=0.000000 jitter=0
 gbphy-latency usec:    min=0 max=0 average=0.000000 jitter=0


loopback custom timeouts
------------------------
arche:/ # gb_loopback_test -i 1000 -s 128 -t sink -p                           

1970-9-3 22:18:26
 test:                  sink
 path:                  gb_loopback0
 size:                  128
 iterations:            1000
 errors:                0
 async:                 Disabled
 requests per-sec:      min=399, max=410, average=404.397247, jitter=11
 ap-throughput B/s:     min=62393 max=64003 average=63085.972656 jitter=1610
 ap-latency usec:       min=1738 max=4180 average=2456.197021 jitter=2442
 apbridge-latency usec: min=0 max=0 average=0.000000 jitter=0
 gbphy-latency usec:    min=0 max=0 average=0.000000 jitter=0

arche:/ # gb_loopback_test -i 1000 -s 128 -t sink -x -c 4 -p

1970-9-3 22:19:45
 test:                  sink
 path:                  gb_loopback0
 size:                  128
 iterations:            1000
 errors:                0
 async:                 Enabled
 requests per-sec:      min=1602, max=1602, average=1602.304810, jitter=0
 ap-throughput B/s:     min=249959 max=249959 average=249959.546875 jitter=0
 ap-latency usec:       min=1370 max=12380 average=2295.093994 jitter=11010
 apbridge-latency usec: min=0 max=0 average=0.000000 jitter=0
 gbphy-latency usec:    min=0 max=0 average=0.000000 jitter=0

arche:/ # gb_loopback_test -i 1000 -s 128 -t sink -x -c 4 -p -o 2000

1970-9-3 22:20:21
 test:                  sink
 path:                  gb_loopback0
 size:                  128
 iterations:            1000
 errors:                500
 async:                 Enabled
 requests per-sec:      min=840, max=840, average=840.522583, jitter=0
 ap-throughput B/s:     min=131121 max=131121 average=131121.531250 jitter=0
 ap-latency usec:       min=1439 max=7243 average=2192.704102 jitter=5804
 apbridge-latency usec: min=0 max=0 average=0.000000 jitter=0
 gbphy-latency usec:    min=0 max=0 average=0.000000 jitter=0

arche:/ # gb_loopback_test -i 1000 -s 128 -t sink -x -c 1000 -p -o 500000 

1970-9-3 22:21:5
 test:                  sink
 path:                  gb_loopback0
 size:                  128
 iterations:            1000
 errors:                0
 async:                 Enabled
 requests per-sec:      min=1601, max=1601, average=1601.699097, jitter=0
 ap-throughput B/s:     min=249865 max=249865 average=249865.062500 jitter=0
 ap-latency usec:       min=6675 max=271112 average=137154.109375 jitter=264437
 apbridge-latency usec: min=0 max=0 average=0.000000 jitter=0
 gbphy-latency usec:    min=0 max=0 average=0.000000 jitter=0


More information about the devel mailing list