多くのメモリを消費している Ruby プロセスがあり、シェル コマンドを実行して、Ruby プロセスが使用しているメモリの量を確認したいと考えています。フォークすると、そのメモリのすべてが新しいプロセスにコピーされ、私のボックスはこれだけのメモリ使用量をサポートできなくなります。次のいずれかの方法はありますか?
- フォークせずにシェルコマンドを実行する、または
- 私のプロセスが Ruby から使用しているメモリの量を調べますか?
多くのメモリを消費している Ruby プロセスがあり、シェル コマンドを実行して、Ruby プロセスが使用しているメモリの量を確認したいと考えています。フォークすると、そのメモリのすべてが新しいプロセスにコピーされ、私のボックスはこれだけのメモリ使用量をサポートできなくなります。次のいずれかの方法はありますか?
フォークする代わりに、ファイル を開き、/proc/PID/status
はPID
プロセスのプロセス 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