okkyの日記: 誰か教えて偉い人… 4
sar の出力を見ていて意味がよくわからないので man ページを見たらもっとよくわからなくなった。
"ip-frag"
ip-frag
Number of IP fragments currently in use.
はい??と思ってググった。
http://aaabbbkirai.sytes.net/wiki/tech/unixcommon/sysstat(sar)%A5%B3%A5%DE%A5%F3%A5%C9.html
ip-frag 使用中のIPフラグメント数
…IPフラグメントって「利用する/しない」っていう感じのものだっけか…??
「現在、7個のIPフラグメントを利用しています」
ってどういう意味なんだ??
.
元の英語のマニュアルページを見ると:
tcpsck
Number of TCP sockets currently in use.
udpsck
Number of UDP sockets currently in use.
rawsck
Number of RAW sockets currently in use.
ip-frag
Number of IP fragments currently in use.
もう、誰がどう見ても、「勢いでコピペしたら関係ないものまで同じ書き方にしちゃった」としか思えないのだが…。
で、じゃぁ、本当はどういう意味??
ホントの意味は知らんけど、文字通りに解釈すると (スコア:1)
n個のフラグメント化されたIPパケットが残りのフラグメント待ち状態とか、そんな感じ。
目の前の便利なハコ使えばいいのに (スコア:1)
sysstatのソースを見ると、そこは単に/proc/net/sockstatを見てるだけで、ということは単にkernelの変数を見てるだけで、ということは net/ipv4/proc.c が書いてるわけで、かるくgrepすると ip_frag_nqueues の値だということがわかって、それは /net/ipv4/ip_fragment.c の中で操作されてることなんて2分も調べりゃわかるじゃん。
okky氏ともあろう方が何をしているのかと。
Re:目の前の便利なハコ使えばいいのに (スコア:2, 参考になる)
うむ。この日記を書いた直後にマシンの電源を落とし、帰路につきつつ飲みに行っていた。
# つまり2分どころか30秒もこの問題に付き合っていない。ひどっ
defaultroute [srad.jp]さんの言ったことを書き直すとこういう事だね。
http://lxr.linux.no/linux+v2.6.36/net/ipv4/proc.c#L83 [linux.no]
この sockstat_seq_open/seq_readがスタートポイントで、
http://lxr.linux.no/linux+v2.6.36/net/ipv4/proc.c#L78 [linux.no]
http://lxr.linux.no/linux+v2.6.36/fs/proc/proc_net.c#L59 [linux.no]
このshowってのが1つ上の「sockstat_seq_show」で、この「関数へのポインター」は
http://lxr.linux.no/linux+v2.6.36/fs/seq_file.c#L551 [linux.no]
とここに入る。
で、読み込むときは seq_read() を呼ぶ
http://lxr.linux.no/linux+v2.6.36/fs/seq_file.c#L132 [linux.no]
のだけれど、結局呼ばれるのはここ
http://lxr.linux.no/linux+v2.6.36/fs/seq_file.c#L199 [linux.no]
で、この show()の実態はというと:
http://lxr.linux.no/linux+v2.6.36/net/ipv4/proc.c#L51 [linux.no]
この ip_frag_nqueues()の出力が欲しい物で、これは何かと言うと
http://lxr.linux.no/linux+v2.6.36/net/ipv4/ip_fragment.c#L80 [linux.no]
fjの教祖様
Re:目の前の便利なハコ使えばいいのに (スコア:1)
お、最新kernelはちょっと変数名とか変わってますね ^_^; 丁寧な解説ありがとうございます。
# 手抜きして、最近用があったので展開しっぱなしだった2.6.8を見てしまいました
# # ロジックは一緒ですけどね。