IometerによるディスクI/Oパフォーマンス確認

オペレーティングシステム: すべての 32-bit MS Windows (95/98/NT/2000/XP),
MacOSX, Linux, その他, SunOS/Solaris, Windows NT/2000, Windows XP
Iometer プロジェクト日本語トップページ – SourceForge.JP
Iometer Project

Windows32bit版
http://sourceforge.jp/projects/sfnet_iometer/downloads/iometer-devel/1.1.0-rc1/iometer-1.1.0-rc1-win32.i386-bin.zip/

Windows64bit版
http://sourceforge.jp/projects/sfnet_iometer/downloads/iometer-devel/1.1.0-rc1/iometer-1.1.0-rc1-win64.x86_64-bin.zip/

Linux版
http://sourceforge.jp/projects/sfnet_iometer/downloads/iometer-devel/1.1.0-rc1/iometer-1.1.0-rc1-src.tar.bz2/

以前はIntelのサイトからダウンロード出来たが、現在こちらでダウンロード出来るようです。
インテルは既に開発をやめて、OSDLに提供されたようです。
このツールを利用していたのはベンダーに勤めていた時なので、認識していませんでした。

——————————-
It was originally developed by the Intel Corporation and announced at
the Intel Developers Forum (IDF) on February 17, 1998 – since then it
got wide spread within the industry.

Meanwhile Intel has discontinued to work on Iometer and it was given to the
Open Source Development Lab (OSDL). In November 2001, a project was
registered at SourceForge.net and an initial drop was provided.
——————————-

Windows版をダウンロードして展開
http://sourceforge.jp/projects/sfnet_iometer/downloads/iometer-devel/1.1.0-rc1/iometer-1.1.0-rc1-win32.i386-bin.zip/

※デスクトップなどの日本語のパスがあるフォルダーに置いたら起動時に
エラーが表示されたので日本語が無いパスに移動した。

実行すると以下のような管理画面とコンソールが表示される。
コンソール

※こちらで、サービス起動してPortリッスンして管理画面などのGUIへサービスを提供しているのかな。

管理画面

Worker
iometerを動作させるWindows上で認識できるCPU数と同じだけ表示される。(追加可)

Targets
テスト対象のロジカルドライブを選択(×)

Maximum Disk Size
Sectors単位で指定。指定しない場合、ハードディスクの空き容量すべてが使用される。
512byte/Sector
iobw.tst(4.76 GB、5,120,000,000 バイト)のテストファイルが自動作成される。
ストレステスト実行後自動で削除されません。

セクターの確認(fsutil fsinfo ntfsinfo C:)
sector
今回は、1GBのファイルでテスト(2000000 Sector)で検証。

# of Outstanding I/Os
Queue Depth:ストレージの単純性能値を計るにはDefault(1)で良さそう。

Starting Disk Sector
使用する場合は、windowsのコマンド(fsutil fsinfo ntfsinfo C:)
によって計算するそうだが、今回はDefaultのまま利用。

Network Targets
今回はローカルなので使用しません。

Access Specifications
こちらにストレステストケースを定義します。
Assigned Access Specifications
定義したテストケースが順番に実行され、テストケースは編集する事が可能です。

カスタマイズ
読み・書き込み、Worker、ブロックサイズ(512B:1KB:2KB:4KB:8KB:16KB:32KB:64KB)

Results Display
ストレステストの結果サマリーを確認。

Test Setup
Run Time
Assigned Access Specificationsで定義した1つのテストケースでサンプリング対象とする実行時間
Ramp Up Time
ストレステストケース実行の事前準備時間

全てのWorkerに設定を入れたらテストを実行してみる。
※実行すると結果を保存する為のCSVファイル(results.csv)を保存する場所を聞かれるので、
適当に場所を選んで保存を選択すると実行開始される。

ファイルが作成されている。(テスト後にマニュアル削除)

実行結果をresultタブでも見る事が出来ます。

CSVファイル(results.csv)の中には詳細の数値データが記録されている。

参考
ベンチマーク:Iometerの設定方法・使用方法、ストレージパフォーマンステスト


サーバーを購入したり、ディスク交換や追加した場合に、
単純にI/O性能を測る事が出来るツールを確認。
前回は、Linuxのhdparmを検証しました。

CrystalDiskMark

ダウンロードページ
2012年2月12日[7/2008/Vista/2003/XP/2000, x86/x64, i18n]
http://crystalmark.info/download/index.html#CrystalDiskMark

インストールしないでもベンチマーク出来る方が、
何処でも利用出来て敷居が低いのでポータブル版をダウンロードして利用。

ダウンロードして展開
展開

実行ファイルをクリック(32bit/64bit版)
実行

対象ディスクの選択

ローカルディスクで実行
ローカル

外部SDカードで実行

それぞれのテストは100MBのファイル設定で2回ずつ実行。(Defaultは5回実行)
テストループ回数は多い程、サンプリングデータが増えてより正確なデータを得る
事が出来ると考える。


MYSQLを暫くアップグレードしていなかったので、
BugFix含めて対応する事にした。

既存の環境を確認
[root@colinux local]$ ls -l | grep mysql
lrwxrwxrwx 1 root root 38 2009-12-26 01:40 mysql -> mysql-5.5.0-m2-linux-i686-icc-glibc23/
drwxr-xr-x 14 mysql mysql 4096 2009-12-22 00:23 mysql-5.1.41-linux-i686-icc-glibc23
drwxr-xr-x 14 mysql mysql 4096 2009-12-26 01:37 mysql-5.5.0-m2-linux-i686-icc-glibc23
[root@colinux local]$

古いバージョンはもう1年以上利用していないので削除。(2世代前のファイル)
[root@colinux local]# rm -rf mysql-5.1.41-linux-i686-icc-glibc23/

ディスクスペースが空いたので最新のMYSQL GAバージョンをダウンロード
http://dev.mysql.com/downloads/mysql/5.5.html#downloads

32bit (mysql-5.5.25-linux2.6-i686.tar.gz)
http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/

64bit(mysql-5.5.25-linux2.6-x86_64.tar.gz)
http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-x86_64.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-x86_64.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/

wgetに-Oでファイル名指定しないと、index.htmlでダウンロードしてしまうのでファイル名をオプションで指定。

[root@colinux src]# wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/ -O mysql-5.5.25-linux2.6-i686.tar.gz
–2012-06-23 07:11:41– http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
dev.mysql.com をDNSに問いあわせています… 156.151.63.11
dev.mysql.com|156.151.63.11|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 302 Found
場所: http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz [続く]
–2012-06-23 07:11:42– http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz
ftp.iij.ad.jp をDNSに問いあわせています… 202.232.140.141, 202.232.140.135, 202.232.140.136, …
ftp.iij.ad.jp|202.232.140.141|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 179403866 (171M) [application/x-gzip]
`mysql-5.5.25-linux2.6-i686.tar.gz’ に保存中

100%[=============================================================================================================================>] 179,403,866 2.64M/s 時間 72s

2012-06-23 07:12:54 (2.38 MB/s) – `mysql-5.5.25-linux2.6-i686.tar.gz’ へ保存完了 [179403866/179403866]

[root@colinux src]#

[root@colinux src]# ls -lh
合計 216M
-rw-r–r– 1 root root 123K 2009-04-14 11:40 DBD-mysql-4.011.tar.gz
-rw-r–r– 1 root root 499K 2009-06-08 19:29 DBI-1.609.tar.gz
-rw-r–r– 1 root root 44M 2010-12-07 18:51 MySQL-embedded-5.5.8-1.linux2.6.i386.rpm
-rwxrwxr-x 1 root mysql 2.7K 2010-04-27 00:10 my.cnf.20110109
-rw-r–r– 1 root root 172M 2012-05-15 22:16 mysql-5.5.25-linux2.6-i686.tar.gz

