如果我做
ulimit -v 200000
和运行
sort largefile
从top
这种情况下,我可以看到最多使用142232 Virt和92764 Res,但是一段时间后,这种减少甚至更多。
如果您使用GNU sort
,答案是它会根据默认的rlimits数据(由集ulimit -d
)和RSS(通过设置ulimit -m
),以及作为的sysconf值可用内存和总内存。
无论您的ulimit大小如何,默认内存大小都不会超过当前可用内存的3/4或总内存的1/8,以较大者为准。
/* Let MEM be available memory or 1/8 of total memory, whichever
is greater. */
double avail = physmem_available ();
double total = physmem_total ();
double mem = MAX (avail, total / 8);
/* Leave a 1/4 margin for physical memory. */
if (total * 0.75 < size)
size = total * 0.75;
使用GNU sort
,您可以使用该-S
选项来指定排序缓冲区的大小:
-S, --buffer-size=SIZE
use SIZE for main memory buffer
该值可以是千字节,可以后缀另一个单位(例如-S 100M
),也可以是总内存的百分比(例如-S 55%
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句