You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 27, 2023. It is now read-only.
Both the README and code comments would have you believe that only the sender requires options. That you can simply start the replier and it will base its behavior (per connection) on the sender's options as passed to -o. This would lead one to believe that the sender and replier negotiate the benchmark terms before starting the benchmark. However, while trying to diagnose something else, I noticed some unexpected behavior from the replier process. For each message from the sender it used tworecv(2) calls. This DTrace snippet below makes the behavior clear:
# dtrace -n 'syscall::recv:entry /cpu == 19/ { @["ask"] = quantize(arg2); @s[ustack()] = count(); }' -c 'psrset -e 5 /zones/826df1b9-e66f-493e-8bd2-8125a3b04bf3/root/root/seqtest-master/seqtest -S -o ssize=200,rsize=200,threads=1,count=100000 192.168.241.75,192.168.241.74:6667'
dtrace: description 'syscall::recv:entry ' matched 1 probe
ssz_max 200
Address 0: Host 192.168.241.74 Port 6667
t->ssz_max 200
Received 100000 replies
Time: 5121763.8 us
ROUND TRIP LATENCY:
Average: 49.5 us
Stddev: 0.8 us
Median: 49.5 us
90.0%ile: 49.9 us
99.0%ile: 50.3 us
99.9%ile: 52.7 us
Minimum: 42.7 us
Maximum: 127.9 us
dtrace: pid 23264 has exited
ask
value ------------- Distribution ------------- count
16 | 0
32 |@@@@@@@@@@@@@@@@@@@@ 100001
64 | 0
128 |@@@@@@@@@@@@@@@@@@@@ 100000
256 | 0
libc.so.1`__so_recv+0xa
libsocket.so.1`recv+0x22
seqtest`replier+0xfb
libc.so.1`_thrp_setup+0x8a
libc.so.1`_lwp_start
200001
Notice there are 200K calls to recv(2) on the replier alone. That's 100K more than expected.
If I pass options to the replier, so that it is aware of the proper size, things work as expected.
Both the README and code comments would have you believe that only the sender requires options. That you can simply start the replier and it will base its behavior (per connection) on the sender's options as passed to
-o. This would lead one to believe that the sender and replier negotiate the benchmark terms before starting the benchmark. However, while trying to diagnose something else, I noticed some unexpected behavior from the replier process. For each message from the sender it used tworecv(2)calls. This DTrace snippet below makes the behavior clear:Notice there are 200K calls to
recv(2)on the replier alone. That's 100K more than expected.If I pass options to the replier, so that it is aware of the proper size, things work as expected.
My preferred fix:
-oto replier print usage and exit.