ダウンロードしたtarを展開して、任意のフォルダーに移動して利用。

[root@colinux src]# tar zxvf mysql-5.5.25-linux2.6-i686.tar.gz
[省略]
mysql-5.5.25-linux2.6-i686/INSTALL-BINARY
mysql-5.5.25-linux2.6-i686/README
mysql-5.5.25-linux2.6-i686/data/test/.empty
mysql-5.5.25-linux2.6-i686/data/mysql/.empty
mysql-5.5.25-linux2.6-i686/COPYING
[root@colinux src]#

[root@colinux src]# ls -l
合計 221008
-rw-r–r– 1 root root 125653 2009-04-14 11:40 DBD-mysql-4.011.tar.gz
-rw-r–r– 1 root root 510309 2009-06-08 19:29 DBI-1.609.tar.gz
-rw-r–r– 1 root root 46019462 2010-12-07 18:51 MySQL-embedded-5.5.8-1.linux2.6.i386.rpm
-rwxrwxr-x 1 root mysql 2714 2010-04-27 00:10 my.cnf.20110109
drwxr-xr-x 13 root root 4096 2012-06-23 07:15 mysql-5.5.25-linux2.6-i686
-rw-r–r– 1 root root 179403866 2012-05-15 22:16 mysql-5.5.25-linux2.6-i686.tar.gz
[root@colinux src]#

[root@colinux src]# mv mysql-5.5.25-linux2.6-i686 /usr/local/
[root@colinux src]#

[root@colinux local]# pwd
/usr/local
[root@colinux local]# ls -l | grep mysql
lrwxrwxrwx 1 root root 38 2009-12-26 01:40 mysql -> c-m2-linux-i686-icc-glibc23/
drwxr-xr-x 14 mysql mysql 4096 2009-12-26 01:37 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 root root 4096 2012-06-23 07:15 mysql-5.5.25-linux2.6-i686
[root@colinux local]#

MYSQLを停止してシンボリックリンクを削除する前にMYSQLにログインしてバージョンを再確認。

mysql version confirmation


1.確認が終わったので、MYSQLを停止してシンボリックリンク削除と再作成
2.データファイルのコピー(古いDATAフォルダーを新しいDATAフォルダーへ)

※失敗した場合も古いバージョンにシンボリックリンクの変更のみでロールバック出来るので楽です。

既存MYSQLの停止
[root@colinux local]# /etc/init.d/mysql.server stop
Shutting down MySQL.. SUCCESS!
[root@colinux local]#

[root@colinux local]# ls -l | grep mysql
lrwxrwxrwx 1 root root 38 2009-12-26 01:40 mysql -> mysql-5.5.0-m2-linux-i686-icc-glibc23/
drwxr-xr-x 14 mysql mysql 4096 2009-12-26 01:37 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 root root 4096 2012-06-23 07:15 mysql-5.5.25-linux2.6-i686
[root@colinux local]#

シンボリックリンクの削除
[root@colinux local]# rm -rf mysql
[root@colinux local]# ls -l | grep mysql
drwxr-xr-x 14 mysql mysql 4096 2009-12-26 01:37 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 root root 4096 2012-06-23 07:15 mysql-5.5.25-linux2.6-i686
[root@colinux local]#

MYSQLを停止したので、データファイルを新しいバージョンにコピー
[root@colinux local]# ls -l mysql-5.5.0-m2-linux-i686-icc-glibc23/data/ | wc -l
47
[root@colinux local]# ls -l mysql-5.5.25-linux2.6-i686/data/ | wc -l
3
[root@colinux local]#

データを移動したのでファイル数の確認
[root@colinux local]# mv -f mysql-5.5.0-m2-linux-i686-icc-glibc23/data mysql-5.5.25-linux2.6-i686/
[root@colinux local]# ls -l mysql-5.5.25-linux2.6-i686/data/ | wc -l
47
[root@colinux local]#

※mvコマンドだとバックアップが無くなってしまうので、cpコマンドでコピーする方が良い。
今回はmvしてしまったので、バージョンアップする前にコピーしておきました。
ロールバックもシンボリックリンク変更して起動するだけなので楽です。
———————————————————————————-
[root@colinux bin]# cp -rp /usr/local/mysql-5.5.25-linux2.6-i686/data /usr/local/mysql-5.5.0-m2-linux-i686-icc-glibc23/
[root@colinux bin]#
———————————————————————————-

移動し終わったので、新しいバージョンでシンボリックリンクの作成。
[root@colinux local]# ln -s mysql-5.5.25-linux2.6-i686/ mysql
[root@colinux local]# ls -l | grep mysql
lrwxrwxrwx 1 root root 27 2012-06-23 07:26 mysql -> mysql-5.5.25-linux2.6-i686/
drwxr-xr-x 13 mysql mysql 4096 2012-06-23 07:25 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 root root 4096 2012-06-23 07:25 mysql-5.5.25-linux2.6-i686
[root@colinux local]#

フォルダーをMYSQLユーザが変更出来るようにオーナーを変更。
[root@colinux local]# ls -l | grep mysql
lrwxrwxrwx 1 root root 27 2012-06-23 07:26 mysql -> mysql-5.5.25-linux2.6-i686/
drwxr-xr-x 13 mysql mysql 4096 2012-06-23 07:25 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 root root 4096 2012-06-23 07:25 mysql-5.5.25-linux2.6-i686
[root@colinux local]# chown -R mysql:mysql mysql-5.5.25-linux2.6-i686/
[root@colinux local]# ls -l | grep mysql
lrwxrwxrwx 1 root root 27 2012-06-23 07:26 mysql -> mysql-5.5.25-linux2.6-i686/
drwxr-xr-x 13 mysql mysql 4096 2012-06-23 07:25 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 mysql mysql 4096 2012-06-23 07:25 mysql-5.5.25-linux2.6-i686
[root@colinux local]#

フォルダー権限、シンボリックリンク、データコピーが終わったので起動してみる。

[root@colinux data]# /etc/init.d/mysql.server start
Starting MySQL.. ERROR! Manager of pid-file quit without updating file.
[root@colinux data]#
案の定エラーになった。
毎度の事だが、MYSQLのバージョンアップに伴いオプションが変わっているかと。

先ずは、エラーログを確認して以下のエラーから対応
——————————————————————————
120623 08:06:12 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
/usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
120623 08:06:12 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
——————————————————————————
[root@colinux data]# yum install libaio-devel -y
fedora 100% |=========================| 2.1 kB 00:00
updates 100% |=========================| 2.3 kB 00:00
Setting up Install Process
Parsing package install arguments

libaio-devel

再度サービス起動したが、エラーが残っていて起動しない。
[root@colinux data]# /etc/init.d/mysql.server start
my.confが新しいバージョンに対応していないようなので調整してみる。

——————————————————————————–
120623 08:08:24 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
120623 08:11:04 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120623 8:11:05 [Note] Plugin ‘FEDERATED’ is disabled.
120623 8:11:05 InnoDB: The InnoDB memory heap is disabled
120623 8:11:05 InnoDB: Mutexes and rw_locks use InnoDB’s own implementation
120623 8:11:05 InnoDB: Compressed tables use zlib 1.2.3
120623 8:11:05 InnoDB: Using Linux native AIO
120623 8:11:06 InnoDB: Error: Linux Native AIO is not supported on tmpdir.
InnoDB: You can either move tmpdir to a file system that supports native AIO
InnoDB: or you can set innodb_use_native_aio to FALSE to avoid this message.
120623 8:11:06 InnoDB: Error: Linux Native AIO check on tmpdir returned error[22]
120623 8:11:06 InnoDB: Warning: Linux Native AIO disabled.
120623 8:11:06 InnoDB: Initializing buffer pool, size = 16.0M
120623 8:11:06 InnoDB: Completed initialization of buffer pool
120623 8:11:06 InnoDB: highest supported file format is Barracuda.
120623 8:11:07 InnoDB: Warning: allocated tablespace 17, old maximum was 0
InnoDB: 127 rollback segment(s) active.
120623 8:11:07 InnoDB: Waiting for the background threads to start
120623 8:11:08 InnoDB: 1.1.8 started; log sequence number 33765719
120623 8:11:08 [ERROR] /usr/local/mysql/bin/mysqld: unknown option ‘–skip-locking’
120623 8:11:08 [ERROR] Aborting

120623 8:11:08 InnoDB: Starting shutdown…
120623 8:11:09 InnoDB: Shutdown completed; log sequence number 35322070
120623 8:11:09 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

120623 08:11:09 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
[root@colinux data]#
——————————————————————————–

my.confを編集する前に、念の為バックアップ
[root@colinux data]# cp -p /etc/my.cnf /etc/my.cnf.old.20120623

こちらのオプションをコメントする。
——————————————————————————–
120623 8:11:08 [ERROR] /usr/local/mysql/bin/mysqld: unknown option ‘–skip-locking’
120623 8:11:08 [ERROR] Aborting
——————————————————————————–
[root@colinux data]# vi /etc/my.cnf
# Comment skip-locking at version up to 5.5.25
#skip-locking

こちらの文字コードの設定も設定の仕方が、character-set-serverに変わっているので変更。
——————————————————————————–
120623 8:22:00 [ERROR] /usr/local/mysql/bin/mysqld: unknown variable ‘default-character-set=utf8’
120623 8:22:00 [ERROR] Aborting
——————————————————————————–
[root@colinux data]# vi /etc/my.cnf
# Comment skip-locking at version up to 5.5.25
#default-character-set=utf8
character-set-server=utf8

my.cnfの編集が終わったので起動してみる。
[root@colinux data]# /etc/init.d/mysql.server start
Starting MySQL…. SUCCESS!
[root@colinux data]#

起動したので、先ずはMYSQLのシステムテーブルをアップグレード。

[root@colinux data]# /usr/local/mysql/bin/mysql_upgrade -u root -p
Enter password:
Looking for ‘mysql’ as: /usr/local/mysql/bin/mysql
Looking for ‘mysqlcheck’ as: /usr/local/mysql/bin/mysqlcheck
Running ‘mysqlcheck’ with connection arguments: ‘–port=3306’ ‘–socket=/tmp/mysql.sock’
Running ‘mysqlcheck’ with connection arguments: ‘–port=3306’ ‘–socket=/tmp/mysql.sock’
DB01.TABLE000 OK
DB01.TABLE007 OK
DB01.TABLE008 OK
DB01.TABLE009 OK
DB01.TABLE100 OK
DB01.TABLE101 OK
DB01.TABLE911 OK
DB01.TABLE_FILEPATH OK
DB01.TABLE_FILEPATH2 OK
DB01.T_FULLTEXT OK
DB02.animals OK
DB02.animals02 OK
DB02.animals03 OK

[省略]

mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
mysql.user_info OK
Running ‘mysql_fix_privilege_tables’…
OK
[root@colinux data]#

システムテーブルのアップグレードが問題無く終わったので念の為再起動

[root@colinux data]# /etc/init.d/mysql.server restart
Shutting down MySQL. SUCCESS!
Starting MySQL…. SUCCESS!
[root@colinux data]#

エラーログの確認してみると、”Native AIO is not supported on tmpdir”というログがある。
——————————————————————————
Version: ‘5.5.25-log’ socket: ‘/tmp/mysql.sock’ port: 3306 MySQL Community Server (GPL)
120623 8:52:55 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown
120623 8:52:55 [Note] Event Scheduler: Purging the queue. 0 events
120623 8:52:55 InnoDB: Starting shutdown…
120623 8:52:56 InnoDB: Shutdown completed; log sequence number 35322070
120623 8:52:56 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
120623 08:52:56 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
120623 08:52:58 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120623 8:52:58 [Note] Plugin ‘FEDERATED’ is disabled.
120623 8:52:58 InnoDB: The InnoDB memory heap is disabled
120623 8:52:58 InnoDB: Mutexes and rw_locks use InnoDB’s own implementation
120623 8:52:58 InnoDB: Compressed tables use zlib 1.2.3
120623 8:52:58 InnoDB: Using Linux native AIO
120623 8:52:58 InnoDB: Error: Linux Native AIO is not supported on tmpdir.
InnoDB: You can either move tmpdir to a file system that supports native AIO
InnoDB: or you can set innodb_use_native_aio to FALSE to avoid this message.
120623 8:52:58 InnoDB: Error: Linux Native AIO check on tmpdir returned error[22]
120623 8:52:58 InnoDB: Warning: Linux Native AIO disabled.
120623 8:52:58 InnoDB: Initializing buffer pool, size = 16.0M
120623 8:52:58 InnoDB: Completed initialization of buffer pool
120623 8:52:59 InnoDB: highest supported file format is Barracuda.
120623 8:52:59 InnoDB: Warning: allocated tablespace 17, old maximum was 0
120623 8:52:59 InnoDB: Waiting for the background threads to start
120623 8:53:00 InnoDB: 1.1.8 started; log sequence number 35322070
120623 8:53:00 [Note] Server hostname (bind-address): ‘0.0.0.0’; port: 3306
120623 8:53:00 [Note] – ‘0.0.0.0’ resolves to ‘0.0.0.0’;
120623 8:53:00 [Note] Server socket created on IP: ‘0.0.0.0’.
120623 8:53:00 [Note] Event Scheduler: Loaded 0 events
120623 8:53:00 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: ‘5.5.25-log’ socket: ‘/tmp/mysql.sock’ port: 3306 MySQL Community Server (GPL)
[root@colinux data]#
——————————————————————————


以下のエラーが出ているので、tempファイルシステムを移動してみる。
現状は、/usr/local/tmpに設定しているの/tmpに変更してみる。

—————————————————————————–
120623 8:52:58 InnoDB: Error: Linux Native AIO is not supported on tmpdir.
InnoDB: You can either move tmpdir to a file system that supports native AIO
—————————————————————————–
[root@colinux mysql]# vi /etc/my.cnf
# Comment skip-locking at version up to 5.5.25
# tmpdir
# tmpdir=/usr/local/tmp
tmpdir=/tmp

fstabの内容は以下のような感じにしてました。
[root@colinux data]# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
#LABEL=/ / ext3 defaults,noatime 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
#LABEL=swap none swap defaults 0 0
/dev/cobd1 none swap defaults 0 0
#additional temp fs
/dev/shm /usr/local/tmp tmpfs defaults,size=32m 0 0
[root@colinux data]#

変更したので、再度MYSQLを再起動してみる。

[root@colinux mysql]# /etc/init.d/mysql.server restart
Shutting down MySQL. SUCCESS!
Starting MySQL…. SUCCESS!
[root@colinux mysql]#

