| #!/bin/sh |
| |
| # |
| # Exercises code in mincore.c mm/ |
| # |
| |
| . ./hw_vars |
| |
| # set number of hugepages in the system |
| echo never > /sys/kernel/mm/transparent_hugepage/enabled |
| echo $((mem/Hugepagesize/1024 / 20)) > /proc/sys/vm/nr_hugepages |
| echo $((mem/Hugepagesize/1024 / 10)) > /proc/sys/vm/nr_overcommit_hugepages |
| |
| #check for max shared memory allowed on system |
| MAX_HUGEPAGES=$(( $(cat /proc/sys/vm/nr_hugepages) + $(cat /proc/sys/vm/nr_overcommit_hugepages) )) |
| |
| #segment size being requested |
| SHM_SIZE=$(($MAX_HUGEPAGES*$hugepagesize / nr_task)) |
| |
| #set shmmax to accommodate the request |
| echo $SHM_SIZE > /proc/sys/kernel/shmmax |
| |
| #check to see if the request can be satisfied else exit with error |
| MAX_SHARE_SEGMENT=$(cat /proc/sys/kernel/shmmax) |
| if [ $SHM_SIZE -gt $MAX_SHARE_SEGMENT ] |
| then |
| echo "Cannot allocate more shared memory segment than $MAX_SHARE_SEGMENT" |
| echo "exiting now..." |
| exit 1 #exit on failure |
| fi |
| |
| create_sparse_file $SPARSE_FILE $SHM_SIZE |
| |
| $USEMEM -t $nr_task -f $SPARSE_FILE -H --prealloc --readonly --random $SHM_SIZE |
| |
| echo always > /sys/kernel/mm/transparent_hugepage/enabled |
| |
| rm $SPARSE_FILE |