夜空日和 [出張版]

星を見上げながら、今日を語ってみようか

 

スポンサーサイト


Category: スポンサー広告   Tags: ---
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

メモリを測定してみる


Category: 技術   Tags: ---
必要に迫られて。

先日、 "プログラムA"の実行中の最大使用メモリを測定したいという要望が、友人から出てきた。
top コマンドだと正確な値が測定できないかもしれないので、どうしようかという話になった。

ということで、色々調べてみた。

1. getrusage
まずは、プログラムそのものを改造することにした。
調査の結果、Linuxのリソース情報を得る方法として getrusage があった。
これのうち、 ru_maxrss × getpagesize で最大メモリが取得できる・・・はずだった。
しかし、実行してみると、どうやら値が大きすぎる。
32bitモードで実行しているのに、使用メモリが 232 を超えてしまうのだ。
しかも、top で監視している値ともかけ離れた値が出てしまう。
・・・なんか、保守されてない匂いがする。

2. time コマンド
次に、time コマンドのオプション -v を使用してみた。
どうやら、time コマンドはメモリなどの情報が表示出来るように拡張されているようだ。
・・・しかし、結果は getrusage と同じだった。
/* というか、リソース情報をそれからとっているのだから、当たり前だった。 */

3. procfs
linuxのプロセスならば、/proc/PID/status で実行時情報が見れるらしい。
あるプロセスが利用しているメモリサイズを procfs 経由で調べる - naoyaのはてなダイアリー
しかし、これは「プロセスが動作中」でないと見ることが出来ない。
対象のプログラムは、即座に終わってしまい、実行時情報を見ることが困難だった。

4. procfs + スクリプト
最初は自分で /proc を監視するスクリプトを書いたけど、タイミングが悪く、上手く行かなかった。
検索したら、海外サイトでスクリプトを見つけたので、それを採用した。
Peak memory measurement for long running process (Linux)
単純に、/proc をずっと監視するだけ。

最終的に ポーリング + procfs に落ち着いてしまったけど、これって top とあまり変わらないような・・・
もっと、上手い方法は無いのかな。
スポンサーサイト


Comments

Leave a Comment



10 2017
SUN MON TUE WED THU FRI SAT
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

09

11


 
プロフィール

ひでたそ

Author:ひでたそ
Comment:
現役大学生で天文好き。
今日もどこかで、上を見ながら歩いています。

 
 
 
最新トラックバック
 
 
検索フォーム
 
 
 
ブロとも申請フォーム
 
QRコード
QRコード
 

Archive   RSS   Login

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。