プロフィール

kosaki

Author:kosaki
連絡先はコチラ

ブログ検索
最近の記事
最近のコメント
最近のトラックバック
リンク
カテゴリー
月別アーカイブ
RSSフィード
FC2ブログランキング

スポンサーサイト このエントリーをはてなブックマークに追加

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


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)

スレッド毎のユーザ時間/システム時間を調べたい このエントリーをはてなブックマークに追加

最近、どんどん技術系の記事の割合が下がっているような気がして危惧している管理人です。
どのぐらい下がっているかというと、もはやウチのサイトではAmazonのご推薦に技術系の本とかカケラも出てきません。ゲームまみれの宣伝をされてます。

そんなわけで、しばらく意識的に技術系の割合を上げて行きたいと思います。

-----

linuxで通常ユーザ時間、システム時間を取得するにはtimes(2)をつかうが、これはプロセス内の全スレッドの値を合計したものが帰ってくる。

通常はこれで問題ないのだが、特殊な情况では自身のスレッドの分だけのユーザー時間がほしくなったりもするものだ。

そういうときには/procインターフェースをつかう
/proc/[pid]/task/[thread_id]/stat を開くと

8442 (emacs) R 1 8442 3175 0 -1 4194304 4877 209853 16 130 1566 3929 6239 30180 15 0 1 9 693045 23412736 4130 4294967295 134512640 135864868 3220640240 3220552484 12244898 0 0 536870912 1367441149 0 0 0 17 0 0 0


のような人間に読むことを拒否するかのような数字の羅列が出て来るが、この中でみるべきは


14番目: utime
15 : stime
16 : cutime
17 : cstime


である。

utimeとかstimeの意味は
 man 2 times 

で調べてほしい。


ペンギン
ペンギン! ランキング!





それ以外の数値の意味も解説しようかと思ったのだが、面倒くさいので、ソースの位置をしめす。これをみれば日本語で説明されるのがアホらしくなるぐらい一発でわかる

僕とカーネルのバージョンが合わない人は行番号があわないと思うのでlxr とかでソースと突き合わせてほしい

kernel2.6.11だと
kernel/fs/proc/array.c#400行目


res = sprintf(buffer,"%d (%s) %c %d %d %d %d %d %lu %lu \
%lu %lu %lu %lu %lu %ld %ld %ld %ld %d %ld %llu %lu %ld %lu %lu %lu %lu %lu \
%lu %lu %lu %lu %lu %lu %lu %lu %d %d %lu %lu\n",
task->pid,
tcomm,
state,
ppid,
pgid,
sid,
tty_nr,
tty_pgrp,
task->flags,
min_flt,
cmin_flt,
maj_flt,
cmaj_flt,
cputime_to_clock_t(utime),
cputime_to_clock_t(stime),
cputime_to_clock_t(cutime),
cputime_to_clock_t(cstime),
priority,
nice,
num_threads,
(long) ktime_to_clock_t(it_real_value),
start_time,
vsize,
mm ? get_mm_rss(mm) : 0,
rsslim,
mm ? mm->start_code : 0,
mm ? mm->end_code : 0,
mm ? mm->start_stack : 0,
esp,
eip,
/* The signal information here is obsolete.
* It must be decimal for Linux 2.0 compatibility.
* Use /proc/#/status for real-time signals.
*/
task->pending.signal.sig[0] & 0x7fffffffUL,
task->blocked.sig[0] & 0x7fffffffUL,
sigign .sig[0] & 0x7fffffffUL,
sigcatch .sig[0] & 0x7fffffffUL,
wchan,
0UL,
0UL,
task->exit_signal,
task_cpu(task),
task->rt_priority,
task->policy);
 


こんなんです。


さて、ここから先はgoogle Adsenseにlinuxネタを表示させるためのイミなしの駄文。人間は気にしないでちょ

追記: むー、あんまり効いてる気がせんのー
最近の検索エンジンはこういう古典的な手はくわんのかのぅ。
まあ、ただの実験なんで効いても効かんでもどっちでもええんじゃが。

linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード
linux linux linux kernel kernel ファイルシステム proc ソースコード


関連記事
linux | 【2006-02-11(Sat) 04:04:05】 | Trackback:(0) | Comments:(1)
コメント
このコメントは管理人のみ閲覧できます
2007-10-08 月 12:22:47 | | # [ 編集]
  1. 無料アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。