Month: February 2015

Building a numa beast (or how to test Oracle behaviour on Numa system without having Numa)

Posted on Updated on

Just wanted to share a little trick to emulate NUMA architecture on a non numa hardware.

The linux kernel is able to simulate NUMA architecture if the kernel is compiled with the following flag

CONFIG_NUMA_EMU=y

and of course if

CONFIG_NUMA=y

By default at least with UEK kernel is not compiled with this FLAG.

So let’s compile the kernel with this set to Y.

first we need this packages installed on the system:

yum groupinstall "Development Tools"
yum install ncurses-devel

download the linux kernel here https://www.kernel.org/pub/linux/kernel

in the following exemple i used the 3.8.13 version.

wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.13.tar.xz
tar -Jxvf linux-3.8.13.tar.xz -C /usr/src/
cd /usr/src/linux-3.8.13/

copy your kernel config file inside the directory containing kernel sources.
edit this file and set CONFIG_NUMA_EMU=y

cp /boot/config-3.8.13-55.1.5.el6uek.x86_64 /usr/src/linux-3.8.13/

compile the kernel, modules and install them(and wait,wait,wait….):

make
make modules
make modules_install
make install

now edit your grub.conf file and fake 40 numa nodes :

kernel /vmlinuz-3.8.13 ro root=/dev/mapper/vg_oracle12-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_oracle12/lv_swap LANG=fr_FR.UTF-8 
SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_oracle12/lv_root KEYBOARDTYPE=pc KEYTABLE=fr-latin9 rd_NO_DM rhgb quiet numa=on 
numa=fake=40 transparent_hugepage=never
initrd /initramfs-3.8.13.img

reboot the system and enjoy your numa beast:

numactl –hardware
available: 39 nodes (0-38)
node 0 cpus: 0
node 0 size: 95 MB
node 0 free: 0 MB
node 1 cpus: 1
node 1 size: 96 MB
node 1 free: 0 MB
node 2 cpus:
node 2 size: 96 MB
node 2 free: 76 MB
node 3 cpus:
node 3 size: 96 MB
node 3 free: 93 MB
node 4 cpus:
node 4 size: 96 MB
node 4 free: 90 MB
node 5 cpus:
node 5 size: 96 MB
node 5 free: 90 MB
node 6 cpus:
node 6 size: 96 MB
node 6 free: 90 MB
node 7 cpus:
node 7 size: 96 MB
node 7 free: 93 MB
node 8 cpus:
node 8 size: 96 MB
node 8 free: 90 MB
node 9 cpus:
node 9 size: 96 MB
node 9 free: 90 MB
node 10 cpus:
node 10 size: 96 MB
node 10 free: 90 MB
node 11 cpus:
node 11 size: 96 MB
node 11 free: 93 MB
node 12 cpus:
node 12 size: 96 MB
node 12 free: 90 MB
node 13 cpus:
node 13 size: 96 MB
node 13 free: 26 MB
node 14 cpus:
node 14 size: 64 MB
node 14 free: 61 MB
node 15 cpus:
node 15 size: 64 MB
node 15 free: 58 MB
node 16 cpus:
node 16 size: 64 MB
node 16 free: 61 MB
node 17 cpus:
node 17 size: 64 MB
node 17 free: 58 MB
node 18 cpus:
node 18 size: 64 MB
node 18 free: 61 MB
node 19 cpus:
node 19 size: 64 MB
node 19 free: 58 MB
node 20 cpus:
node 20 size: 64 MB
node 20 free: 61 MB
node 21 cpus:
node 21 size: 64 MB
node 21 free: 58 MB
node 22 cpus:
node 22 size: 64 MB
node 22 free: 61 MB
node 23 cpus:
node 23 size: 64 MB
node 23 free: 58 MB
node 24 cpus:
node 24 size: 64 MB
node 24 free: 61 MB
node 25 cpus:
node 25 size: 64 MB
node 25 free: 58 MB
node 26 cpus:
node 26 size: 64 MB
node 26 free: 61 MB
node 27 cpus:
node 27 size: 64 MB
node 27 free: 58 MB
node 28 cpus:
node 28 size: 64 MB
node 28 free: 61 MB
node 29 cpus:
node 29 size: 64 MB
node 29 free: 58 MB
node 30 cpus:
node 30 size: 64 MB
node 30 free: 61 MB
node 31 cpus:
node 31 size: 64 MB
node 31 free: 58 MB
node 32 cpus:
node 32 size: 64 MB
node 32 free: 61 MB
node 33 cpus:
node 33 size: 64 MB
node 33 free: 58 MB
node 34 cpus:
node 34 size: 64 MB
node 34 free: 61 MB
node 35 cpus:
node 35 size: 64 MB
node 35 free: 58 MB
node 36 cpus:
node 36 size: 95 MB
node 36 free: 90 MB
node 37 cpus:
node 37 size: 64 MB
node 37 free: 61 MB
node 38 cpus:
node 38 size: 120 MB
node 38 free: 114 MB
node distances:
node 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
0: 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1: 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2: 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3: 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4: 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5: 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6: 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7: 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8: 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9: 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10: 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11: 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12: 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13: 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
14: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
16: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
18: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
22: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20
25: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20
26: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20
27: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20
28: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20
29: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20
30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20
31: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20
32: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20
33: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20
34: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20
35: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20
36: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20
37: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20
38: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10