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

Proper units should print more significant digits

XMLWordPrintable

    • b05

        Right now proper_unit_for_byte_size() and byte_size_in_proper_unit() are switching to higher prefix, once we have two significant digits, like this:

         inline const char* proper_unit_for_byte_size(size_t s) {
         #ifdef _LP64
           if (s >= 10*G) {
             return "G";
           }
         #endif

        This is inconvenient for logs, because it abruptly makes values too coarse. For example, this is the usual thing to see in GC logs:

        [25.186s][info][gc] Heap: 100G reserved, 15G (15.09%) committed, 15G (15.00%) used

        This rounding basically masks the difference within the gigabyte, which makes the rounding error close to 10% in worst case, on 10G threshold It would be preferable instead to print more significant digits, e.g. at least three. With three significant digits, the rounding error would reach 1% at max, and checking against e.g. 100*G would yield five significant digits in worst case.

        Prototype webrev:
         http://cr.openjdk.java.net/~shade/8217315/webrev.01/

        This is the example GC log after the patch:

        [23.315s][info][gc] Heap: 100G reserved, 15449M (15.09%) committed, 15361M (15.00%) used

              shade Aleksey Shipilev
              shade Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: