« Movable Typeのバックアップ |
サーバー構築からDVDまで
| オリジナルコマンドの作成 .bashrc »
処理にかかった時間の計測
火曜日, 10, 03, 2006
Linuxでは、プログラムやコマンドの実行時間を簡単に測定できるようです。
たとえば、PHPでImageMagickを使う方法の記事でかいた実行時間は、実は「1・・・2・・・3・・・」と頭で数えた秒数です。(笑
なのですごく不確定な、曖昧な時間だったわけで・・・。(汗
処理時間を計測するには
Linuxのターミナルを立ち上げ、コマンドやプログラムを実行させるためのパスを入力する前に「time」と打ち込むだけです。
たとえば、「./myProgram.pl」というPerlスクリプトを実行させるのにどれくらいかかったか・・・を知りたい場合は、
$ time ./myProgram.pl
real 0m3.093s
user 0m2.820s
sys 0m0.150s
こんな感じになります。
「 real 」という項目が実際に処理にかかった時間になるようです。
「 user 」と「 sys 」に関しては、物理のかぎしっぽさんのプログラムの実行時間を計る というページが役に立ちます。
C3とセレロンM どちらが速いか
というわけで、同じVine Linux3.2という環境で、CPUにC3を使ったマシンと、セレロンMを使ったマシンで同じ処理をさせてどちらがどれくらい速いか、きちんと計測してみました。
処理内容:
912.8キロバイト程のPNG画像を、ImageMagickを使って横幅300ピクセルに縮小(縦横比を保ちながら)させる。
正確性を期すために5回実行させます。
# time convert -geometry "300" "./1024x768_2.png" "new.png"
real 0m3.231s
user 0m2.760s
sys 0m0.260s
# time convert -geometry "300" "./1024x768_2.png" "new.png"
real 0m3.189s
user 0m2.830s
sys 0m0.140s
# time convert -geometry "300" "./1024x768_2.png" "new.png"
real 0m3.301s
user 0m2.850s
sys 0m0.180s
# time convert -geometry "300" "./1024x768_2.png" "new.png"
real 0m3.642s
user 0m2.790s
sys 0m0.180s
# time convert -geometry "300" "./1024x768_2.png" "new.png"
real 0m3.152s
user 0m2.780s
sys 0m0.180s
平均すると約3.3秒となりました。
次は、セレロンMで。
# time convert -geometry "300" "./1024x768_2.png" "new.png"
real 0m0.573s
user 0m0.520s
sys 0m0.050s
# time convert -geometry "300" "./1024x768_2.png" "new.png"
real 0m0.539s
user 0m0.490s
sys 0m0.040s
# time convert -geometry "300" "./1024x768_2.png" "new.png"
real 0m0.538s
user 0m0.510s
sys 0m0.030s
# time convert -geometry "300" "./1024x768_2.png" "new.png"
real 0m0.538s
user 0m0.500s
sys 0m0.030s
# time convert -geometry "300" "./1024x768_2.png" "new.png"
real 0m0.538s
user 0m0.530s
sys 0m0.010s
平均すると約0.5452秒となりました。
3.3秒 ÷ 0.5452秒 = 6.0528246515040352164343360234776・・・・
おぉ~。約6倍!!
これはすごい。
このくらいの処理速度だと、バナー作成ツールとか、壁紙作成ツールで役に立つかもしれない。
特に、携帯待ち受け画像作成ツールなんかは、多い人だと1日に200回ぐらい使う人がいるんで、結構私のサーバーマシン、ひーひー悲鳴を上げていたりするんですね。実際は。
たぶん、みんなフリーだからってあんまりそういうこと考えないで使ってるんでしょうけれど・・・。
しかも、一人がっていうんじゃなくて、1日に何十人かがこれらのツールを使っているわけで・・・。
実は、自作マシンでサーバーマシンをパワーアップさせたかったのは、私が作って公開している各種プログラムの処理をするのに、サーバーマシンがそろそろ悲鳴を上げてきた。っていうのがありまして。
6倍の実行速度となれば、単純にそれら負荷のかかるPHPを今より6倍程の需要があっても耐えられる計算になり。
うーん。いいかもしれない。
あと、私が作ったアクセスログ解析プログラムもこれまた処理に時間がかかりまして・・・。
1日数千人規模のアクセスがあるサイトのアクセスログを解析するとですね、1回のアクセスに30秒ぐらいかかるんですね。
それが多少なりとも軽減されるのはうれしい。
あと、Movable Typeも一件の記事の投稿が完全に終わるまで非常に時間がかかるんで、それも速くなるのかなぁ?と。
こうしたマシンによる速度実験は、自鯖ユーザーを初めそうでない人も興味がある人が多いと思われます。
そこで、もう少し実践的な速度競争を実験してみました。
Apache C3 vs セレロンM
そう、Apacheの処理がC3とセレロンMでどちらが、どれだけ速いか競争。
ただし、先ほどの実験と違って今度はCPU以外にもメモリやHDDの性能も関わってくるため、正確に言えば
「C3 + 3~4年前のハード vs セレロンM + 最新のハード」
ですね。
特にApacheのような、ファイルを読み込んでブラウザに送信するような処理をする場合は、メモリやHDDの方が影響度が高いような気もする。
ここで各マシンの構成を振り返ってみると、
- C3マシン
- CPU:C3
- メモリ:DIMM PC133の512MB(なんと2世代前のメモリだ・・・)
- HDD:よくわからんメーカー(汗)40GB(たぶん、5年ぐらい前の代物。中古で購入)
- セレロンMマシン
- CPU:セレロンM1.35MHz
- メモリ:DDR II SD-RAM 533MHz デュアルチャンネル 1024MB
- HDD:SATA2 80GB
こうしてみると違いは歴然。
C3マシンの方は、'99頃の仕様だ・・・。
ただし、単にWEBサーバーを公開する程度なら十分な性能で、おそらく私のC3マシンで1日あたりのPV数は画像やCSSファイル等も含めると10万PVになると思うんだけれど、その程度のPV数であれば全くびくともしない。
なので、無理にマシンをレベルアップする必要はないんだけれど、セキュリティソフトや私の作成したPHPを快適に動かすには、より最新のマシン構成が求められるわけだ。
さて、Apacheでは「Apache Bench」というWEBサーバーのマシンの性能を調べることが出来るツールがついてる。
これを使ってC3とセレロンMのマシンでどっちがどれくらい速いか計測してみました。
C3マシン
# ab -n 10000 -c 100 http://127.0.0.1/index.html
Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Finished 10000 requests
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /index.html
Document Length: 33226 bytes
Concurrency Level: 100
Time taken for tests: 45.061 seconds
Complete requests: 10000
Failed requests: 0
Broken pipe errors: 0
Total transferred: 336427074 bytes
HTML transferred: 333570034 bytes
Requests per second: 221.92 [#/sec] (mean)
Time per request: 450.61 [ms] (mean)
Time per request: 4.51 [ms] (mean, across all concurrent requests)
Transfer rate: 7466.04 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 1 58 36.3 48 275
Processing: 90 388 108.1 359 3374
Waiting: 70 385 108.4 357 3371
Total: 90 446 109.1 417 3455
Percentage of the requests served within a certain time (ms)
50% 417
66% 466
75% 489
80% 510
90% 587
95% 641
98% 732
99% 772
100% 3455 (last request)
次、セレロンMマシン。
# ab -n 10000 -c 100 http://127.0.0.1/index.html
Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Finished 10000 requests
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /index.html
Document Length: 33226 bytes
Concurrency Level: 100
Time taken for tests: 13.983 seconds
Complete requests: 10000
Failed requests: 0
Broken pipe errors: 0
Total transferred: 335182662 bytes
HTML transferred: 332340674 bytes
Requests per second: 715.15 [#/sec] (mean)
Time per request: 139.83 [ms] (mean)
Time per request: 1.40 [ms] (mean, across all concurrent requests)
Transfer rate: 23970.73 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 2.6 0 54
Processing: 11 137 146.4 103 896
Waiting: 7 137 146.4 102 896
Total: 11 138 146.0 103 896
Percentage of the requests served within a certain time (ms)
50% 103
66% 108
75% 116
80% 120
90% 134
95% 455
98% 777
99% 828
100% 896 (last request)
ここで注目すべき値は、「 Requests per second 」で、1秒間あたりにいくつのリクエストを処理できるか。ということ。
C3:221.92
セレロンM:715.15
なんと約3倍。
うーん。こんな差がつくとは・・・。
って、実際は、C3の方は、自鯖として活躍している状態で測定したので、実際は他の人のアクセス等の処理もしなければならないため、実際にはもう少し上がると思われます。
昔測定したときは、400~500ぐらい出たような気がする。
いずれにしても、セレロンマシンの方が非常に多くの処理をこなせることが判明しました。
投稿者 campanella : 2006年10月03日 16:09 | Linux Tips | 編集
![]()
相互リンク募集

自動相互リンクツール公開しています。
相互リンクしませんか?
Linux Tips
- 処理にかかった時間の計測
- オリジナルコマンドの作成 .bashrc
- cron リンク集
- cron が毎回メールを送信
- snort ログのローテーションとcronエラー
- iplog ダウンロードとインストール
- Swatch TimeDate のインストール
- Snortで FlexResp を使う
- Snort のダウンロードとインストール
- 解像度を変更するには Vine Linux
- Vine Linux3.2のインストール
- webmin インストール
- 画像の直リンク拒否
- FTPを許可する設定 iptables編
- 特定の相手を拒否する
- コマンドを素早く実行 alias
- ダイナミックDNS 自動更新 MyDNS篇 布石
- HDD の増設
- Linux コマンド集
- postfix エイリアス
- 不要なサーバーリスト
- 自宅サーバーを立ち上げよう
- iptables 関連リンク集
- iptables Swatchを使って拒絶
- iptables DoS攻撃を防ぐ
- swatch で不正アクセスを監視
- iptables 不正アクセスを拒否 スクリプト
- メモリ使用量 Linux
- ランレベルの変更
- Vine Linux - 3.2リリース
- Vine Linux - iplog のログをローテーション化すると・・・
- Vine Linux - VNC クライアントのダウンロード
- Vine Linux - VNC クライアントのインストール
- Vine Linux - Swatch 起動と運用
- Vine Linux - Swatch Swatch のインストール
- Vine Linux - Swatch .swatchrc_secure
- Vine Linux - Swatch .swatchrc_message
- Vine Linux - Swatch モジュールのインストール
- Vine Linux - VNC インストールと準備
- Vine Linux - MRTG でマシンの状態をグラフ化
- Vine Linux - シェルスクリプトと改行と
- Vine Linux - 送信できなかったメールを...
- Vine Linux - inetd ssh と samba の設定
- Vine Linux - ハードディスクの検査 smartctl
- Vine Linux - firefox googleツールバー
- Vine Linux - Firefox インストール
- Vine Linux - Windows と Linux の共存
- Vine Linux - シリアルデバイスを確認する
- Vine Linux - サービスのポート番号を調べるには
- Vine Linux - whois 使用例
- Vine Linux - whois インストール
- Vine Linux - tcpdump インストール
- Perl DDNSに自動登録 (改良)
- Vine Linux - ログファイル
- Vine Linux - プロセス管理とKILLと swatch
- Vine Linux - sudo
- Vine Linux - CD-ROMオートマウント
- Perl DDNSに自動登録 ieserver.net
- Vine Linux - 時刻合わせ
- PHP PHPでLinuxユーザを追加 その1
- Linux - コマンド集 コマンドラインからメール送信
- Vine Linux - FlashPlayer7 インストール -
- Vine Linux - USBメモリー -
- Vine Linux - snort FlexResp で流失防止 -
- procmail でスパムを撃退 -
- Vine Linux - Snort リンク集 -
- Vine Linux - Snort FlexResp で強制切断 -
- Vine Linux - Snort パフォーマンスを上げる -
- Vine Linux - Snort Oinkmaster 設定と実行 -
- Vine Linux - Snort Oinkmaster サイトへ登録 -
- Vine Linux - Snort Oinkmasterの導入 -
- Linux - コマンド集 圧縮・復元・バックアップ関連 1 -
- Linux - コマンド集 ファイル関連 1 -
- inetd - inetd.conf の設定 -
- サービス名からプロセス番号を取得

□□□ コメント □□□