If I do
ulimit -v 200000
和跑步
sort largefile
我可以看到从top
该类型最多使用 142232 Virt 和 92764 Res,但一段时间后会减少更多。
- sort 如何知道 ulimit 限制设置为多少?
- 为什么它没有用完我给它的 200MB 空间?
如果您使用的是 GNUsort
,答案是它计算默认值数据的 rlimits(由ulimit -d)和 RSS(由ulimit -m) http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=blob;f=src/sort.c;h=3380be6c5a136c3dfc77ee789d7ed9bcd8572bc7;hb=HEAD#l1445以及 sysconf 值有效内存 https://github.com/mirrors/gcc/blob/master/libiberty/physmem.c#L185 and 总内存 https://github.com/mirrors/gcc/blob/master/libiberty/physmem.c#L83.
无论您的 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;
与GNUsort
,您可以使用-S
指定排序缓冲区大小的选项:
-S, --buffer-size=SIZE
use SIZE for main memory buffer
该值可以是千字节数,也可以加上另一个单位后缀(例如-S 100M
),或者可以是总内存的百分比(例如-S 55%
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)