Skip to content

Commit 59db0dc

Browse files
committed
memory limit WIP
1 parent 0fc951b commit 59db0dc

1 file changed

Lines changed: 13 additions & 16 deletions

File tree

io/io/test/CMakeLists.txt

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -72,27 +72,24 @@ if(NOT _32BIT)
7272
set(_memcheck_script "${CMAKE_CURRENT_BINARY_DIR}/check_mem_for_large_coll.sh")
7373
file(WRITE ${_memcheck_script}
7474
"#!/bin/sh\n"
75-
"# Exit 77 (CTest SKIP via SKIP_RETURN_CODE) if free RAM+swap < 32 GB.\n"
75+
"# Exit 77 (CTest SKIP via SKIP_RETURN_CODE) if total RAM+swap < 32 GB.\n"
76+
"# We use TOTAL (not free) because the OS reclaims cached pages on demand.\n"
7677
"THRESHOLD_KB=33554432\n"
7778
"if [ -r /proc/meminfo ]; then\n"
78-
" # Linux\n"
79-
" RAM_KB=\$(awk '/^MemAvailable:/{print \$2}' /proc/meminfo)\n"
80-
" SWAP_KB=\$(awk '/^SwapFree:/{print \$2}' /proc/meminfo)\n"
79+
" # Linux: use MemTotal + SwapTotal (kernel will reclaim caches as needed)\n"
80+
" RAM_KB=\$(awk '/^MemTotal:/{print \$2}' /proc/meminfo)\n"
81+
" SWAP_KB=\$(awk '/^SwapTotal:/{print \$2}' /proc/meminfo)\n"
8182
" RAM_KB=\${RAM_KB:-0}\n"
8283
" SWAP_KB=\${SWAP_KB:-0}\n"
8384
" TOTAL_KB=\$(( RAM_KB + SWAP_KB ))\n"
8485
"elif [ \"\$(uname)\" = \"Darwin\" ]; then\n"
85-
" # macOS: free+speculative pages via vm_stat, free swap via sysctl vm.swapusage\n"
86-
" PAGE_SIZE=\$(pagesize)\n"
87-
" FREE_PAGES=\$(vm_stat | awk '/^Pages free:/{gsub(\"\\\\.\",\"\",\$3); print \$3}')\n"
88-
" SPEC_PAGES=\$(vm_stat | awk '/^Pages speculative:/{gsub(\"\\\\.\",\"\",\$3); print \$3}')\n"
89-
" FREE_PAGES=\${FREE_PAGES:-0}\n"
90-
" SPEC_PAGES=\${SPEC_PAGES:-0}\n"
91-
" RAM_KB=\$(( (FREE_PAGES + SPEC_PAGES) * PAGE_SIZE / 1024 ))\n"
92-
" # sysctl output: 'total = NNN.NNM used = NNN.NNM free = NNN.NNM (encrypted)'\n"
93-
" SWAP_FREE_MB=\$(sysctl -n vm.swapusage 2>/dev/null | sed 's/.*free = \\([0-9.]*\\)M.*/\\1/')\n"
94-
" if [ -n \"\$SWAP_FREE_MB\" ]; then\n"
95-
" SWAP_KB=\$(awk \"BEGIN{printf \\\"%d\\\", \$SWAP_FREE_MB * 1024}\")\n"
86+
" # macOS: total physical RAM via sysctl hw.memsize (bytes -> kB)\n"
87+
" RAM_BYTES=\$(sysctl -n hw.memsize 2>/dev/null)\n"
88+
" RAM_KB=\$(( \${RAM_BYTES:-0} / 1024 ))\n"
89+
" # sysctl output: 'total = NNN.NNM used = ... free = ...'\n"
90+
" SWAP_TOTAL_MB=\$(sysctl -n vm.swapusage 2>/dev/null | sed 's/total = \\([0-9.]*\\)M.*/\\1/')\n"
91+
" if [ -n \"\$SWAP_TOTAL_MB\" ]; then\n"
92+
" SWAP_KB=\$(awk \"BEGIN{printf \\\"%d\\\", \$SWAP_TOTAL_MB * 1024}\")\n"
9693
" else\n"
9794
" SWAP_KB=0\n"
9895
" fi\n"
@@ -101,7 +98,7 @@ if(NOT _32BIT)
10198
" echo \"testLargeCollections memory check: unsupported OS, assuming enough memory\"\n"
10299
" exit 0\n"
103100
"fi\n"
104-
"echo \"testLargeCollections memory check: available \${TOTAL_KB} kB (RAM \${RAM_KB} + swap \${SWAP_KB}), need \${THRESHOLD_KB} kB\"\n"
101+
"echo \"testLargeCollections memory check: total \${TOTAL_KB} kB (RAM \${RAM_KB} + swap \${SWAP_KB}), need \${THRESHOLD_KB} kB\"\n"
105102
"if [ \"\$TOTAL_KB\" -lt \"\$THRESHOLD_KB\" ]; then\n"
106103
" echo \"Insufficient memory -- skipping testLargeCollections\"\n"
107104
" exit 77\n"

0 commit comments

Comments
 (0)