2

多くのメモリを消費している Ruby プロセスがあり、シェル コマンドを実行して、Ruby プロセスが使用しているメモリの量を確認したいと考えています。フォークすると、そのメモリのすべてが新しいプロセスにコピーされ、私のボックスはこれだけのメモリ使用量をサポートできなくなります。次のいずれかの方法はありますか?

  1. フォークせずにシェルコマンドを実行する、または
  2. 私のプロセスが Ruby から使用しているメモリの量を調べますか?
4

1 に答える 1

1

フォークする代わりに、ファイル を開き、/proc/PID/statusPIDプロセスのプロセス ID、$$Ruby の変数を開き、ラベルの付いた行を読むことができますVmSize

File.open("/proc/#{$$}/status").each { |line|
    if line =~ /VmSize/
        puts line
    end
}

これを IRB で実行すると、次のようになります。

irb(main):003:0> File.open("/proc/#{$$}/status").each { |line|
irb(main):004:1* if line =~ /VmSize/
irb(main):005:2> puts line
irb(main):006:2> end
irb(main):007:1> }
VmSize:   138972 kB
于 2013-09-25T18:45:39.887 に答える