ログを確認してみてエラーが解消されたか確認。

—————————————————————————-
MYSQLのログからエラーが消えた事を確認。
—————————————————————————-
120623 9:03:00 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown
120623 9:03:00 [Note] Event Scheduler: Purging the queue. 0 events
120623 9:03:00 InnoDB: Starting shutdown…
120623 9:03:00 InnoDB: Shutdown completed; log sequence number 35322070
120623 9:03:00 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
120623 09:03:01 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
120623 09:03:02 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120623 9:03:02 [Note] Plugin ‘FEDERATED’ is disabled.
120623 9:03:02 InnoDB: The InnoDB memory heap is disabled
120623 9:03:02 InnoDB: Mutexes and rw_locks use InnoDB’s own implementation
120623 9:03:02 InnoDB: Compressed tables use zlib 1.2.3
120623 9:03:02 InnoDB: Using Linux native AIO
120623 9:03:03 InnoDB: Initializing buffer pool, size = 16.0M
120623 9:03:03 InnoDB: Completed initialization of buffer pool
120623 9:03:03 InnoDB: highest supported file format is Barracuda.
120623 9:03:03 InnoDB: Warning: allocated tablespace 17, old maximum was 0
120623 9:03:03 InnoDB: Waiting for the background threads to start
120623 9:03:04 InnoDB: 1.1.8 started; log sequence number 35322070
120623 9:03:05 [Note] Server hostname (bind-address): ‘0.0.0.0’; port: 3306
120623 9:03:05 [Note] – ‘0.0.0.0’ resolves to ‘0.0.0.0’;
120623 9:03:05 [Note] Server socket created on IP: ‘0.0.0.0’.
120623 9:03:05 [Note] Event Scheduler: Loaded 0 events
120623 9:03:05 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: ‘5.5.25-log’ socket: ‘/tmp/mysql.sock’ port: 3306 MySQL Community Server (GPL)
[root@colinux data]#
—————————————————————————-

エラーが解消されたので、ログインしてバージョンを確認してみる。
いつの間にか、コピーライトが”Copyright (c) 2000, 2011, Oracle and/or its affiliates.”
になっていますね。

[root@colinux data]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.25-log MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> select @@version;
+————+
| @@version |
+————+
| 5.5.25-log |
+————+
1 row in set (0.01 sec)

バージョンも無事に更新されてました。

my.cnfでオプション変更したが、文字コードもきちんとUTF-8でした。
文字コード

以上でMYSQLのバージョンアップ完了。


http-pingは、ICMPの代わりにhttp/sを利用してコンピュータ名や
IPアドレスの変わりにURLを利用してレスポンスを返します。 (IPv6にも対応)

It is similar to the popular ping utility, but works over HTTP/S
instead of ICMP, and with a URL instead of a computer name/IP address.
http-ping supports IPv6 addresses.

Ping any URL or web site with our free command-line utility, http-ping

http-pingをダウンロードしたら,exeをそのままフォルダーに配置して
何もインストールしないでそのまま実行ファイルとして利用出来ます。

http-ping

For each request, http-ping displays:

The HTTP return code (and its brief textual description)
The number of bytes returned by the server (excluding headers)
The time taken to complete the request (i.e. round-trip time)

A summary of all the requests is presented upon completion.


C:\tools\http-ping>http-ping.exe /?

http-ping
=========

Synopsis: Pings a specified URL.

Usage: http-ping [-t] [-n count] [-i interval] [-f file-name] [-s] [-v]
[-q] [-c] [-r] [-w timeout] [-d] [-o data | -of file-name] URL

Where:
URL The URL you wish to check. For example http://www.kiva.org,
http://209.191.122.70, or http://www.yourhost:8080.
Be sure to surround an IPv6 address with square brackets,
for example, http://[2a00:1450:4007:800::1014].

Options:
-t Ping the specified URL until stopped.
To see statistics and continue - type Control-Break;
To stop - type Control-C.
-n count Send 'count' requests. Supercedes -t.
-i interval Wait 'interval' seconds between each request. There is a
1-second wait if this option is not specified.
-f file-name Save responses to file 'file-name'. Please specify the full
path, and use quotes if the file name contains spaces.
-s Silent. Print no output.
-v Verbose. Print detailed output. Supercedes -s.
-q Quick. Perform HTTP HEAD requests instead of GETs. This
will retrieve headers only, and bytes reported wil be 0.
-c Perform a full connection on each request; ignore
keep-alive.
-r Follow HTTP redirects.
-w timeout Wait 'timeout' seconds for a response before timing out.
Specify 0 to avoid timing out.
If not specified, the default timeout is 30 seconds.
-p Use the proxy defined in the Windows Internet settings.
-d Print the date and time of each ping attempt.
-o data Perform HTTP POSTs sending the given data. Please enclose
the data in quotes if it contains spaces.
-of file-name Perform HTTP POSTs sending the contents of file
'file-name'. Please specify the full path, and use quotes
if the file name contains spaces.

Exit code: The percentage of requests that succeed.

Version: 5.0.0.33 (Dec 24 2011)

Examples: > http-ping http://www.yahoo.com
- Pings the yahoo home page 4 times.
> http-ping -t http://localhost:8080
- Repeatedly pings the web server at port 8080 on your
local machine until stopped.

---------------------------------------------------------------------------
This free utility is Copyright 2011, Core Technologies Consulting, LLC.
Find out about this and our other products at our web site:
http://www.CoreTechnologies.com/
---------------------------------------------------------------------------

-rでリダイレクト先のレスポンスを確認。

C:\tools\http-ping>

バッチとの連携
http://www.coretechnologies.com/products/AlwaysUp/alwaysup-sanity-check-web-server.bat
———————————————-

