Kenichi Maehashi's Blog
脳内コアダンプ
Cygwin の動作が遅いよね、という話 (その1)
Monday | March 19, 2012
|
日本の多くのエンジニアと同様に、仕事では仕方なく Windows を使っています。
シェル環境がないと不安になってしまうので Cygwin をインストールするわけですが、いかんせん動作が遅い。 zsh の初回起動に数秒、vim と打ち込んでからさらに待たされること数秒… といった具合では、生産性にもモチベーションにも影響が出てきます。
そこで、ちょっと原因を追究してみよう! というのが、この企画です。 # (その 1) と書いてはみましたが、次回以降の予定が特に立っているわけではないです。 # 判ったことを気が向くままに書いていく感じです。
一般に(ユーザランドの)プログラムの動作が遅いという場合、疑うべきポイントは大別して 2 つです。
1. プログラム処理の動作自体に、時間が掛かっている (CPU 時間を消費しているケース)。 2. システムコールが戻らない (ブロックされている)。
2 のケースは多岐に渡りますが、例えば - ディスクの読み書き待ち - TCP SYN 再送タイムアウト待ち - ロック取得待ち / デッドロック - スレッド wait - sleep などが挙げられるでしょう。
これらの観点を zsh に当てはめてみると、以下のような原因を想像しました。
1-1. zsh 自体が、そもそも重い 1-2. zsh の読み込んでいるスクリプトが重い 1-3. zsh の読み込んでいるスクリプトで起動しているプログラムが重い 2-1. I/O がボトルネックになっている 2-2. その他のシステムコールが、何らかの原因で遅い
1-1 については、ほかの Cygwin で動くプログラムも重いので、これは原因ではなさそうです。 1-2 や 1-3 は、十分あり得そうです。独自の .zshrc や補完用スクリプトなどがかなり入っているためです。 2-1 ですが、現在使っているマシンのリソースはかなり潤沢なので、関係なさそうな気がします。 2-2 については、strace で追跡すれば分析できそうです。
ということで、1-2, 1-3, 2-2 について、調査してみたいと思います。
(たぶん続く...)
|
| コメント (0)
|
<< 前ページ[1]
トップページに戻る
Copyright © 2006-2021 Kenichi Maehashi, All Rights Reserved.