mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
selftests/mm: run_vmtests.sh: fix hugetlb mem size calculation
The script calculates a mininum required size of hugetlb memories, but it'll stop working with <1MB huge page sizes, reporting all zeros even if huge pages are available. In reality, the calculation doesn't really need to be as complicated either. Make it simpler and work for KB-level hugepages too. [peterx@redhat.com: run_vmtests.sh: fix hugetlb mem size calculation] Link: https://lkml.kernel.org/r/20240403200324.1603493-1-peterx@redhat.com Link: https://lkml.kernel.org/r/20240321215047.678172-1-peterx@redhat.com Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: David Hildenbrand <david@redhat.com> Reviewed-by: Muchun Song <muchun.song@linux.dev> Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com> Tested-by: Ryan Roberts <ryan.roberts@arm.com> Cc: Nico Pache <npache@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
@@ -152,9 +152,13 @@ done < /proc/meminfo
|
||||
# both of these requirements into account and attempt to increase
|
||||
# number of huge pages available.
|
||||
nr_cpus=$(nproc)
|
||||
hpgsize_MB=$((hpgsize_KB / 1024))
|
||||
half_ufd_size_MB=$((((nr_cpus * hpgsize_MB + 127) / 128) * 128))
|
||||
needmem_KB=$((half_ufd_size_MB * 2 * 1024))
|
||||
uffd_min_KB=$((hpgsize_KB * nr_cpus * 2))
|
||||
hugetlb_min_KB=$((256 * 1024))
|
||||
if [[ $uffd_min_KB -gt $hugetlb_min_KB ]]; then
|
||||
needmem_KB=$uffd_min_KB
|
||||
else
|
||||
needmem_KB=$hugetlb_min_KB
|
||||
fi
|
||||
|
||||
# set proper nr_hugepages
|
||||
if [ -n "$freepgs" ] && [ -n "$hpgsize_KB" ]; then
|
||||
@@ -294,7 +298,8 @@ CATEGORY="userfaultfd" run_test ./uffd-unit-tests
|
||||
uffd_stress_bin=./uffd-stress
|
||||
CATEGORY="userfaultfd" run_test ${uffd_stress_bin} anon 20 16
|
||||
# Hugetlb tests require source and destination huge pages. Pass in half
|
||||
# the size ($half_ufd_size_MB), which is used for *each*.
|
||||
# the size of the free pages we have, which is used for *each*.
|
||||
half_ufd_size_MB=$((freepgs / 2))
|
||||
CATEGORY="userfaultfd" run_test ${uffd_stress_bin} hugetlb "$half_ufd_size_MB" 32
|
||||
CATEGORY="userfaultfd" run_test ${uffd_stress_bin} hugetlb-private "$half_ufd_size_MB" 32
|
||||
CATEGORY="userfaultfd" run_test ${uffd_stress_bin} shmem 20 16
|
||||
|
||||
Reference in New Issue
Block a user