@echo off
REM This batch file is for use with AlwaysUp (http://www.coretechnologies.com/products/AlwaysUp/) or Service Protector (http://www.coretechnologies.com/products/ServiceProtector/)
REM Copyright � 2001-2012 Core Technologies Consulting, LLC. All rights reserved.

REM Ping your web server
REM *** Please change the location of http-ping.exe if necessary and adjust the URL to point to your web server ***
"C:\Program Files\AlwaysUp\http-ping.exe" http://localhost:80

REM http-ping returns the percentage of pings that succeed. With 4 attempts, this can be 0, 25, 50, 75, or 100.
REM Any of the 4 pings succeeds consider it a success ==> return 0 so that AlwaysUp doesn't restart
IF ERRORLEVEL 25 GOTO success
IF ERRORLEVEL 50 GOTO success
IF ERRORLEVEL 75 GOTO success
IF ERRORLEVEL 100 GOTO success

REM Exit code of 0 ==> all failed ==> return 1 to have AlwaysUp restart the application
IF ERRORLEVEL 0 GOTO failure

REM http-ping returned a code < 0 ==> there was some other kind of failure. Don't restart, but have AlwaysUp log the failure ==> return 2
echo http-ping failed!
exit 2

:success
echo Succeeded!
exit 0

:failure
echo Failed!
exit 1

———————————————-

その他のツールも以下のサイトでダウンロード出来ます。
Core Technologies Consulting, LLC


TOPコマンドでパフォーマンスを確認する事で問題ないのですが、
少しだけビジュアライズされてキーボードやマウスで簡単に操作出来るように
なっているHTOPでパフォーマンス確認をより身近にする事で気付ける事も
あるかもしれません。

ダウンロード

[root@colinux htop]# wget http://citylan.dl.sourceforge.net/project/htop/htop/0.8.3/htop-0.8.3.tar.gz
–2012-06-15 09:58:08– http://citylan.dl.sourceforge.net/project/htop/htop/0.8.3/htop-0.8.3.tar.gz
citylan.dl.sourceforge.net をDNSに問いあわせています… 212.118.44.106, 2a03:1800:1:7::2
citylan.dl.sourceforge.net|212.118.44.106|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 428061 (418K) [application/x-gzip]
`htop-0.8.3.tar.gz’ に保存中

100%[====================================================================================>] 428,061 71.5K/s 時間 5.9s

2012-06-15 09:58:15 (71.5 KB/s) – `htop-0.8.3.tar.gz’ へ保存完了 [428061/428061]

[root@colinux htop]#

展開

[root@colinux htop]# tar xzvf htop-0.8.3.tar.gz
htop-0.8.3/
htop-0.8.3/Makefile.am
htop-0.8.3/ClockMeter.h
htop-0.8.3/depcomp
htop-0.8.3/Meter.c
htop-0.8.3/htop.1.in
htop-0.8.3/SignalItem.c
htop-0.8.3/plpa-1.1/
htop-0.8.3/plpa-1.1/Makefile.am
htop-0.8.3/plpa-1.1/src/
htop-0.8.3/plpa-1.1/src/Makefile.am
htop-0.8.3/plpa-1.1/src/plpa.h.in
htop-0.8.3/plpa-1.1/src/plpa_dispatch.c
[…省略]
htop-0.8.3/acinclude.m4
htop-0.8.3/Object.c
htop-0.8.3/htop.c
htop-0.8.3/autogen.sh
htop-0.8.3/AvailableMetersPanel.c
[root@colinux htop]#

インストール [configure -> make -> make install]

[root@colinux htop-0.8.3]# ./configure
checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for a thread-safe mkdir -p… /bin/mkdir -p
checking for gawk… gawk
checking whether make sets $(MAKE)… yes
checking for gcc… gcc
checking for C compiler default output file name… a.out
checking whether the C compiler works… yes
checking whether we are cross compiling… no
checking for suffix of executables…
checking for suffix of object files… o
checking whether we are using the GNU C compiler… yes
[…省略]
checking for unistd.h… (cached) yes
checking curses.h usability… no
checking curses.h presence… no
checking for curses.h… no
configure: error: missing headers: curses.h
[root@colinux htop-0.8.3]#

configureでエラーになったので必要なパッケージをインストール
エラー内容:configure: error: missing headers: curses.h

[root@colinux htop-0.8.3]# yum install ncurses-devel
fedora 100% |=========================| 2.1 kB 00:00
updates 100% |=========================| 2.3 kB 00:00
Setting up Install Process
Parsing package install arguments

今回は無事にconfigureが完了したので、
makeとmake installしてインストールを完了。

configure: creating ./config.status
config.status: creating plpa-1.1/Makefile
config.status: creating plpa-1.1/src/Makefile
config.status: creating Makefile
config.status: creating htop.1
config.status: creating config.h
config.status: config.h is unchanged
config.status: creating plpa-1.1/src/plpa_config.h
config.status: creating plpa-1.1/src/plpa.h
config.status: executing depfiles commands
[root@colinux htop-0.8.3]#
[root@colinux htop-0.8.3]# make
[…省略]
[root@colinux htop-0.8.3]# make install
[…省略]

htopを起動してみる。
パスを指定しなければ以下のパスにインストールされている。

[root@colinux htop-0.8.3]# whereis htop
htop: /usr/local/bin/htop
[root@colinux htop-0.8.3]#
[root@colinux htop-0.8.3]# htop

起動後はF1~F10キーでNICEやTREEなども操作出来る。

通常起動後

htop

htop


minttyをインストールしてみた。
Windows上でwget, vim, Linuxコマンドが簡単に利用出来て便利かもしれない。

Downloadサイト
http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/

今回は以下のファイルを利用
http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/mingw-get-inst-20120426/

1)DOWNLOADが終わったらセットアップを実行

2) Repository Catalogの選択

Compilerの選択

WEBにアクセスして必要なコンポーネントの自動ダウンロード

SETUP COMPLATED

WINDOWS PATH追加
C:\MinGW\msys\1.0\bin

パッケージのアップデートとMSYSのインストール
$ mingw-get update

$ mingw-get install msys-mintty

Mintty起動用ショートカットの作成とオプション設定
1. 「ショートカット」 C:\MinGW\msys\1.0\bin\mintty.exe /bin/bash –login -i
2. オプション設定

設定とアプリケーションインストール

$ mingw-get update

$ mingw-get upgrade

$ mingw-get install msys-coreutils msys-man msys-tar msys-gzip msys-wget msys-zip msys-unzip msys-vim
$ mingw-get install msys-openssl msys-openssh

インストール後の簡単な確認

パッケージリスト

anywhere@any-place ~/temp20120609
$ mingw-get list | egrep “Package:”
Package: mingw-developer-toolkit Subsystem: msys
Package: mingw32-autoconf Subsystem: mingw32
Package: mingw32-autoconf2.1 Subsystem: mingw32
Package: mingw32-autoconf2.5 Subsystem: mingw32
Package: mingw32-automake Subsystem: mingw32
Package: mingw32-automake1.10 Subsystem: mingw32
Package: mingw32-automake1.11 Subsystem: mingw32
Package: mingw32-automake1.4 Subsystem: mingw32
Package: mingw32-automake1.5 Subsystem: mingw32
Package: mingw32-automake1.6 Subsystem: mingw32
Package: mingw32-automake1.7 Subsystem: mingw32
Package: mingw32-automake1.8 Subsystem: mingw32
Package: mingw32-automake1.9 Subsystem: mingw32
Package: mingw32-autotools Subsystem: mingw32
Package: mingw32-base Subsystem: mingw32
Package: mingw32-basic-bsdtar Subsystem: mingw32
Package: mingw32-binutils Subsystem: mingw32
Package: mingw32-bsdcpio Subsystem: mingw32
Package: mingw32-bsdtar Subsystem: mingw32
Package: mingw32-bzip2 Subsystem: mingw32
Package: mingw32-dos2unix Subsystem: mingw32
Package: mingw32-expat Subsystem: mingw32
Package: mingw32-gcc Subsystem: mingw32
Package: mingw32-gcc-ada Subsystem: mingw32
Package: mingw32-gcc-fortran Subsystem: mingw32
Package: mingw32-gcc-g++ Subsystem: mingw32
Package: mingw32-gcc-objc Subsystem: mingw32
Package: mingw32-gcc-tools-epoch2-autoconf Subsystem: mingw32
Package: mingw32-gcc-tools-epoch2-automake Subsystem: mingw32
Package: mingw32-gcc-v3-ada Subsystem: mingw32
Package: mingw32-gcc-v3-core Subsystem: mingw32
Package: mingw32-gcc-v3-fortran Subsystem: mingw32
Package: mingw32-gcc-v3-g++ Subsystem: mingw32
Package: mingw32-gcc-v3-java Subsystem: mingw32
Package: mingw32-gcc-v3-objc Subsystem: mingw32
Package: mingw32-gdb Subsystem: mingw32
Package: mingw32-gdb-python Subsystem: mingw32
Package: mingw32-gendef Subsystem: mingw32
Package: mingw32-gettext Subsystem: mingw32
Package: mingw32-gmp Subsystem: mingw32
Package: mingw32-libarchive Subsystem: mingw32
Package: mingw32-libasprintf Subsystem: mingw32
Package: mingw32-libbz2 Subsystem: mingw32
Package: mingw32-libcharset Subsystem: mingw32
Package: mingw32-libexpat Subsystem: mingw32
Package: mingw32-libgcc Subsystem: mingw32
Package: mingw32-libgettextpo Subsystem: mingw32
Package: mingw32-libgfortran Subsystem: mingw32
Package: mingw32-libgmp Subsystem: mingw32
Package: mingw32-libgmpxx Subsystem: mingw32
Package: mingw32-libgnat Subsystem: mingw32
Package: mingw32-libgomp Subsystem: mingw32
Package: mingw32-libiconv Subsystem: mingw32
Package: mingw32-libintl Subsystem: mingw32
Package: mingw32-libltdl Subsystem: mingw32
Package: mingw32-liblzma Subsystem: mingw32
Package: mingw32-libminizip Subsystem: mingw32
Package: mingw32-libmpc Subsystem: mingw32
Package: mingw32-libmpfr Subsystem: mingw32
Package: mingw32-libobjc Subsystem: mingw32
Package: mingw32-libpdcurses Subsystem: mingw32
Package: mingw32-libpopt Subsystem: mingw32
Package: mingw32-libpthread-old Subsystem: mingw32
Package: mingw32-libpthreadgc Subsystem: mingw32
Package: mingw32-libpthreadgce Subsystem: mingw32
Package: mingw32-libquadmath Subsystem: mingw32
Package: mingw32-libquserex Subsystem: mingw32
Package: mingw32-libssp Subsystem: mingw32
Package: mingw32-libstdc++ Subsystem: mingw32
Package: mingw32-libtool Subsystem: mingw32
Package: mingw32-libunistring Subsystem: mingw32
Package: mingw32-libz Subsystem: mingw32
Package: mingw32-lua Subsystem: mingw32
Package: mingw32-make Subsystem: mingw32
Package: mingw32-mgwport Subsystem: mingw32
Package: mingw32-mingw-get Subsystem: mingw32
Package: mingw32-mingw-utils Subsystem: mingw32
Package: mingw32-mingwrt Subsystem: mingw32
Package: mingw32-minizip Subsystem: mingw32
Package: mingw32-mpc Subsystem: mingw32
Package: mingw32-mpfr Subsystem: mingw32
Package: mingw32-pdcurses Subsystem: mingw32
Package: mingw32-pexports Subsystem: mingw32
Package: mingw32-pkginfo Subsystem: mingw32
Package: mingw32-popt Subsystem: mingw32
Package: mingw32-pthreads-w32 Subsystem: mingw32
Package: mingw32-w32api Subsystem: mingw32
Package: mingw32-xz Subsystem: mingw32
Package: mingw32-zlib Subsystem: mingw32
Package: msys-autoconf Subsystem: msys
Package: msys-autogen Subsystem: msys
Package: msys-automake Subsystem: msys
Package: msys-base Subsystem: msys
Package: msys-bash Subsystem: msys
Package: msys-binutils Subsystem: msys
Package: msys-bison Subsystem: msys
Package: msys-bsdcpio Subsystem: msys
Package: msys-bsdtar Subsystem: msys
Package: msys-bzip2 Subsystem: msys
Package: msys-console Subsystem: msys
Package: msys-core Subsystem: msys
Package: msys-coreutils Subsystem: msys
Package: msys-crypt Subsystem: msys
Package: msys-cvs Subsystem: msys
Package: msys-cygutils Subsystem: msys
Package: msys-dash Subsystem: msys
Package: msys-diffstat Subsystem: msys
Package: msys-diffutils Subsystem: msys
Package: msys-dos2unix Subsystem: msys
Package: msys-expat Subsystem: msys
Package: msys-file Subsystem: msys
Package: msys-findutils Subsystem: msys
Package: msys-flex Subsystem: msys
Package: msys-gawk Subsystem: msys
Package: msys-gcc Subsystem: msys
Package: msys-gdbm Subsystem: msys
Package: msys-gettext Subsystem: msys
Package: msys-gmp Subsystem: msys
Package: msys-grep Subsystem: msys
Package: msys-groff Subsystem: msys
Package: msys-guile Subsystem: msys
Package: msys-gzip Subsystem: msys
Package: msys-help2man Subsystem: msys
Package: msys-inetutils Subsystem: msys
Package: msys-less Subsystem: msys
Package: msys-libarchive Subsystem: msys
Package: msys-libasprintf Subsystem: msys
Package: msys-libbz2 Subsystem: msys
Package: msys-libcharset Subsystem: msys
Package: msys-libcrypt Subsystem: msys
Package: msys-libexpat Subsystem: msys
Package: msys-libgdbm Subsystem: msys
Package: msys-libgettextpo Subsystem: msys
Package: msys-libgmp Subsystem: msys
Package: msys-libguile Subsystem: msys
Package: msys-libiconv Subsystem: msys
Package: msys-libintl Subsystem: msys
Package: msys-libltdl Subsystem: msys
Package: msys-liblzma Subsystem: msys
Package: msys-libmagic Subsystem: msys
Package: msys-libminires Subsystem: msys
Package: msys-libminizip Subsystem: msys
Package: msys-libopenssl Subsystem: msys
Package: msys-libopts Subsystem: msys
Package: msys-libpopt Subsystem: msys
Package: msys-libregex Subsystem: msys
Package: msys-libtermcap Subsystem: msys
Package: msys-libtool Subsystem: msys
Package: msys-libxml2 Subsystem: msys
Package: msys-lndir Subsystem: msys
Package: msys-locate Subsystem: msys
Package: msys-lpr-enhanced Subsystem: msys
Package: msys-m4 Subsystem: msys
Package: msys-make Subsystem: msys
Package: msys-man Subsystem: msys
Package: msys-minires Subsystem: msys
Package: msys-minizip Subsystem: msys
Package: msys-mintty Subsystem: msys
Package: msys-mksh Subsystem: msys
Package: msys-mktemp Subsystem: msys
Package: msys-openssh Subsystem: msys
Package: msys-openssl Subsystem: msys
Package: msys-patch Subsystem: msys
Package: msys-perl Subsystem: msys
Package: msys-popt Subsystem: msys
Package: msys-rebase Subsystem: msys
Package: msys-regex Subsystem: msys
Package: msys-rsync Subsystem: msys
Package: msys-rxvt Subsystem: msys
Package: msys-sed Subsystem: msys
Package: msys-system-builder Subsystem: msys
Package: msys-tar Subsystem: msys
Package: msys-termcap Subsystem: msys
Package: msys-texinfo Subsystem: msys
Package: msys-tiny Subsystem: msys
Package: msys-unzip Subsystem: msys
Package: msys-vim Subsystem: msys
Package: msys-w32api Subsystem: msys
Package: msys-wget Subsystem: msys
Package: msys-xz Subsystem: msys
Package: msys-zip Subsystem: msys
Package: msys-zlib Subsystem: msys

anywhere@any-place ~/temp20120609
$

mintty導入後の設定微調整とコンパイラー確認

1. Compile
2. 環境設定

1.Compileの基本確認
Cで動作確認用のソースを書いて、コンパイルの基本動作確認をしてみた。


#include <stdio.h>

main()
{
   int number;

   printf("Enter an integer\n");
   scanf("%d",&number);

   printf("Integer entered by you is %d\n", number);

   return 0;
}

コンパイルの動作確認

