On 12/06/2018 12:12 AM, Bob Vandette wrote:
On Jun 11, 2018, at 4:32 AM, David Holmes <david.hol...@oracle.com
<mailto:david.hol...@oracle.com>> wrote:
Sorry Bob I haven't had a chance to look at this detail.
For the Java code ... methods that return arrays should return
zero-length arrays when something is not available rather than null.
All methods do return zero length arrays except I missed the
getPerCpuUsage. I’ll fix that one and correct the javadoc.
There are a few more too:
231 * @return An array of available CPUs or null if metric is not
available.
232 *
233 */
234 public int[] getCpuSetCpus();
242 * @return An array of available and online CPUs or null if
the metric
243 * is not available.
244 *
245 */
246 public int[] getEffectiveCpuSetCpus();
256 * @return An array of available memory nodes or null if
metric is not available.
257 *
258 */
259 public int[] getCpuSetMems();
267 * @return An array of available and online nodes or null if
the metric
268 * is not available.
269 *
270 */
271 public int[] getEffectiveCpuSetMems();
For getCpuPeriod() the term "operating system time slice" can be
misconstrued as being related to the scheduler timeslice that may, or
may not, exist, depending on the scheduler and scheduling policy etc.
This "timeslice" is something specific to cgroups - no?
The comments reads:
* Returns the length of the operating system time slice, in
* milliseconds, for processes within the Isolation Group.
The comment does infer that it’s process and cgroup (Isolation group)
specific and not the generic os timeslice.
Isn’t this sufficient?
The phrase "operating system" makes this sound like some kind of global
timeslice notion - which it isn't. And I don't like to think of cpu
periods/shares/quotas in terms of "time slice" anyway. I don't see the
Docker or Cgroup documentation using "time slice" either. It suffices
IMHO to just say for period:
* Returns the length of the scheduling period, in
* milliseconds, for processes within the Isolation Group.
then for quota:
* Returns the total available run-time allowed, in milliseconds,
* during each scheduling period for all tasks in the Isolation Group.
Thanks,
David
Thanks,
Bob.
David
On 8/06/2018 3:43 AM, Bob Vandette wrote:
Can I get one more reviewer for this RFE so I can integrate it?
http://cr.openjdk.java.net/~bobv/8203357/webrev.01
Mandy Chung has reviewed this change.
I’ve run Mach5 hotspot and core lib tests.
I’ve reviewed the tests which were written by Harsha Wardhana
I filed a CSR for the command line change and it’s now approved and
closed.
Thanks,
Bob.
On May 30, 2018, at 3:45 PM, Bob Vandette <bob.vande...@oracle.com
<mailto:bob.vande...@oracle.com>> wrote:
Please review the following RFE which adds an internal API, along
with jtreg tests that provide
access to Docker container configuration data and metrics. In
addition to the API which we hope to
take advantage of in the future with Java Flight Recorder and a JMX
Mbean, I’ve added an additional
option to -XshowSettings:system than dumps out the container or host
cgroup confguration
information. See the sample output below:
RFE: Container Metrics
https://bugs.openjdk.java.net/browse/JDK-8203357
WEBREV:
http://cr.openjdk.java.net/~bobv/8203357/webrev.01
This commit will also include a fix for the following bug.
BUG: [TESTBUG] Test /runtime/containers/cgroup/PlainRead.java fails
https://bugs.openjdk.java.net/browse/JDK-8203691
WEBREV:
http://cr.openjdk.java.net/~bobv/8203357/webrev.00/test/hotspot/jtreg/runtime/containers/cgroup/PlainRead.java.sdiff.html
SAMPLE USAGE and OUTPUT:
docker run —memory=256m --cpuset-cpus 4-7 -it ubuntu bash
./java -XshowSettings:system
Operating System Metrics:
Provider: cgroupv1
Effective CPU Count: 4
CPU Period: 100000
CPU Quota: -1
CPU Shares: -1
List of Processors, 4 total:
4 5 6 7
List of Effective Processors, 4 total:
4 5 6 7
List of Memory Nodes, 2 total:
0 1
List of Available Memory Nodes, 2 total:
0 1
CPUSet Memory Pressure Enabled: false
Memory Limit: 256.00M
Memory Soft Limit: Unlimited
Memory & Swap Limit: 512.00M
Kernel Memory Limit: Unlimited
TCP Memory Limit: Unlimited
Out Of Memory Killer Enabled: true
TEST RESULTS:
testing runtime container APIs
Directory "JTwork" not found: creating
Passed: runtime/containers/cgroup/PlainRead.java
Passed: runtime/containers/docker/DockerBasicTest.java
Passed: runtime/containers/docker/TestCPUAwareness.java
Passed: runtime/containers/docker/TestCPUSets.java
Passed: runtime/containers/docker/TestMemoryAwareness.java
Passed: runtime/containers/docker/TestMisc.java
Test results: passed: 6
Results written to /export/users/bobv/jdk11/build/jtreg/JTwork
testing jdk.internal.platform APIs
Passed: jdk/internal/platform/cgroup/TestCgroupMetrics.java
Passed: jdk/internal/platform/docker/TestDockerCpuMetrics.java
Passed: jdk/internal/platform/docker/TestDockerMemoryMetrics.java
Passed: jdk/internal/platform/docker/TestSystemMetrics.java
Test results: passed: 4
Results written to /export/users/bobv/jdk11/build/jtreg/JTwork
testing -XshowSettings:system launcher option
Passed: tools/launcher/Settings.java
Test results: passed: 1
Bob.