安装 numa
yum install numactl -y
numa binding
# cat hello.c
#include<stdio.h>
int main()
{
printf("%s \n", "hello");
sleep(3600);
return 0;
}
编译
# gcc hello.c
[root@sr531 numa]# ll
total 16
-rwxr-xr-x 1 root root 8608 Dec 25 11:52 a.out
-rw-r--r-- 1 root root 89 Dec 25 11:51 hello.c
运行
正常运行可执行文件
# ./a.out
hello
# cd /proc/47559
# cat numa_maps
00400000 default file=/home/numa/a.out mapped=1 N1=1 kernelpagesize_kB=4
00600000 default file=/home/numa/a.out anon=1 dirty=1 N0=1 kernelpagesize_kB=4
00601000 default file=/home/numa/a.out anon=1 dirty=1 N0=1 kernelpagesize_kB=4
7fe803844000 default file=/usr/lib64/libc-2.17.so mapped=63 mapmax=70 N1=63 kernelpagesize_kB=4
7fe8039fa000 default file=/usr/lib64/libc-2.17.so
7fe803bfa000 default file=/usr/lib64/libc-2.17.so anon=4 dirty=4 N0=4 kernelpagesize_kB=4
7fe803bfe000 default file=/usr/lib64/libc-2.17.so anon=2 dirty=2 N0=2 kernelpagesize_kB=4
7fe803c00000 default anon=3 dirty=3 N0=3 kernelpagesize_kB=4
7fe803c05000 default file=/usr/lib64/ld-2.17.so mapped=27 mapmax=68 N1=27 kernelpagesize_kB=4
7fe803e15000 default anon=3 dirty=3 N0=3 kernelpagesize_kB=4
7fe803e22000 default anon=2 dirty=2 N0=2 kernelpagesize_kB=4
7fe803e24000 default file=/usr/lib64/ld-2.17.so anon=1 dirty=1 N0=1 kernelpagesize_kB=4
7fe803e25000 default file=/usr/lib64/ld-2.17.so anon=1 dirty=1 N0=1 kernelpagesize_kB=4
7fe803e26000 default anon=1 dirty=1 N0=1 kernelpagesize_kB=4
7ffd127ba000 default stack anon=3 dirty=3 N0=3 kernelpagesize_kB=4
7ffd127e4000 default
带numa运行
# numactl --cpubind=1 --membind=1 ./a.out
hello
# cat numa_maps
00400000 bind:1 file=/home/numa/a.out mapped=1 N1=1 kernelpagesize_kB=4
00600000 bind:1 file=/home/numa/a.out anon=1 dirty=1 N1=1 kernelpagesize_kB=4
00601000 bind:1 file=/home/numa/a.out anon=1 dirty=1 N1=1 kernelpagesize_kB=4
7faf5478f000 bind:1 file=/usr/lib64/libc-2.17.so mapped=63 mapmax=70 N1=63 kernelpagesize_kB=4
7faf54945000 bind:1 file=/usr/lib64/libc-2.17.so
7faf54b45000 bind:1 file=/usr/lib64/libc-2.17.so anon=4 dirty=4 N1=4 kernelpagesize_kB=4
7faf54b49000 bind:1 file=/usr/lib64/libc-2.17.so anon=2 dirty=2 N1=2 kernelpagesize_kB=4
7faf54b4b000 bind:1 anon=3 dirty=3 N1=3 kernelpagesize_kB=4
7faf54b50000 bind:1 file=/usr/lib64/ld-2.17.so mapped=27 mapmax=68 N1=27 kernelpagesize_kB=4
7faf54d60000 bind:1 anon=3 dirty=3 N1=3 kernelpagesize_kB=4
7faf54d6d000 bind:1 anon=2 dirty=2 N1=2 kernelpagesize_kB=4
7faf54d6f000 bind:1 file=/usr/lib64/ld-2.17.so anon=1 dirty=1 N1=1 kernelpagesize_kB=4
7faf54d70000 bind:1 file=/usr/lib64/ld-2.17.so anon=1 dirty=1 N1=1 kernelpagesize_kB=4
7faf54d71000 bind:1 anon=1 dirty=1 N1=1 kernelpagesize_kB=4
7ffc68f7b000 bind:1 stack anon=2 dirty=2 N1=2 kernelpagesize_kB=4
7ffc68fcb000 bind:1