-
Notifications
You must be signed in to change notification settings - Fork 728
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
Display CPU Governor information in javacore #2838
Comments
@pshipton @DanHeidinga Can i get your views on it please ? |
@bharathappali I can see how having this info would be useful. Here's a couple of questions to help me understand the scope of the this change and the broader implications:
|
@DanHeidinga Thank you for posting those questions. Which are quite helpful and important.
Its a moderately expensive operation as its processed every time the javacore dump is generated. We read and write to javacore directly when its processed will not be storing it.
Initially i thought to add 1 line per cpu. But what you said was right it doesn't look good in a case where we have many CPU's. I have come up with different ways listed below for representing them which take less lines to be displayed in javacore. Array model representation (for each governor) :
More simplified with ranges it would be something like :
Short form representation with 16 CPU's per line
Its widely applicable irrespective of cgroups. If we run in cgroups with cpu restrictions then will be getting the governor info of those specific CPU's
yes, In linux there are 6 cpu frequency governors. Note: I have got the info of cpu frequency governors from this link from section 2.
Please kindly provide your views on the representation of the |
Can the frequency governor change at runtime? Or is it a static assignment? I'd rather cache the info than read it over and over.... depending on how expensive it is to read. Is there a reason to only record the two kinds (performance / powersave) when there are 4 other kinds? I think we need to figure out what data we want before we pick the format. |
@DanHeidinga I'm sorry for delayed reply. I haven't gone through it for a while.
Yeah there is a possibility to change it in runtime.
its just for a one time use when javacore is generated. As there is no other mechanism/service using this info I'm thinking that caching it would not be that useful from a memory allocation perspective. I might be wrong, I'm sorry if i was.
My system (RHEL 7.5) currently showing only those two in available governors for my cpus (got the info from |
@bharathappali Please add a tag for the doc changes needed (doc:externals) and open an issue at the openj9-docs repository: https://github.com/eclipse/openj9-docs/issues/new?template=new-documentation-change.md We will then be able to add this to our 0.12.0 release list. Thanks! |
@SueChaplain Thanks for pointing it. Created the issue openj9-docs/issues/136. Will be updating it accordingly. |
Given where this is at, and the upcoming holidays and absences, I'm guessing this won't make the 0.12 release. I've moved it out of the 0.12 milestone and into the 0.14 milestone to reduce the size of the 0.12 milestone. If it does happen to make it into the 0.12 release, we can fix the target milestone. |
@DanHeidinga As the OpenJ9 PR #3348 makes changes to add CPU Governors to javacore with a representation [Governor - CPU's]. I would like to know your views on that representation format. Thanks |
@bharathappali Looking at PRs #3348 and #4176 , I am more inclined towards #3348 I also suggest to use bits for storing list of cpus for each governor. In fact having port library apis for maintaining cpu sets would be a good addition I feel.
Whether these APIs would be useful for OMR or should they be in OpenJ9, or just be internal functions, is open to discussion.
This code does not need to have a hard coded list of governors. |
Moving forward until this picks up again. |
When running in containers with CPU quota set, performance of the application may be adversely affected if CPU frequency governor is set to "powersave".
As an example, compare application running on 4 CPUs with 100% quota vs running it on 8 CPUs with 50% quota. If the CPU frequency governor is set to "powersave", performance in latter case is very poor even though the application has 4 "effective" cpus.
We have observed this during internal testing on DayTrader 3. We ran DayTrader 3 with following cases (Frequency Governor - powersave(default)):
Throughput comparison for the above cases:
We also asked about this on Ubuntu forum here: https://askubuntu.com/questions/1007656/behavior-of-powersave-freq-governor-when-cpu-quota-is-set/1007731#1007731
When we came to know that its due to the powersave frequency governor. we ran again with performance frequency governor and saw the difference in throughput
It appears this drop in performance is expected with "powersave" governor. If thats the case then it would be useful to capture the CPU frequency governor being used in javacore which can be helpful in dealing with performance problems.
The Javacore
CPU information section
could be delivering this extended feature and might look something like :Please kindly provide your views on it
FYI @ashu-mehra @dinogun @deesebas
The text was updated successfully, but these errors were encountered: