RFR: 8289711: Add container configuration data to mbeans [v2]

xpbob duke at openjdk.org
Thu Jul 14 03:36:04 UTC 2022


On Tue, 12 Jul 2022 15:48:57 GMT, Alan Bateman <alanb at openjdk.org> wrote:

>>> @AlanBateman @jerboaa That's a good idea.Adding a special bean is only available on Linux systems.I do not know the process of creating a CSR, can you help me create a CSR
>> 
>> It's too early to think about a CSR, probably a bit premature to create a PR too because it will take a few iterations to come to agreement on what API to expose, if any.
>> 
>> I don't think this should be a standard API, meaning java.management/java.lang.management.ContainerMXBean is not the right place for this. A JDK-specific MXBean is an option but it would only be usable on Linux and maybe only usable when running in a container environment. Working down, it's not clear to me how stable the attributes are and the mapping to both cgroup v1 and v2. There is also overlap with OperatingSystemMXBean which already defines the "TotalSwapSpaceSize" attribute.  There's another level of detail beyond that with unusual value -2 to distinguish "not available" from "not supported".  So I think there are a few things to think about there. 
>> 
>> Another direction to think about is not exposing an API that you can compile against but instead just register a MBean that provides access to the attributes that are interesting for the container environment. By this I mean ManagementFactory.getPlatformMBeanServer().registerMBean(...). This would be enough to browse the MBean and its attributes in any JMX console and may give you a bit more flexibility to expose attributes that are specific to the cgroup version. I'm not saying this is the right direction, I'm just listing it here as something that could be explored. If the main use case is JMX consoles rather than programmatic access then it may not be too bad.
>
>> @AlanBateman OperatingSystemMXBean makes the CPU and Memory related information for a process available regardless of whether that process is running in a native operating system environment or a containerized environment. It does not provide container configuration information such as its provider (crgoups v1 or v2), CPU shares, CPU quota etc, which can be useful for monitoring and troubleshooting purposes.
> 
> Yes, I know this but I think there is a lot more thought required before deciding to augment this with another API for the container environment. There are a couple of things to explore.

@AlanBateman @jerboaa @poonamparhar @DamonFool 
Thanks for review.
I add mBeans using the registerMBean method.
We can get configuration information through JConsole, JMX exporter

-------------

PR: https://git.openjdk.org/jdk/pull/9372


More information about the serviceability-dev mailing list