2. 環境設定
UTF-8とSJISが混在して日本語表示がおかしくなるので、ユーザー環境変数を変更。

—————————-
MEMO on July/1
—————————-
~/.profile

# lsで日本語を表示するためのalias
alias ls='ls --color=auto --show-control-chars'
# gettext用
export OUTPUT_CHARSET=sjis

~/.inputrc

set meta-flag on
set output-meta on
set convert-meta off
set kanji-code sjis

~/.minttyrc
Locale=ja_JP
Charset=SJIS

/share/misc/man.conf

# manは標準ではsjisで出力できないためutf8で出力する
JNROFF /usr/bin/groff -DeucJP -Tutf8 -mandoc
JNEQN /usr/bin/eqn -Tutf8

# PAGERでsjisへ変換
PAGER nkf -s | /usr/bin/less -isrR

~/.vimrc

set enc=sjis

参考:
mintty
Windowsで最高のターミナルを構築する方法
List of terminal emulators


nuttcpでネットワークの状態を簡易的に調査・検証する事が出来ます。
—————————————————————-
nuttcp is a TCP/UDP network testing tool, much like iperf.
I think it’s the best such tool available, for its simplicity, ease of use, and feature set.

http://www.lcp.nrl.navy.mil/nuttcp/
対象ドメイン navy.mil (mil:IANAトップドメイン情報)
組織・国・地域 military 米軍事機関用


Phil Dykstra’s nuttcp quick start guide

今回の検証は、最新のSTABLEバージョンで行いましたが、
6.2.7以降では再送処理も取得出来るそうです。
—————————————————————-
TCP retransmit info (Linux only)
Starting in version 6.2.7, nuttcp includes retransmit info for Linux.
This is much more convenient that using tcpdump to determine if the path has lots of congestion.

サーバー側
http://lcp.nrl.navy.mil/nuttcp/stable/rpm/nuttcp-5.3.1-1.i386.rpm
検証ではLinuxにてサーバーを実行

[root@colinux ~]# wget http://www.lcp.nrl.navy.mil/nuttcp/stable/rpm/nuttcp-5.3.1-1.i386.rpm
--2012-06-03 07:53:20--  http://www.lcp.nrl.navy.mil/nuttcp/stable/rpm/nuttcp-5.3.1-1.i386.rpm
www.lcp.nrl.navy.mil をDNSに問いあわせています... 132.250.114.61
www.lcp.nrl.navy.mil|132.250.114.61|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 52369 (51K) [application/x-rpm]
`nuttcp-5.3.1-1.i386.rpm' に保存中
100%[==========================================================================>] 52,369      82.5K/s 時間 0.6
2012-06-03 07:53:21 (82.5 KB/s) - `nuttcp-5.3.1-1.i386.rpm' へ保存完了 [52369/52369]
[root@colinux ~]# ls -l


[root@colinux ~]# rpm -ivh nuttcp-5.3.1-1.i386.rpm
準備中...                   ########################################### [100%]
   1:nuttcp                 ########################################### [100%]
[root@colinux ~]#


[root@colinux ~]# nuttcp -S
[root@colinux ~]# ps -ef | grep nuttcp
root      2882     1  0 08:01 pts/0    00:00:00 nuttcp -S
root      2884  2837  1 08:01 pts/0    00:00:00 grep nuttcp
[root@colinux ~]#

クライアント側
http://lcp.nrl.navy.mil/nuttcp/stable/bin/nuttcp-5.3.1.win32.zip
検証ではWindowsにてクライアントを実行

Colinuxで検証したので、以下のPortへのアクセス許可を設定してあります。
port number to send to|listen at (default 5001)
port number for control connection (default 5000)

nuttcp client

Help内容(オプション)
—————————————————————-
Usage: nuttcp or nuttcp -h prints this usage info
Usage: nuttcp -V prints version info
Usage: nuttcp -xt [-m] host forward and reverse traceroute to/from server
Usage (transmitter): nuttcp [-t] [-options] host [3rd-party] [ out ]
-4 Use IPv4
-6 Use IPv6
-c## cos dscp value on data streams (t|T suffix for full TOS field)
-l## length of network write|read buf (default 1K|8K/udp, 64K/tcp)
-s use stdin|stdout for data input|output instead of pattern data
-n## number of source bufs written to network (default unlimited)
-w## transmitter|receiver window size in KB (or (m|M)B or (g|G)B)
-ws## server receive|transmit window size in KB (or (m|M)B or (g|G)B)
-wb braindead Solaris 2.8 (sets both xmit and rcv windows)
-p## port number to send to|listen at (default 5001)
-P## port number for control connection (default 5000)
-u use UDP instead of TCP
-m## use multicast with specified TTL instead of unicast (UDP)
-M## MSS for data connection (TCP)
-N## number of streams (starting at port number), implies -B
-R## transmit rate limit in Kbps (or (m|M)bps or (g|G)bps or (p)ps)
-T## transmit timeout in seconds (or (m|M)inutes or (h|H)ours)
-i## receiver interval reporting in seconds (or (m|M)inutes)
-Ixxx identifier for nuttcp output (max of 40 characters)
-F flip option to reverse direction of data connection open
-d set TCP SO_DEBUG option on data socket
-v[v] verbose [or very verbose] output
-b brief output (default)
-D xmit only: don’t buffer TCP writes (sets TCP_NODELAY sockopt)
-B recv only: only output full blocks of size from -l## (for TAR)
Usage (server): nuttcp -S[f][P] [-options]
note server mode excludes use of -s
‘f’ suboption forces server mode (useful with rsh/ssh)
‘P’ suboption makes 3rd party {in,out}bound control ports same
-4 Use IPv4 (default)
-6 Use IPv6
-1 oneshot server mode (implied with inetd/xinetd), implies -S
-P## port number for server connection (default 5000)
note don’t use with inetd/xinetd (use services file instead)
–no3rdparty don’t allow 3rd party capability
–nofork don’t fork server
Format options:
-fxmitstats also give transmitter stats (MB) with -i (UDP only)
-frunningtotal also give cumulative stats on interval reports
-f-drops don’t give packet drop info on brief output (UDP)
-f-percentloss don’t give %loss info on brief output (UDP)
-fparse generate key=value parsable output

Bufferサイズを変更してネットワーク診断

C:\Tools\tmp\nuttcp>nuttcp-5.3.1.exe -v -v -i1 192.168.11.10
nuttcp-t: v5.3.1: socket
nuttcp-t: buflen=65536, nstream=1, port=5001 tcp -> 192.168.11.10
nuttcp-t: time limit = 10.00 seconds
nuttcp-t: connect to 192.168.11.10 with mss=0
nuttcp-t: send window size = 8192, receive window size = 8192
nuttcp-r: v5.3.1: socket
nuttcp-r: buflen=65536, nstream=1, port=5001 tcp
nuttcp-r: interval reporting every 1.00 second
nuttcp-r: accept from 192.168.11.2
nuttcp-r: send window size = 8192, receive window size = 8192
    1.0000 MB /   1.00 sec =    8.3886 Mbps
    1.3125 MB /   1.00 sec =   11.0100 Mbps
    0.8125 MB /   1.00 sec =    6.8157 Mbps
    1.1250 MB /   1.00 sec =    9.4372 Mbps
    2.1250 MB /   1.00 sec =   17.8258 Mbps
    1.3750 MB /   1.00 sec =   11.5343 Mbps
    0.7500 MB /   1.00 sec =    6.2915 Mbps
    1.2500 MB /   1.00 sec =   10.4858 Mbps
    0.8750 MB /   1.00 sec =    7.3400 Mbps
    1.1250 MB /   1.00 sec =    9.4372 Mbps
