-3

私は包括的な PHP スクリプト (Linux 上) を持っています。そのために、それは多くの子供たちをフォークします。問題は、スクリプトがそれらの最適な数をどのように特定できるかということです。数が大きすぎると、サーバーが物理メモリを使い果たし、子供たちがスワッピングを開始し、パフォーマンスが低下します。では、利用可能な物理メモリの実際の量を取得するにはどうすればよいでしょうか? 'free' コマンドは、明らかな理由から実際の状況を教えてくれません。

4

1 に答える 1

2

free2行目に正しい画像が表示されます(ヘッダーのある行は数えません)。出力例を次に示します。

             total       used       free     shared    buffers     cached
Mem:       2060420    1754008     306412          0      97264    1013548
-/+ buffers/cache:     643196    1417224
Swap:      1951888          0    1951888

最初の行の free 列は、ディスク キャッシュもそこにあるため、あまり役に立ちません。最初の行に空きメモリが必要になることはめったにありません。一方、2 行目では、ディスク キャッシュが差し引かれています。これは、マシンの実際の現在のメモリ使用量です!

の出力を読み取って解析する PHP 関数を次に示しますGNU free

// Get system mem usage in kilobytes
// Returns: array($used, $free), or false on failure
function memory_usage() {
  exec('free -k', $lines, $error);
  if ($error) return false;
  $cols = preg_split('/\s+/', $lines[2]);
  return array((int) $cols[2], (int) $cols[3]);
}

// Usage:
list($used, $free) = memory_usage();
printf("used: %d\nfree: %d\n", $used, $free);
于 2012-06-25T20:51:41.383 に答える