41 lines
1.3 KiB
Diff
41 lines
1.3 KiB
Diff
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Date: Sat, 31 Oct 2015 17:56:11 +0000
|
|
Subject: selftests: vm: Try harder to allocate huge pages
|
|
|
|
If we need to increase the number of huge pages, drop caches first
|
|
to reduce fragmentation and then check that we actually allocated
|
|
as many as we wanted. Retry once if that doesn't work.
|
|
|
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|
---
|
|
--- a/tools/testing/selftests/vm/run_vmtests
|
|
+++ b/tools/testing/selftests/vm/run_vmtests
|
|
@@ -20,13 +20,26 @@ done < /proc/meminfo
|
|
if [ -n "$freepgs" ] && [ -n "$pgsize" ]; then
|
|
nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
|
|
needpgs=`expr $needmem / $pgsize`
|
|
- if [ $freepgs -lt $needpgs ]; then
|
|
+ tries=2
|
|
+ while [ $tries -gt 0 ] && [ $freepgs -lt $needpgs ]; do
|
|
lackpgs=$(( $needpgs - $freepgs ))
|
|
+ echo 3 > /proc/sys/vm/drop_caches
|
|
echo $(( $lackpgs + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
|
|
if [ $? -ne 0 ]; then
|
|
echo "Please run this test as root"
|
|
exit 1
|
|
fi
|
|
+ while read name size unit; do
|
|
+ if [ "$name" = "HugePages_Free:" ]; then
|
|
+ freepgs=$size
|
|
+ fi
|
|
+ done < /proc/meminfo
|
|
+ tries=$((tries - 1))
|
|
+ done
|
|
+ if [ $freepgs -lt $needpgs ]; then
|
|
+ printf "Not enough huge pages available (%d < %d)\n" \
|
|
+ $freepgs $needpgs
|
|
+ exit 1
|
|
fi
|
|
else
|
|
echo "no hugetlbfs support in kernel?"
|