Aaron Smith created PROTON-1764:
-----------------------------------
Summary: Slow performance seen when running Go client
Key: PROTON-1764
URL: https://issues.apache.org/jira/browse/PROTON-1764
Project: Qpid Proton
Issue Type: Bug
Components: go-binding
Affects Versions: proton-c-0.18.1
Reporter: Aaron Smith
Assignee: Alan Conway
Slower than expected message deliver rate seen while running simple
benchmarking test. Setup:
Client(Go) Sender -> QPID Router -> Client Receiver(Go)
Profiling of reveals that a large percentage of time is spent in wrapper call
from Go to c.
Not sure if the call to C from Go is the issue.
Hi Aaron,
Here's the pointer for sender/receiver (both uses qpid go-binding).
Sender (with '-limit' option, it sends AMQP messages in 10sec for benchmarking):
[https://github.com/redhat-nfvpe/service-assurance-poc/tree/master/tools/sa-bench]
Receiver (based on electron sample):
[http://kagaribi.s1061123.net/receive.go]
Here is the results:
{noformat}
[root@nfvha-comp-01 sa-bench]# ./sa-bench -mode limit
amqp://127.0.0.1:5672/collectd/telemetry
sending AMQP in 10 seconds...Done!
Total: 171908 sent (duration:10.000103521s, mesg/sec: 17190.62204096157)
[root@nfvha-comp-01 electron_sample]# ./receive -prefetch 12
amqp://127.0.0.1:5672/collectd/telemetry
Listening on 1 connections
^C2018/02/15 01:44:51 Total: 171908 received.
2018/02/15 01:44:51 captured interrupt, stopping profiler and exiting...
{noformat}
Both program can collect profile data using '-pprofile' option as following:
{noformat}
[root@nfvha-comp-01 sa-bench]# ./sa-bench -mode limit -pprofile profile.out
amqp://127.0.0.1:5672/collectd/telemetry
sending AMQP in 10 seconds...Done!
Total: 189305 sent (duration:10.000111611s, mesg/sec: 18930.2887171546)
[root@nfvha-comp-01 sa-bench]# go tool pprof sa-bench profile.out
File: sa-bench
Build ID: 7ffec7b98a532892d7b9932b70b7451866cd4e5e
Type: cpu
Time: Feb 15, 2018 at 1:49am (EST)
Duration: 10.11s, Total samples = 15.75s (155.79%)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) top5
Showing nodes accounting for 9990ms, 63.43% of 15750ms total
Dropped 200 nodes (cum <= 78.75ms)
Showing top 5 nodes out of 144
flat flat% sum% cum cum%
6750ms 42.86% 42.86% 7080ms 44.95% runtime.cgocall
/usr/local/go/src/runtime/cgocall.go
1570ms 9.97% 52.83% 1590ms 10.10% syscall.Syscall
/usr/local/go/src/syscall/asm_linux_amd64.s
800ms 5.08% 57.90% 800ms 5.08% runtime.futex
/usr/local/go/src/runtime/sys_linux_amd64.s
440ms 2.79% 60.70% 770ms 4.89% runtime.runqgrab
/usr/local/go/src/runtime/proc.go
430ms 2.73% 63.43% 1070ms 6.79% runtime.selectgo
/usr/local/go/src/runtime/select.go
[root@nfvha-comp-01 electron_sample]# ./receive -prefetch 12 -pprofile
profile.out amqp://127.0.0.1:5672/collectd/telemetry
Listening on 1 connections
^C2018/02/15 01:49:25 Total: 181422 received.
2018/02/15 01:49:25 captured interrupt, stopping profiler and exiting...
[root@nfvha-comp-01 electron_sample]# go tool pprof receive profile.out
File: receive
Build ID: 66addd89d429ca678cbd6e336872bc604406f83e
Type: cpu
Time: Feb 15, 2018 at 1:49am (EST)
Duration: 14.78s, Total samples = 16.60s (112.31%)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) top 5
Showing nodes accounting for 10620ms, 63.98% of 16600ms total
Dropped 160 nodes (cum <= 83ms)
Showing top 5 nodes out of 124
flat flat% sum% cum cum%
5730ms 34.52% 34.52% 5960ms 35.90% runtime.cgocall
/usr/local/go/src/runtime/cgocall.go
2190ms 13.19% 47.71% 2220ms 13.37% syscall.Syscall
/usr/local/go/src/syscall/asm_linux_amd64.s
1070ms 6.45% 54.16% 1070ms 6.45% runtime.epollwait
/usr/local/go/src/runtime/sys_linux_amd64.s
860ms 5.18% 59.34% 4430ms 26.69% runtime.findrunnable
/usr/local/go/src/runtime/proc.go
770ms 4.64% 63.98% 1130ms 6.81% runtime.runqgrab
/usr/local/go/src/runtime/proc.go
(pprof) {noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]