ttt

getttyent

(FreeBSD) topコマンドで表示されるVCSWとIVCSWは何?

2008-01-17 23:44:02 | デジタル・インターネット

コンピュータでどんなプログラムが実行中かを表示する、とっても便利なコマンド「top」。

Windowsだと、タスクマネージャの「プロセス」タブで表示される内容が、topと、ちょっと似てるかな?

topは、FreeBSDのほかにも、各種Linux、Solarisなど、あちこちのOSに移植されているんですが、なんかそれぞれで微妙に違いがあるんですよね。

ふと、topって、オリジナルはどこなんだろう?と思って調べてみたら、ここにいろいろ書いてありました。

http://www.unixtop.org/about.shtml

topの最初のバージョンは、1984年はじめころ、マシンはVAX、OSはBSD 4.1だったそうです。

FreeBSDのtopコマンドでは、「m」キーを押すと、表示がcpuモードとioモードとの間で交互に切り替わります。

CPU使用率、メモリ使用量などが表示される
200801171

I/Oアクセスの頻度が表示される
200801172


ioモードのときに、VCSWIVCSWという情報が表示されてるのですが、VCSW、IVCSW、どっちもマニュアルには記載されていません。これってなんなんですかね?

同じ疑問を持つ人は多いようで、ネット検索したら、すぐに見つかりました。

たとえばこのあたり。

http://lists.freebsd.org/pipermail/freebsd-questions/2007-September/158479.html

VCSWは、Voluntary Context Switches

IVCSW
は、Involuntary Context Switches

の略だそうです。

マルチタスクOSとはいっても、基本的にCPUは1つしかないので(最近は2個とか4個とか8個とかゴロゴロありますし、SMTという技術だと、1つのCPUで同時に複数のスレッドを実行できちゃいますが・・・さらにSMTでも、実際には切り替え方式じゃねーか、ってのもあったり、細かいところでナニな感じはありますが・・・)、1つのCPUは、一度に1つのプログラムしか実行することはできません。とても短い時間間隔で(1ミリ秒とか10ミリ秒とか、その程度)、次々に実行するプログラムを切り替えていくと、同時に複数のプログラムが実行されているように見えるわけです。

その、実行対象のプログラムを切り替えることを、コンテキストスイッチ(context switch)といいます。

Voluntary Context Switchとは、プロセスが自発的にコンテキストスイッチを起こす、という意味なんだと思いますが、プロセスが、I/Oアクセス待ち(たとえば、ディスクの読み・書きをしようとして、データがディスクから取り出される・書き込まれるまで、しばらく待たされる)になったり、(処理速度を意図的に落とすためなどで)スリープしたとき、そういうときに発生するコンテキストスイッチだそうです。

プロセスがCPUを使い続けてもよい制限時間(先ほどの、数ミリ秒程度)」というのがあらかじめ決められているんですが、プロセスがI/O待ちになってしまったら、CPUを占有しつ続けていても、CPUにやってもらう処理が何もないので、無駄な時間を過ごすことになってしまいます。そこで、CPUの占有をやめて、だれか他の人、CPUを使ってもいいですよ、ということになるわけです(・・・ということになるように、OSが面倒を見てくれている)。

もう一方のInvoluntary Context Switchですが、in~は否定の意味の接頭辞ですから、自発的ではないコンテキストスイッチということ。つまりは、与えられていた、CPUを連続使用できる制限時間(数ミリ秒ほど)を、全部使い切ってしまったので、コンテキストスイッチが起きました、ってことなんでしょうね。

IVCSWの数が多いときは、ひたすらCPUが一生懸命、処理をしているときで、VCSWの数が多いときは、I/Oなど、何か他の処理待ちになることが多い、ってこと。

VCSWが思っている以上に多いときは、何かおかしなことがおきてんじゃない~?と疑って、ボトルネックとなっている箇所を探して、チューニングをするんじゃないかな?

voluntaryは形容詞で、~する人という意味の名詞volunteerは、日本語だとボランティアなんですけど、英語と日本語、かなり意味が違いますよね。


1 コメント

コメント日が  古い順  |   新しい順
[E:smile]ありがとうございます。 (青い狼)
2009-01-13 11:48:22
[E:smile]ありがとうございます。
いい情報ですね。

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。