8261242: [Linux] OSContainer::is_containerized() returns true when run outside a container

Reviewed-by: stuefe, iklam
This commit is contained in:
Severin Gehwolf 2024-07-01 08:47:29 +00:00
parent 71e3798bf6
commit 0a6ffa5795
19 changed files with 290 additions and 64 deletions

View file

@ -71,6 +71,23 @@ public interface Metrics {
*/
public String getProvider();
/**
* Determines whether or not the underlying system
* has useful metrics (a.k.a. is containerized).
*
* @implNote
* Note that Metrics on some systems aren't useful.
* For example on a regular Linux system with cgroups
* present, with no limits enforced and not running in
* a container, Metric aren't useful. This can be used
* in order to determine if the system is containerized.
*
* @return true when the JVM runs in containerized mode.
* false otherwise.
*
*/
public boolean isContainerized();
/* ***************************************************************
* CPU Accounting Subsystem

View file

@ -370,6 +370,10 @@ public final class LauncherHelper {
final long longRetvalNotSupported = -2;
ostream.println(INDENT + "Provider: " + c.getProvider());
if (!c.isContainerized()) {
ostream.println(INDENT + "System not containerized.");
return;
}
ostream.println(INDENT + "Effective CPU Count: " + c.getEffectiveCpuCount());
ostream.println(formatCpuVal(c.getCpuPeriod(), INDENT + "CPU Period: ", longRetvalNotSupported));
ostream.println(formatCpuVal(c.getCpuQuota(), INDENT + "CPU Quota: ", longRetvalNotSupported));