Index: working_vm/vm/gc_gen/src/common/large_pages.cpp =================================================================== --- working_vm/vm/gc_gen/src/common/large_pages.cpp (revision 678359) +++ working_vm/vm/gc_gen/src/common/large_pages.cpp (working copy) @@ -130,13 +130,14 @@ } else if (proc_huge_pages_total == 0){ WARN(("GC large_page: No large pages reserved, Use following command: echo num> /proc/sys/vm/nr_hugepages.")); WARN(("GC large_page: Do it just after kernel boot before huge pages become fragmented.")); - } else if (proc_huge_pages_free * proc_huge_page_size < required_size) { - if (proc_huge_pages_total * proc_huge_page_size >= required_size) { - WARN(("GC large_page: Not enough free large pages, some of reserved space is already busy.")); - } else { - WARN(("GC large_page: Not enough free large pages, some of reserved space is already busy.")); + } else { + //compute required huge page number + size_t required = (required_size+proc_huge_page_size-1)/proc_huge_page_size; + if (proc_huge_pages_total < required) { + WARN(("GC large_page: required size exceeds total large page size.")); + } else if (proc_huge_pages_free < required) { + WARN(("GC large_page: required size exceeds free large page size.")); } - WARN(("GC large_page: Large pages can be only allocated.")); } }