| #!/bin/sh |
| # basic shared memory policy test |
| |
| |
| # hugetlbfs and tmpfs must be mounted on these mount points |
| TMPFS=/dev/shm |
| HUGE=/huge |
| |
| #valgrind 3.0.1 doesn't implement mbind() yet on x86-64 |
| #VALGRIND="valgrind --tool=memcheck" |
| VALGRIND= |
| |
| set -e |
| |
| export PATH=`pwd`/..:$PATH |
| |
| numactl() { |
| $VALGRIND ../numactl "$@" |
| } |
| |
| failure() { |
| numastat > after |
| set +e |
| diff -u before after |
| echo |
| echo TEST FAILED |
| exit 1 |
| } |
| |
| success() { |
| echo test succeeded |
| } |
| |
| checkpoint() { |
| numastat > before |
| } |
| |
| trap failure EXIT |
| |
| basictest() { |
| echo initial |
| checkpoint |
| numactl --length=20m $1 --dump |
| echo interleave |
| checkpoint |
| numactl --offset=2m --length=2m $1 --strict --interleave=0,1 --verify --dump |
| echo interleave verify |
| checkpoint |
| numactl $1 --dump |
| echo membind setup |
| checkpoint |
| numactl --offset 4m --length=2m $1 --strict --membind=1 --verify --dump |
| echo membind verify |
| checkpoint |
| numactl $1 --dump |
| echo preferred setup |
| checkpoint |
| numactl --offset 6m --length 2m $1 --strict --preferred=1 --verify --dump |
| echo preferred verify |
| checkpoint |
| numactl $1 --dump |
| |
| # check overlaps here |
| } |
| |
| cleanupshm() { |
| if [ -f $1 ] ; then |
| ipcrm -M `./ftok $1` || true |
| rm $1 |
| fi |
| } |
| |
| |
| banner() { |
| echo |
| echo ++++++++++++ $1 +++++++++++++++ |
| echo |
| } |
| |
| banner shm |
| cleanupshm A |
| basictest --shm=A |
| cleanupshm A |
| |
| banner hugeshm |
| cleanupshm B |
| basictest "--huge --shm=B" |
| cleanupshm B |
| |
| banner tmpfs |
| basictest "--file $TMPFS/B" |
| rm $TMPFS/B |
| |
| # first need a way to create holey hugetlbfs files. |
| |
| #banner hugetlbfs |
| #basictest "--file $HUGE/B" |
| #rm /hugetlbfs/B |
| |
| rm before |
| |
| trap success EXIT |
| |
| |