系统限制我的内存了吗?

系统限制我的内存了吗?

我正在共享远程计算机上运行一些代码。当并行运行多个实例时,它们相对较快地死亡std::bad_alloc,而单个实例运行时间要长得多(在任何情况下,每个实例 1 个线程)。这让我想知道作为用户我是否只能使用固定数量的内存。当然,这是有道理的。有什么方法可以查明是否是这种情况(除了询问管理员)?

编辑: 的输出ulimit -a

-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-m: resident set size (kbytes)      unlimited
-u: processes                       2063129
-n: file descriptors                1024
-l: locked-in-memory size (kbytes)  66029704
-v: address space (kbytes)          unlimited
-x: file locks                      unlimited
-i: pending signals                 2063129
-q: bytes in POSIX msg queues       819200
-e: max nice                        0
-r: max rt priority                 0
-N 15:                              unlimited

答案1

我已经看到软件保留(但从未实际使用)大量内存。

我找到了两个解决方案:

  • 过度使用内存。您可以要求 Linux 内核说“肯定有更多内存”,即使实际上没有。 (/proc/sys/vm/overcommit_memory = 1)
  • 添加交换。过度使用内存已经让我困扰了好几次,调试起来非常困难,所以今天我更喜欢简单地添加更多交换。如果系统陷入混乱并变得像狗一样缓慢,我至少知道原因。

相关内容