New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gccgo: high cpu utilization on aix #26634
Comments
In fact, we do not need a grpc server for it. I am seeing this pattern for simple http sever as well.
The usage is stable when there is no request, but as soon as a request is made the cpu utilization increasesd to around 95% entitled capacity. After the request is answered, the usage remains at 95%. Please look at "entc%" field in the sample output. Topas output with server running (but have not answered any request):
topas output after server has answered a request:
|
It would seem that high CPU utilization is result of continuous polling.
after the responding to the request, we see this being continuously printed:
|
@ianlancetaylor can there be something we can do to debug this at our end? The problem is that even profiler has a bug(#26595) and it is really hard to find what is going on here. |
I don't have access to an AIX system myself, so I hope that you can debug it (I have sent an e-mail to the folks who contributed the AIX port--I don't know if they are on GitHub). The code in question in libgo/go/runtime/netpoll_aix.go. I don't know how the AIX |
Change https://golang.org/cl/126857 mentions this issue: |
Updates golang/go#26634 Change-Id: I5b97ceceed9a4c726831d2875360b27022e381cb Reviewed-on: https://go-review.googlesource.com/126857 Reviewed-by: Ian Lance Taylor <iant@golang.org>
Updates golang/go#26634 Reviewed-on: https://go-review.googlesource.com/126857 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263186 138bc75d-0d04-0410-961f-82ee72b054a4
We had noticed a performance issue on our side some days ago. This was due to the use of pollset_poll() routine for implementing libgo/go/runtime/netpoll_aix.go . |
Please run the "ldd" command on your agent executable and run "rpm -q --whatprovides ...." on each library which belongs to /opt/freeware in order to check which libraries are used for building your executable. |
Based on your email, the issue seems fixed. Please close this defect. |
Updates golang/go#26634 Reviewed-on: https://go-review.googlesource.com/126857 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263364 138bc75d-0d04-0410-961f-82ee72b054a4
Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (
go version
)?go version go1.10 gccgo (GCC) 8.0.1 20180305 (experimental) aix/ppc
Does this issue reproduce with the latest release?
Not sure.
What operating system and processor architecture are you using (
go env
)?What did you do?
Wrote a simple grpc server program and started the server.
The sample program lives here:
https://drive.google.com/file/d/1w6alI6PNicFCiA_7mCvEYvqTm-whbJH0/view?usp=sharing
To compile the progam, modify the makefile to use correct protoc and go compiler and then do:
make -f Makefile.aix grpc_server
What did you expect to see?
The CPU usage should have been more or less stable.
What did you see instead?
The CPU usage goes upto 103% of entitled capacity on an AIX LPAR. Please look at
Entc%
Without the grpc server running we have:
The text was updated successfully, but these errors were encountered: