共有リモートコンピュータでいくつかのコードを実行しています。複数のインスタンスが並列に実行されると比較的高速にシャットダウンします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
私はソフトウェアが大量のメモリを持っていますが、実際には使用しないことを見たことがあります。
2つの解決策が見つかりました。
- 過度のメモリ使用。メモリがなくても、「メモリが必要です」とLinuxカーネルに要求できます。 (/proc/sys/vm/overcommit_memory=1)
- 交換を追加します。メモリを過度に使用すると、何度もバグが発生し、デバッグが非常に難しいため、今日は単にスワップを追加することを好みます。システムが混乱して犬のように遅くなった場合、少なくともその理由はわかります。