Loading... (original) (raw)
After back porting 8175813 to openjdk 1.8.0, "mbind: Invalid argument" message still can be seen on one of PPC64 machines.
The problem is that, the machine only has one node, and numa_interleave_memory() apparently does not like to be called when it is the case.
[zgu@ibm-p730-03-lp1 hotspot]$ lscpu
Architecture: ppc64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Big Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 4
Core(s) per socket: 1
Socket(s): 2
NUMA node(s): 2
Model: 2.1 (pvr 003f 0201)
Model name: POWER7 (architected), altivec supported
L1d cache: 32K
L1i cache: 32K
NUMA node0 CPU(s): 0-7
NUMA node1 CPU(s):
Following patch fixes the problem:
diff -r 56d2166223f6 src/os/linux/vm/os_linux.cpp
--- a/src/os/linux/vm/os_linux.cpp Wed May 24 12:42:44 2017 +0200
+++ b/src/os/linux/vm/os_linux.cpp Wed May 24 19:28:49 2017 -0400
@@ -2728,7 +2728,9 @@
}
void os::numa_make_global(char *addr, size_t bytes) {
- Linux::numa_interleave_memory(addr, bytes);
+ if (numa_get_groups_num() > 1) {
+ Linux::numa_interleave_memory(addr, bytes);
+ }
}
// Define for numa_set_bind_policy(int). Setting the argument to 0 will set the