2017-03-11 14 views
0

私は、次の空きメモリとRaspberry Pi 3 B上のNode.jsを実行している:Raspberry piのnode.jsメモリ使用量を調整するにはどうすればよいですか?

free -m 
      total  used  free  shared buffers  cached 
Mem:   973  230  742   6   14  135 
-/+ buffers/cache:   80  892 
Swap:   99   0   99 

私はすべての空きメモリを使用しないようにノード(V7)を設定できますか? SDカードの寿命を延ばすために、私はそれがスワップするのを防ぐつもりです。

私は--max_old_space_sizeの認識しています:

node --v8-options | grep -A 5 max_old 
    --max_old_space_size (max size of the old space (in Mbytes)) 
     type: int default: 0 

私は答えの一部は、アプリケーション固有である知っている、スワップを防ぐために、Node.jsのメモリ消費量を制限するために、いくつかの一般的なヒントが何ですか?また、piのより多くの自由なラムを絞るための他のヒントも高く評価されます。

GPUに割り当てられるRAMの最小16メガバイトが割り当てられるように、すでにメモリ分割が設定されています。

答えて

2

スワッピングを防止する唯一の防御的な方法は、オペレーティングシステムのスワップをオフにすることです(恒久的な設定の場合は/etc/fstabのスワップラインを削除またはコメントアウトするか、swapoff -aを使用して現在のセッションのスワップデバイスをすべてオフにします)。使用可能な空きメモリがない場合、カーネルはランダムプロセスを強制終了させることに注意してください(スワップの有無に関係なく)。

node.jsでは、V8のマネージヒープのサイズが制限されています。すでに言及した--max-old-space-sizeフラグがその主な方法です。 400〜500(メガバイト)くらいの値はおそらくあなたのラズベリーにとって理にかなっています。 --max-semi-space-sizeも小さくなるはずですが、おそらくデフォルトに固執することができ、生成されたコードには--max-executable-sizeが必要です(実行するアプリに応じてどれくらいの必要性がありますか?

つまり、マネージドヒープ以外のメモリコンシューマ(node.js自体、V8のパーサ、コンパイラなど)があるため、プロセスの全体的なメモリ使用量を制限する方法はありません。すべての種類のメモリ使用量に制限を設定する方法はありません。 (そのような制限は何のために必要なのでしょうか?メモリが必要なときにクラッシュしますが、利用できない場合はカーネルが処理します)

+0

まさに私が探していたものです。 – rynop

関連する問題