nuttcp-t: 11.7500 MB in 10.00 real seconds = 1203.20 KB/sec = 9.8566 Mbps
nuttcp-t: 188 I/O calls, msec/call = 54.47, calls/sec = 18.80
nuttcp-t: 0.0user 0.0sys 0:10real 0% 0i+0d 1806maxrss 20+0pf 0+0csw

nuttcp-r: 11.7500 MB in 10.12 real seconds = 1188.35 KB/sec = 9.7349 Mbps
nuttcp-r: 2711 I/O calls, msec/call = 3.82, calls/sec = 267.75
nuttcp-r: 0.0user 0.0sys 0:10real 0% 0i+0d 1690maxrss 0+0pf 0+0csw

---------------------------------------------------------------
http://www.wcisd.hpc.mil/nuttcp/Nuttcp-HOWTO.html
  -i1       to watch tests run (1 second intervals)
  -w8m      to set socket buffers ("window") to 8 MBytes
  -u        for UDP tests
  -R10m     for a 10 Mbps UDP test (or TCP rate limit)
  -l512     to set UDP packet length (or TCP write size)
---------------------------------------------------------------


C:\Tools\tmp\nuttcp>nuttcp-5.3.1.exe -w8m -v -v -i1 192.168.11.10
nuttcp-t: v5.3.1: socket
nuttcp-t: buflen=65536, nstream=1, port=5001 tcp -> 192.168.11.10
nuttcp-t: time limit = 10.00 seconds
nuttcp-t: connect to 192.168.11.10 with mss=0
nuttcp-t: send window size = 8388608, receive window size = 8192
nuttcp-r: v5.3.1: socket
nuttcp-r: buflen=65536, nstream=1, port=5001 tcp
nuttcp-r: interval reporting every 1.00 second
nuttcp-r: accept from 192.168.11.2
nuttcp-r: send window size = 8192, receive window size = 8388608
   14.9651 MB /   1.00 sec =  125.5366 Mbps
   17.3642 MB /   1.00 sec =  145.6613 Mbps
   37.0160 MB /   1.42 sec =  218.3634 Mbps
   21.7070 MB /   0.59 sec =  306.5508 Mbps
   23.5170 MB /   1.00 sec =  197.2752 Mbps
nuttcp-t: 119.5625 MB in 10.00 real seconds = 12243.20 KB/sec = 100.2963 Mbps
nuttcp-t: 1913 I/O calls, msec/call = 5.35, calls/sec = 191.30
nuttcp-t: 0.0user 0.1sys 0:10real 2% 0i+0d 1806maxrss 20+0pf 0+0csw

nuttcp-r: 119.5625 MB in 5.88 real seconds = 20839.49 KB/sec = 170.7171 Mbps
nuttcp-r: 17961 I/O calls, msec/call = 0.33, calls/sec = 3057.19
nuttcp-r: 0.3user 1.3sys 0:05real 27% 0i+0d 1690maxrss 0+0pf 0+0csw

C:\Tools\tmp\nuttcp>


Beta版を利用してのretransmissionの確認
動作確認なので、同じホストで検証しています。

[root@colinux ~]# wget http://www.lcp.nrl.navy.mil/nuttcp/beta/nuttcp-7.1.6.c
--2012-06-03 09:09:54--  http://www.lcp.nrl.navy.mil/nuttcp/beta/nuttcp-7.1.6.c
www.lcp.nrl.navy.mil をDNSに問いあわせています... 132.250.114.61
www.lcp.nrl.navy.mil|132.250.114.61|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 251878 (246K) 
`nuttcp-7.1.6.c' に保存中

100%[=========================================================================================>] 251,878      113K/s 時間 2.2s

2012-06-03 09:09:57 (113 KB/s) - `nuttcp-7.1.6.c' へ保存完了 [251878/251878]

[root@colinux ~]# 

[root@colinux nuttcp]# cc -O3 -o nuttcp nuttcp-7.1.6.c
[root@colinux nuttcp]# 
[root@colinux nuttcp]# ls -l
合計 392
-rwxr-xr-x 1 root root 138267 2012-06-03 09:11 nuttcp
-rw-r--r-- 1 root root 251878 2012-03-01 06:29 nuttcp-7.1.6.c
[root@colinux nuttcp]# ./nuttcp -S
[root@colinux nuttcp]# ./nuttcp -i1 localhost
   82.7500 MB /   1.00 sec =  694.1462 Mbps     0 retrans
   93.9375 MB /   1.00 sec =  787.9930 Mbps     0 retrans
   94.5625 MB /   1.00 sec =  793.2358 Mbps     0 retrans
   94.8125 MB /   1.00 sec =  795.3330 Mbps     0 retrans
   94.3125 MB /   1.00 sec =  791.1387 Mbps     0 retrans
   94.5625 MB /   1.00 sec =  793.2358 Mbps     0 retrans
   94.4375 MB /   1.00 sec =  792.1873 Mbps     0 retrans
   93.9375 MB /   1.00 sec =  787.9930 Mbps     0 retrans
   93.7500 MB /   1.00 sec =  786.4202 Mbps     0 retrans
   90.7500 MB /   1.00 sec =  761.2548 Mbps     0 retrans

  928.9531 MB /  10.01 sec =  778.4721 Mbps 82 %TX 18 %RX 0 retrans
[root@colinux nuttcp]#

nuttcp compile

nuttcp retrunsmit

nuttcp retrunsmit

retrunsmit

参考:
http://wcisd.hpc.mil/nuttcp/Nuttcp-HOWTO.html
http://fasterdata.es.net/performance-testing/network-troubleshooting-tools/nuttcp/
http://sourceforge.jp/magazine/08/08/22/0159234
http://hylom.net/2011/05/18/nuttcp_thruput_benchmarking/


Etherrealは昔からネットワーク解析ツールとして、
Linuxで長期に利用されてきたツールでしたが、
理由があって名前をWiresharkにして存続しているようです。

Wireshark

ネットワークを介して通信するパケットを収集し、
その内容や送信先などを解析することができます。

Wiresharkプロジェクト
http://sourceforge.jp/projects/wireshark/
Download Page
http://sourceforge.jp/projects/wireshark/releases/ (1.4.13)
http://www.wireshark.org/download.html (1.6.8)

1) ダウンロード

Wireshark Install_1

2) SET UP

Wireshark Install_2

3) INSTALL OPTION

Wireshark Install_3

4) INSTALL PATH

Wireshark Install_4

5) INTALL WINPCAP

Wireshark Install_5

6) INSTALL WINPCAP License Info

Wireshark Install_6

7) WINPCAP BOOT OPTION

Wireshark Install_7

8) WINPCAP END OF INSTALL

Wireshark Install_8

9) WIRESHARK INSTALLATION FINISHED

Wireshark Install_9

10) WIRESHARK起動

Wireshark Install_9

11) PACKET CAPTURE TEST
ACCESS TO YAHOO

Wireshark Install_10

11) PACKET CAPTURE RESULT

Wireshark Install_11

12) PACKET CAPTURE RESULT AND FILTER

Wireshark Install_12

その他、フィルター項目に関しては色々と選択出来ます。
また、特定のアクセスフローのみを追う事も可能です。

参考:
ネットワークのトラブル解析などに利用できるネットワークアナライザー「Wireshark」の使い方
RPCAPによるリモートパケットモニター