Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8242480

Negative value may be returned by getFreeSwapSpaceSize() in the docker

    XMLWordPrintable

    Details

      Backports

        Description

        Negative values were returned by getFreeSwapSpaceSize() in our docker testing.
        The reason is that current implementation doesn't consider the situation when memory.limit_in_bytes == memory.memsw.limit_in_bytes, which means do not use the swap space at all.

        In src/jdk.management/unix/classes/com/sun/management/internal/OperatingSystemImpl.java, let's see
        ------------------------------------------------
         71 public long getFreeSwapSpaceSize() {
         72 if (containerMetrics != null) {
         73 long memSwapLimit = containerMetrics.getMemoryAndSwapLimit();
         74 long memLimit = containerMetrics.getMemoryLimit();
         75 if (memSwapLimit >= 0 && memLimit >= 0) {
         76 for (int attempt = 0; attempt < MAX_ATTEMPTS_NUMBER; attempt++) {
         77 long memSwapUsage = containerMetrics.getMemoryAndSwapUsage();
         78 long memUsage = containerMetrics.getMemoryUsage();
         79 if (memSwapUsage > 0 && memUsage > 0) {
         80 // We read "memory usage" and "memory and swap usage" not atomically,
         81 // and it's possible to get the negative value when subtracting these two.
         82 // If this happens just retry the loop for a few iterations.
         83 if ((memSwapUsage - memUsage) >= 0) {
         84 return memSwapLimit - memLimit - (memSwapUsage - memUsage);
         85 }
         86 }
         87 }
         88 }
         89 }
         90 return getFreeSwapSpaceSize0();
         91 }
        ------------------------------------------------
        If memSwapLimit (@line 73) equals memLimit (@line 74), then getFreeSwapSpaceSize() may return a negative value @line 84.

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                jiefu Jie Fu
                Reporter:
                jiefu Jie Fu
                Votes:
                0 Vote for this issue
                Watchers:
                7 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved: