3131#include " runtime/globals.hpp"
3232#include " runtime/os.hpp"
3333#include " utilities/globalDefinitions.hpp"
34+ #include " os_linux.hpp"
3435
3536/*
3637 * Set directory to subsystem specific files based
@@ -91,15 +92,15 @@ jlong CgroupV1Subsystem::read_memory_limit_in_bytes() {
9192 GET_CONTAINER_INFO (julong, _memory->controller (), " /memory.limit_in_bytes" ,
9293 " Memory Limit is: " JULONG_FORMAT, JULONG_FORMAT, memlimit);
9394
94- if (memlimit >= _unlimited_memory ) {
95+ if (memlimit >= os::Linux::physical_memory () ) {
9596 log_trace (os, container)(" Non-Hierarchical Memory Limit is: Unlimited" );
9697 CgroupV1MemoryController* mem_controller = reinterpret_cast <CgroupV1MemoryController*>(_memory->controller ());
9798 if (mem_controller->is_hierarchical ()) {
9899 const char * matchline = " hierarchical_memory_limit" ;
99100 const char * format = " %s " JULONG_FORMAT;
100101 GET_CONTAINER_INFO_LINE (julong, _memory->controller (), " /memory.stat" , matchline,
101102 " Hierarchical Memory Limit is: " JULONG_FORMAT, format, hier_memlimit)
102- if (hier_memlimit >= _unlimited_memory ) {
103+ if (hier_memlimit >= os::Linux::physical_memory () ) {
103104 log_trace (os, container)(" Hierarchical Memory Limit is: Unlimited" );
104105 } else {
105106 return (jlong)hier_memlimit;
@@ -113,17 +114,19 @@ jlong CgroupV1Subsystem::read_memory_limit_in_bytes() {
113114}
114115
115116jlong CgroupV1Subsystem::memory_and_swap_limit_in_bytes () {
117+ julong host_total_memsw;
116118 GET_CONTAINER_INFO (julong, _memory->controller (), " /memory.memsw.limit_in_bytes" ,
117119 " Memory and Swap Limit is: " JULONG_FORMAT, JULONG_FORMAT, memswlimit);
118- if (memswlimit >= _unlimited_memory) {
120+ host_total_memsw = os::Linux::host_swap () + os::Linux::physical_memory ();
121+ if (memswlimit >= host_total_memsw) {
119122 log_trace (os, container)(" Non-Hierarchical Memory and Swap Limit is: Unlimited" );
120123 CgroupV1MemoryController* mem_controller = reinterpret_cast <CgroupV1MemoryController*>(_memory->controller ());
121124 if (mem_controller->is_hierarchical ()) {
122125 const char * matchline = " hierarchical_memsw_limit" ;
123126 const char * format = " %s " JULONG_FORMAT;
124127 GET_CONTAINER_INFO_LINE (julong, _memory->controller (), " /memory.stat" , matchline,
125128 " Hierarchical Memory and Swap Limit is : " JULONG_FORMAT, format, hier_memswlimit)
126- if (hier_memswlimit >= _unlimited_memory ) {
129+ if (hier_memswlimit >= host_total_memsw ) {
127130 log_trace (os, container)(" Hierarchical Memory and Swap Limit is: Unlimited" );
128131 } else {
129132 jlong swappiness = read_mem_swappiness ();
@@ -158,7 +161,7 @@ jlong CgroupV1Subsystem::read_mem_swappiness() {
158161jlong CgroupV1Subsystem::memory_soft_limit_in_bytes () {
159162 GET_CONTAINER_INFO (julong, _memory->controller (), " /memory.soft_limit_in_bytes" ,
160163 " Memory Soft Limit is: " JULONG_FORMAT, JULONG_FORMAT, memsoftlimit);
161- if (memsoftlimit >= _unlimited_memory ) {
164+ if (memsoftlimit >= os::Linux::physical_memory () ) {
162165 log_trace (os, container)(" Memory Soft Limit is: Unlimited" );
163166 return (jlong)-1 ;
164167 } else {
@@ -205,7 +208,7 @@ jlong CgroupV1Subsystem::kernel_memory_usage_in_bytes() {
205208jlong CgroupV1Subsystem::kernel_memory_limit_in_bytes () {
206209 GET_CONTAINER_INFO (julong, _memory->controller (), " /memory.kmem.limit_in_bytes" ,
207210 " Kernel Memory Limit is: " JULONG_FORMAT, JULONG_FORMAT, kmem_limit);
208- if (kmem_limit >= _unlimited_memory ) {
211+ if (kmem_limit >= os::Linux::physical_memory () ) {
209212 return (jlong)-1 ;
210213 }
211214 return (jlong)kmem_limit;
0 commit comments