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] [ |(receiver): nuttcp -r [-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/


HiveはHiveQLというSQL風の言語でHadoop上のデータを操作できます。
Hadoop上のデータベースというとHBaseが有名ですが、
HiveはHDFSに対してよりユーザーフレンドリなインターフェイスを提供するもので、
HBaseとは根本的に存在意義が異なります。

———————————————————————————
http://hive.apache.org/ 抜粋
———————————————————————————
Hive is a data warehouse system for Hadoop that facilitates easy data summarization,
ad-hoc queries, and the analysis of large datasets stored in Hadoop compatible file systems.
Hive provides a mechanism to project structure onto this data and query the data using a
SQL-like language called HiveQL. At the same time this language also allows traditional
map/reduce programmers to plug in their custom mappers and reducers when it is
inconvenient or inefficient to express this logic in HiveQL.
———————————————————————————-

Hadoop+Hive検証環境を構築してみる
SQLライクにHadoop Hiveを使い倒す!
Hadoop Hiveと MySQLの利用例(29-FEB-2012)

[root@colinux ~]# vi /home/hiveuser/.bashrc

hive user

hive user

【/home/hiveuser/.bashrcに追記】
export PATH=$PATH:/usr/java/latest/bin
export JAVA_HOME=/usr/java/latest
export HADOOP_HOME=/usr/local/hadoop

Hive Download Site

http://www.apache.org/dyn/closer.cgi/hive/

Hive Install

[root@colinux ~]# su – hadoop
[hadoop@colinux ~]$ pwd
/home/hadoop
[hiveuser@colinux ~]$ wget http://ftp.kddilabs.jp/infosystems/apache/hive/stable/hive-0.8.1.tar.gz
–2012-05-20 14:50:13– http://ftp.kddilabs.jp/infosystems/apache/hive/stable/hive-0.8.1.tar.gz
ftp.kddilabs.jp をDNSに問いあわせています… 192.26.91.193, 2001:200:601:10:206:5bff:fef0:466c
ftp.kddilabs.jp|192.26.91.193|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 31325840 (30M) [application/x-gzip]
`hive-0.8.1.tar.gz’ に保存中

100%[================================================================================>] 31,325,840 2.90M/s 時間 11s

2012-05-20 14:50:24 (2.81 MB/s) – `hive-0.8.1.tar.gz’ へ保存完了 [31325840/31325840]
[hadoop@colinux ~]$

hive install

hive install

[hadoop@colinux ~]$ tar xvfz hive-0.8.1.tar.gz

[root@colinux ~]# mv /home/hadoop/hive-0.8.1 /usr/local/
[root@colinux ~]# cd /usr/local/
[root@colinux local]# ln -s hive-0.8.1 hive

バージョンアップを考えて、展開後にシンボリックリンク作成します。
[root@colinux local]# ls -l
合計 88
drwxr-xr-x 2 root root 4096 2011-12-10 10:12 bin
drwxr-xr-x 2 root root 4096 2011-12-10 10:12 etc
drwxr-xr-x 2 root root 4096 2007-04-17 21:46 games
lrwxrwxrwx 1 root root 23 2012-05-12 12:17 hadoop -> /usr/local/hadoop-1.0.1
drwxr-xr-x 15 hadoop hadoop 4096 2012-05-12 13:06 hadoop-1.0.1
lrwxrwxrwx 1 root root 10 2012-05-20 18:37 hive -> hive-0.8.1
drwxr-xr-x 9 root root 4096 2012-05-20 18:36 hive-0.8.1

[root@colinux local]# chown -R hadoop:hadoop hive/

Hadoopを起動してjpsで起動確認します。

[hadoop@colinux ~]$ /usr/local/hadoop/bin/hadoop namenode -format
12/05/26 09:21:10 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = colinux/127.0.0.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 1.0.1
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1243785; compiled by ‘hortonfo’ on Tue Feb 14 08:15:38 UTC 2012
************************************************************/
Re-format filesystem in /tmp/hadoop-hadoop/dfs/name ? (Y or N) Y
12/05/26 09:21:16 INFO util.GSet: VM type = 32-bit
12/05/26 09:21:16 INFO util.GSet: 2% max memory = 19.33375 MB
12/05/26 09:21:16 INFO util.GSet: capacity = 2^22 = 4194304 entries
12/05/26 09:21:16 INFO util.GSet: recommended=4194304, actual=4194304
12/05/26 09:21:17 INFO namenode.FSNamesystem: fsOwner=hadoop
12/05/26 09:21:17 INFO namenode.FSNamesystem: supergroup=supergroup
12/05/26 09:21:17 INFO namenode.FSNamesystem: isPermissionEnabled=true
12/05/26 09:21:17 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
12/05/26 09:21:17 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
12/05/26 09:21:17 INFO namenode.NameNode: Caching file names occuring more than 10 times
12/05/26 09:21:18 INFO common.Storage: Image file of size 112 saved in 0 seconds.
12/05/26 09:21:18 INFO common.Storage: Storage directory /tmp/hadoop-hadoop/dfs/name has been successfully formatted.
12/05/26 09:21:18 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at colinux/127.0.0.1
************************************************************/
[hadoop@colinux ~]$ /usr/local/hadoop/bin/start-all.sh
starting namenode, logging to /usr/local/hadoop-1.0.1/libexec/../logs/hadoop-hadoop-namenode-colinux.out
localhost: starting datanode, logging to /usr/local/hadoop-1.0.1/libexec/../logs/hadoop-hadoop-datanode-colinux.out
localhost: starting secondarynamenode, logging to /usr/local/hadoop-1.0.1/libexec/../logs/hadoop-hadoop-secondarynamenode-colinux.out
starting jobtracker, logging to /usr/local/hadoop-1.0.1/libexec/../logs/hadoop-hadoop-jobtracker-colinux.out
localhost: starting tasktracker, logging to /usr/local/hadoop-1.0.1/libexec/../logs/hadoop-hadoop-tasktracker-colinux.out
[hadoop@colinux ~]$

[hadoop@colinux ~]$ jps
3438 Jps
3270 JobTracker
3402 TaskTracker
3058 DataNode
3185 SecondaryNameNode
[hadoop@colinux ~]$

テスト用のデータファイルをダウンロードしてHadoopとHiveの動作検証。

[hadoop@colinux ~]$ mkdir ~/localfiles
[hadoop@colinux ~]$ cd localfiles/
[hadoop@colinux localfiles]$ wget http://www.atmarkit.co.jp/fdb/single/s_hive/dl/data.tar.gz
–2012-05-26 08:55:18– http://www.atmarkit.co.jp/fdb/single/s_hive/dl/data.tar.gz
www.atmarkit.co.jp をDNSに問いあわせています… 202.218.219.147
www.atmarkit.co.jp|202.218.219.147|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 2071417 (2.0M) [application/x-tar]
`data.tar.gz’ に保存中

100%[=========================================================================================>] 2,071,417 705K/s 時間 2.9s

2012-05-26 08:55:21 (705 KB/s) – `data.tar.gz’ へ保存完了 [2071417/2071417]

[hadoop@colinux localfiles]$

テスト用のファイルを展開して、Hiveコマンドを実行。
[hadoop@colinux ~]$ /usr/local/hive/bin/hive

hive> CREATE TABLE pref (id int, pref STRING)
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’;

hive create table

hive create table

hive> desc pref;
OK
id int
pref string
Time taken: 0.61 seconds
hive>

hive> LOAD DATA LOCAL INPATH ‘/home/hadoop/localfiles/pref.csv’ OVERWRITE INTO TABLE pref;

load data

load data

SELECTしてデータの確認。

Hadoop job information for Stage

hive> select A.pref from pref A;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there’s no reduce operator
Starting Job = job_201205260921_0003, Tracking URL = http://localhost:50030/jobdetails.jsp?jobid=job_201205260921_0003
Kill Command = /usr/local/hadoop-1.0.1/libexec/../bin/hadoop job -Dmapred.job.tracker=localhost:9001 -kill job_201205260921_0003
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
2012-05-26 09:45:36,731 Stage-1 map = 0%, reduce = 0%
2012-05-26 09:45:45,791 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2012-05-26 09:45:46,811 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2012-05-26 09:45:47,831 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2012-05-26 09:45:48,831 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2012-05-26 09:45:49,851 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2012-05-26 09:45:50,881 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2012-05-26 09:45:51,891 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2012-05-26 09:45:52,911 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2012-05-26 09:45:53,931 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2012-05-26 09:45:55,511 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 1.5 sec
MapReduce Total cumulative CPU time: 1 seconds 500 msec
Ended Job = job_201205260921_0003
MapReduce Jobs Launched:
Job 0: Map: 1 Accumulative CPU: 1.5 sec HDFS Read: 820 HDFS Write: 479 SUCESS
Total MapReduce CPU Time Spent: 1 seconds 500 msec
OK
北海道
青森県
岩手県
宮城県
秋田県

注:先日作成したhadoopユーザーを利用するので,hiveアカウントは利用しませんでした。

select

select


コンパイルしたファイルをCacheして、phpの動作を速くする
APC(Alternative PHP Cache)。
IISでコンパイル済みASP、ASPX等をCacheするのと同じような設定という認識。

http://php.net/manual/ja/book.apc.php

[root@ip-xxxxxxxxx ec2-user]# yum install php-pear php-devel http-devel
Loaded plugins: fastestmirror, priorities, security, update-motd
Loading mirror speeds from cached hostfile
* amzn-main: packages.ap-northeast-1.amazonaws.com
* amzn-updates: packages.ap-northeast-1.amazonaws.com
Setting up Install Process
No package http-devel available.
Resolving Dependencies
–> Running transaction check
—> Package php-devel.x86_64 0:5.3.10-1.18.amzn1 will be installed
–> Processing Dependency: autoconf for package: php-devel-5.3.10-1.18.amzn1.x86_64
–> Processing Dependency: automake for package: php-devel-5.3.10-1.18.amzn1.x86_64
—> Package php-pear.noarch 1:1.9.4-4.8.amzn1 will be installed
–> Running transaction check
—> Package autoconf.noarch 0:2.63-5.1.7.amzn1 will be installed
—> Package automake.noarch 0:1.11.1-2.9.amzn1 will be installed
–> Finished Dependency Resolution

その他、gcc,make,PHP dev,apache dev,pcre,apxs関係など
不足していたパッケージインストール。

[root@ip-xxxxxxxxx ec2-user]# pecl install APC
downloading APC-3.1.9.tgz …
Starting to download APC-3.1.9.tgz (155,540 bytes)
……………………………done: 155,540 bytes
54 source files, building
running: phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
config.m4:180: warning: AC_CACHE_VAL(PHP_APC_GCC_ATOMICS, …): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from…
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from…
config.m4:180: the top level
config.m4:180: warning: AC_CACHE_VAL(PHP_APC_GCC_ATOMICS, …): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from…
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from…
config.m4:180: the top level
Enable internal debugging in APC [no] :
Enable per request file info about files used from the APC cache [no] :
Enable spin locks (EXPERIMENTAL) [no] :
Enable memory protection (EXPERIMENTAL) [no] :
Enable pthread mutexes (default) [yes] :
Enable pthread read/write locks (EXPERIMENTAL) [no] :
building in /var/tmp/pear-build-rootBND1Ww/APC-3.1.9

…… 省略

Build process completed successfully
Installing ‘/usr/lib64/php/modules/apc.so’
Installing ‘/usr/include/php/ext/apc/apc_serializer.h’
install ok: channel://pecl.php.net/APC-3.1.9
configuration option “php_ini” is not set to php.ini location
You should add “extension=apc.so” to php.ini

[root@ip-xxxxxxxxx ec2-user]# echo “extension=apc.so” > /etc/php.d/apc.ini
[root@ip-xxxxxxxxx ec2-user]# pecl list
Installed packages, channel pecl.php.net:
=========================================
Package Version State
APC 3.1.9 stable
[root@ip-xxxxxxxxx ec2-user]#

[root@ip-xxxxxxxxx ec2-user]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@ip-xxxxxxxxx ec2-user]#

APCの状況確認用ページ 「httpでアクセス出来るところにコピー」
[root@ip-xxxxxxxxx ec2-user]# ls -l /usr/share/pear/apc.php
-rw-r–r– 1 root root 46148 Apr 7 09:17 /usr/share/pear/apc.php
[root@ip-xxxxxxxxx ec2-user]#

APC

APC

[ec2-user@ip-xxxxxxxxx ec2-user]$ php -i | grep apc
Additional .ini files parsed => /etc/php.d/apc.ini,
apc
apc.cache_by_default => On => On
apc.canonicalize => On => On
apc.coredump_unmap => Off => Off
apc.enable_cli => Off => Off
apc.enabled => On => On
apc.file_md5 => Off => Off
apc.file_update_protection => 2 => 2
apc.filters => no value => no value
apc.gc_ttl => 3600 => 3600
apc.include_once_override => Off => Off
apc.lazy_classes => Off => Off
apc.lazy_functions => Off => Off
apc.max_file_size => 1M => 1M
apc.mmap_file_mask => no value => no value
apc.num_files_hint => 1000 => 1000
apc.preload_path => no value => no value
apc.report_autofilter => Off => Off
apc.rfc1867 => Off => Off
apc.rfc1867_freq => 0 => 0
apc.rfc1867_name => APC_UPLOAD_PROGRESS => APC_UPLOAD_PROGRESS
apc.rfc1867_prefix => upload_ => upload_
apc.rfc1867_ttl => 3600 => 3600
apc.serializer => default => default
apc.shm_segments => 1 => 1
apc.shm_size => 32M => 32M
apc.slam_defense => On => On
apc.stat => On => On
apc.stat_ctime => Off => Off
apc.ttl => 0 => 0
apc.use_request_time => On => On
apc.user_entries_hint => 4096 => 4096
apc.user_ttl => 0 => 0
apc.write_lock => On => On
[ec2-user@ip-xxxxxxxxx ec2-user]$


wgetのバージョンにより、cssの扱い方が変わると聞いたので確認してみた。

http://ja.wikipedia.org/wiki/GNU_Wget
Wget 1.12 (2009年9月リリース)ウェブ上のCSSからのURL解析機能と国際化資源識別子(IRI)の取り扱いが追加された。

http://wget.addictivecode.org/FrequentlyAskedQuestions?action=show&redirect=Faq

5.2. Can Wget download links found in CSS?
Thanks to code supplied by Ted Mielczarek, Wget can now parse embedded CSS stylesheet data
and text/css files to find additional links for recursion, as of version 1.12.

■比較
——————————————————————————–

[root@colinux tools]# wget --version
GNU Wget 1.10.2 (Red Hat modified)
[root@colinux 1.10.2]# wget -p -H http://kakaku.com/

終了しました --10:09:00--
ダウンロード完了: 519,822 バイト、76 ファイル
[root@colinux 1.10.2]#

[root@colinux wget-1.13]# wget --version
GNU Wget 1.13 built on linux-gnu.
[root@colinux 1.13]# wget -p -H http://kakaku.com/

FINISHED --2011-12-10 10:15:15--
Total wall clock time: 4.6s
Downloaded: 121 files, 601K in 0.3s (2.35 MB/s)

[root@colinux test]# wget -p -H -e robots=off http://kakaku.com/

FINISHED --2011-12-10 11:09:12--
Total wall clock time: 6.1s
Downloaded: 136 files, 727K in 0.3s (2.54 MB/s)
[root@colinux test]#

——————————————————————————–


CSS1.13ではCSSに書かれている画像全てをダウンロードしてきている。
htmlを表示する為に、必要な画像以外もダウンロードしてきている?

[root@colinux wget_compare]# ls -l 1.10.2/ 1.13/
1.10.2/:
合計 24
drwxr-xr-x 3 root root 4096 2011-12-10 10:23 image.akiba.kakaku.com
drwxr-xr-x 5 root root 4096 2011-12-10 10:23 img.kakaku.com
drwxr-xr-x 3 root root 4096 2011-12-10 10:23 img2.kakaku.k-img.com
drwxr-xr-x 4 root root 4096 2011-12-10 10:23 kakaku.com
drwxr-xr-x 2 root root 4096 2011-12-10 10:23 notice.kakaku.com
drwxr-xr-x 2 root root 4096 2011-12-10 10:23 www.googleadservices.com

1.13/:
合計 24
drwxr-xr-x 3 root root 4096 2011-12-10 10:28 image.akiba.kakaku.com
drwxr-xr-x 5 root root 4096 2011-12-10 10:28 img.kakaku.com
drwxr-xr-x 3 root root 4096 2011-12-10 10:28 img2.kakaku.k-img.com
drwxr-xr-x 4 root root 4096 2011-12-10 10:28 kakaku.com
drwxr-xr-x 2 root root 4096 2011-12-10 10:28 notice.kakaku.com
drwxr-xr-x 2 root root 4096 2011-12-10 10:28 www.googleadservices.com
[root@colinux wget_compare]#

[root@colinux wget_compare]# cat wget_1.10.log | egrep -i http:// | awk ‘{print $2}’ > wget_1.10_http.log
[root@colinux wget_compare]# cat wget_1.13.log | egrep -i http:// | awk ‘{print $3}’ > wget_1.13_http.log

[root@colinux wget_compare]# diff wget_1.10_http.log wget_1.13_http.log
77a78,122
> http://img.kakaku.com/images/home/home_header_bg.gif
> http://img.kakaku.com/images/icon_login.gif
> http://img.kakaku.com/images/icon_guide.gif
> http://img.kakaku.com/images/icon_register.gif
> http://img.kakaku.com/images/icon_mypage.gif
> http://img.kakaku.com/images/icon_history.gif
> http://img.kakaku.com/images/h1_btm.gif
> http://img.kakaku.com/images/h1bg.gif
> http://img.kakaku.com/images/itemview/item/bm_tweetn-ja.png
> http://img.kakaku.com/images/itemview/item/icon_guide.gif
> http://img.kakaku.com/images/dot_999999.gif
> http://img.kakaku.com/images/itemview/item/arrow_pagetop.gif
> http://img.kakaku.com/images/article/pickup/template/link_bk.jpg
> http://img.kakaku.com/images/home/arrow_next01.gif
> http://img.kakaku.com/images/itemview/item/tab_bar_default.gif
> http://img.kakaku.com/images/balloonhelp/balloon_tp.png
> http://img.kakaku.com/images/balloonhelp/balloon_tp2.png
> http://img.kakaku.com/images/balloonhelp/balloon_tp3.png
> http://img.kakaku.com/images/balloonhelp/balloon_md.png
> http://img.kakaku.com/images/balloonhelp/balloon_bt.png
> http://img.kakaku.com/images/balloonhelp/balloon_bt2.png
> http://img.kakaku.com/images/balloonhelp/balloon_bt3.png
> http://img.kakaku.com/images/category/btn_search_sub.gif
> http://img.kakaku.com/images/itemlist/btn_search.gif
> http://img.kakaku.com/images/home/icon_all.png
> http://img.kakaku.com/images/home/box_bg_in.png
> http://img.kakaku.com/images/home/box_bg.png
> http://img.kakaku.com/images/home/h2_top_all.png
> http://img.kakaku.com/images/home/dotline01.gif
> http://img.kakaku.com/images/home/bg_search.png
> http://img.kakaku.com/images/home/bg_category.png
> http://img.kakaku.com/images/home/home_icon_category.png
> http://img.kakaku.com/images/home/home_icon_group.png
> http://img.kakaku.com/images/home/icon_all.gif
> http://img.kakaku.com/images/home/icon_slider.png
> http://img.kakaku.com/images/home/h2_sub_all.png
> http://img.kakaku.com/images/home/icon_reviewall.gif
> http://img.kakaku.com/images/home/icon_mag.png
> http://img.kakaku.com/images/home/icon_akiba_all.png
> http://img.kakaku.com/images/home/trendnews_category.png
> http://img.kakaku.com/images/home/icon_tv.png
> http://img.kakaku.com/images/home/menu_boxall_h2.png
> http://img.kakaku.com/images/home/dotline02.gif
> http://img.kakaku.com/images/home/attention_arrow.gif
> http://img.kakaku.com/images/home/menu_group_h2.gif
[root@colinux wget_compare]#

[root@colinux css]# cat global_new.css | grep home_header_bg.gif
background: url(http://img.kakaku.com/images/home/home_header_bg.gif) repeat-x left bottom;
[root@colinux css]#

[root@colinux css]# cat home_common.css | grep attention_arrow.gif
background:url(http://img.kakaku.com/images/home/attention_arrow.gif) no-repeat left top;
[root@colinux css]#

wgetのバージョンによって挙動がかわっている事は確認出来た。

■インストール
——————————————————————————–

[root@colinux wget-1.13]# wget http://ftp.gnu.org/gnu/wget/wget-1.13.tar.gz
[root@colinux wget-1.13]# tar zxvf wget-1.13.tar.gz
[root@colinux wget-1.13]# ./configure --with-ssl=openssl
[root@colinux wget-1.13]# make
[root@colinux wget-1.13]# make install
[root@colinux wget-1.13]# whereis wget
wget: /usr/local/bin/wget
[root@colinux wget-1.13]# ln -s /usr/local/bin/wget /usr/bin/wget
[root@colinux wget-1.13]# wget --version
GNU Wget 1.13 built on linux-gnu.

■古いwgetをアンインストール
———————————————————————————

[root@colinux wget-1.13]# yum list installed | grep wget
wget.i386 1.10.2-15.fc7 installed
[root@colinux wget-1.13]# yum remove wget.i386
Setting up Remove Process
fedora 100% |=========================| 2.1 kB 00:00
updates 100% |=========================| 2.3 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package wget.i386 0:1.10.2-15.fc7 set to be erased
--> Finished Dependency Resolution

Transaction Test Succeeded
Running Transaction
Erasing : wget ######################### [1/1]

Removed: wget.i386 0:1.10.2-15.fc7
Complete!
[root@colinux wget-1.13]# yum list installed | grep wget
[root@colinux wget-1.13]#

■その他必要だったパツケージの事前インストール
———————————————————————————

[root@colinux wget-1.13]# yum search openssl | grep dev
openssl-devel.i386 : Files for development of applications which will use OpenSSL
openssl-devel.i386 : Files for development of applications which will use OpenSSL
xmlsec1-openssl-devel.i386 : OpenSSL crypto plugin for XML Security Library
tcltls-devel.i386 : Header files for the OpenSSL extension for Tcl
[root@colinux wget-1.13]# yum install openssl-devel.i386 xmlsec1-openssl-devel.i386 tcltls-devel.i386
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package tcltls-devel.i386 0:1.5.0-11.fc6 set to be updated
--> Processing Dependency: tcltls = 1.5.0-11.fc6 for package: tcltls-devel
---> Package xmlsec1-openssl-devel.i386 0:1.2.9-8.1 set to be updated
--> Processing Dependency: libxslt-devel >= 1.1.0 for package: xmlsec1-openssl-devel
--> Processing Dependency: libxml2-devel >= 2.6.0 for package: xmlsec1-openssl-devel
--> Processing Dependency: xmlsec1 = 1.2.9 for package: xmlsec1-openssl-devel
--> Processing Dependency: xmlsec1-devel = 1.2.9 for package: xmlsec1-openssl-devel
--> Processing Dependency: libxmlsec1-openssl.so.1 for package: xmlsec1-openssl-devel
--> Processing Dependency: xmlsec1-openssl = 1.2.9 for package: xmlsec1-openssl-devel
---> Package openssl-devel.i386 0:0.9.8b-15.fc7 set to be updated
--> Processing Dependency: zlib-devel for package: openssl-devel
--> Processing Dependency: krb5-devel for package: openssl-devel
--> Running transaction check
---> Package libxslt-devel.i386 0:1.1.24-1.fc7 set to be updated
--> Processing Dependency: libgcrypt-devel for package: libxslt-devel
---> Package libxml2-devel.i386 0:2.6.31-1.fc7 set to be updated
---> Package xmlsec1.i386 0:1.2.9-8.1 set to be updated
---> Package tcltls.i386 0:1.5.0-11.fc6 set to be updated
---> Package krb5-devel.i386 0:1.6.1-9.fc7 set to be updated
--> Processing Dependency: e2fsprogs-devel for package: krb5-devel
---> Package xmlsec1-devel.i386 0:1.2.9-8.1 set to be updated
---> Package zlib-devel.i386 0:1.2.3-10.fc7 set to be updated
---> Package xmlsec1-openssl.i386 0:1.2.9-8.1 set to be updated
--> Running transaction check
---> Package e2fsprogs-devel.i386 0:1.40.2-3.fc7 set to be updated
---> Package libgcrypt-devel.i386 0:1.2.4-1 set to be updated
--> Processing Dependency: libgpg-error-devel for package: libgcrypt-devel
--> Running transaction check
---> Package libgpg-error-devel.i386 0:1.4-2 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
tcltls-devel i386 1.5.0-11.fc6 fedora 4.3 k
xmlsec1-openssl-devel i386 1.2.9-8.1 fedora 87 k
Installing for dependencies:
e2fsprogs-devel i386 1.40.2-3.fc7 updates 627 k
krb5-devel i386 1.6.1-9.fc7 updates 1.1 M
libgcrypt-devel i386 1.2.4-1 fedora 274 k
libgpg-error-devel i386 1.4-2 fedora 17 k
libxml2-devel i386 2.6.31-1.fc7 updates 2.1 M
libxslt-devel i386 1.1.24-1.fc7 updates 324 k
openssl-devel i386 0.9.8b-15.fc7 updates 1.8 M
tcltls i386 1.5.0-11.fc6 fedora 28 k
xmlsec1 i386 1.2.9-8.1 fedora 176 k
xmlsec1-devel i386 1.2.9-8.1 fedora 667 k
xmlsec1-openssl i386 1.2.9-8.1 fedora 71 k
zlib-devel i386 1.2.3-10.fc7 fedora 81 k

Transaction Summary
=============================================================================
Install 14 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 7.4 M
Is this ok [y/N]:

その他参考になるURL
Compare cURL Features with Other Download Tools

http://curl.haxx.se/docs/comparison-table.html


最近のMYSQLのリリースの方法が変わったのか。。。
5.4になるとJOINの処理が早くなると言われていたのでGAリリースを待ち望んでいたが、
MySQL 5.4のサイトへ行くと
5.4.3-betaで止まっている。にもかかわらず、MySQL 5.5がリリースされている。
しかもマイルストーンリリース。

【以下MYSQL5.5のサイトから抜粋】

■This brings me back to where I started the blog entry: the SELECT VERSION() statement,
which doesn’t say “-alpha” nor “-beta” but “-m2″ (where “m2″ stands for “second milestone”).

Getting you faster access to new features is a key idea behind the new milestones.
Milestones don’t map one-to-one on version numbers, so hence the first 5.5 release can be
the second milestone (with the first milestone being in the already community tested
5.4 tree,which won’t get any further updates
).

■Is the MySQL 5.5 quality good enough to merit your testing?
Yes, we think it is. Although MySQL Server 5.5-M2 isn’t production ready, we think it’s
suitable for testing and feedback by you, because we have significantly increased our
internal testing in order to avoid accepting unstable code into the milestone.
A sign of this is that we do have other new code written, i.e. functionality brewing but not
accepted into the milestone because it doesn’t fit our quality requirements at this point
in time.

STEP1) まずは何はともあれダウンロードしてみる

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.0-m2-linux-i686-icc-glibc23.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/

STEP2) 展開してMYSQLを自分の運用パスに移動
①展開
[root@colinux src]# tar zxvf mysql-5.5.0-m2-linux-i686-icc-glibc23.tar.gz
②移動
[root@colinux src]# mv mysql-5.5.0-m2-linux-i686-icc-glibc23 /usr/local/

STEP3) MYSQLフォルダーのパーミッション設定

[root@colinux local]# chown -R mysql:mysql mysql-5.5.0-m2-linux-i686-icc-glibc23/
[root@colinux local]# chmod -R 755 mysql-5.5.0-m2-linux-i686-icc-glibc23/

mysql_55m

STEP4) 既存のMYSQLのアップグレードを開始(5.1.41-log —> 5.5.0-m2)

①既存のバージョン確認
5141-log

②データコピー前に既存のMYSQLサービスを停止
[root@colinux local]# /etc/init.d/mysql.server stop
Shutting down MySQL. SUCCESS!
[root@colinux local]#

③ データフォルダーをMYSQL5.5用にコピー
[root@colinux local]# cp -rp mysql/data mysql-5.5.0-m2-linux-i686-icc-glibc23/
[root@colinux local]#

④ シンボリックリンクを古いバージョンから新しいバージョンへ切り替え
[root@colinux local]#rm mysql
[root@colinux local]# ln -s mysql-5.5.0-m2-linux-i686-icc-glibc23/ mysql

symbol

※ バージョンに応じてオプションファイル(my.cnf)の変更もすべきだと思いますが、後で調整するのでここでは割愛してます。

⑤ MYSQLのサービスを再開
[root@colinux local]# /etc/init.d/mysql.server start
Starting MySQL…. SUCCESS!
[root@colinux local]#

⑥ MYSQLのシステムテーブルをアップグレード
[root@colinux bin]# pwd
/usr/local/mysql/bin
[root@colinux bin]#./mysql_upgrade -u root -p

mysql55_system

Running ‘mysql_fix_privilege_tables’…OK

STEP5) MYSQLのアップグレード状態を確認

mysql> select @@version;

version55

mysql> show tables from information_schema;
information_schema_55m2

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


select TABLE_SCHEMA,TABLE_NAME,ENGINE,CREATE_TIME
from information_schema.tables
where TABLE_SCHEMA = 'information_schema'
Order by CREATE_TIME desc;

information_schema_55_created


MYSQL5.1.41がリリースされていたので、アップグレード
C.1.2. Changes in MySQL 5.1.41 (05 November 2009)

■InnoDB Plugin has been upgraded to version 1.0.5. This version is considered of
 Release Candidate (RC) quality.
■The InnoDB buffer pool is divided into two sublists: A new sublist containing blocks
 that are heavily used by queries, and an old sublist containing less-used blocks and from
 which candidates for eviction are taken.
 innodb_old_blocks_pct / innodb_old_blocks_time
■Important Change: Security Fix
Bug#32167, CVE-2008-2079 / Bug#47320, CVE-2009-4028 / Bug#46922
Partitioning: Bug#44059
Replication: Bug#48297 / Bug#48216 / Bug#47678 / Bug#47323 / Bug#47287/ Bug#46640
Bug#42829 / Bug#34582 / Bug#48370 / Bug#48295 / Bug#48293
その他多数……………………….

1) 現在のバージョン確認
original_20091221

http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.41-linux-i686-icc-glibc23.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/

2) 最新版のダウンロード
[root@colinux src]# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.41-linux-i686-icc-glibc23.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
–00:06:43– http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.41-linux-i686-icc-glibc23.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/

wget_5141

3) ダウンロードしたtarを解凍
[root@colinux src]# tar zxvf mysql-5.1.41-linux-i686-icc-glibc23.tar.gz
tar_zxvf

4) 展開したtarを自分が希望するパスへ移動 (これはオプション)
mv_mysql5141

5) 新しく展開したフォルダーのパーミッションの変更
[root@colinux local]# chown -R mysql:mysql mysql-5.1.41-linux-i686-icc-glibc23/
[root@colinux local]# chmod -R 755 mysql-5.1.41-linux-i686-icc-glibc23/

6) 現在稼動している、MYSQLサービスを停止します。
mysql_5141_migration

7) シンボリックリンクの削除
[root@colinux local]# pwd
[root@colinux local]# rm mysql

8) アップグレード前のまで利用していた、MYSQLのdataフォルダーを新しいバージョンのMYSQLにコピー

[root@colinux local]# cp -rp mysql-5.1.40-linux-i686-icc-glibc23/data mysql-5.1.41-linux-i686-icc-glibc23/

9) シンボリックリンクの作成とサービスの再開
[root@colinux local]# ln -s mysql-5.1.41-linux-i686-icc-glibc23/ mysql

mysql5141_symbolic

[root@colinux local]# /etc/init.d/mysql.server start
Starting MySQL…. SUCCESS!
[root@colinux local]#

10) システムデータベースのアップグレード(information_schema / mysql )

[root@colinux local]# /usr/local/mysql/bin/mysql_upgrade -u root -p

mysql_5141_sqlupgrade

11) バージョンアップの確認

※ mysql_upgrade_infoファイルの確認
[root@colinux data]# cat /usr/local/mysql/data/mysql_upgrade_info
upgrade_info

※ エラーログの確認
mysql_5141_log_confirmation

※ information_schemaとmysqlスキーマの確認
select TABLE_SCHEMA,TABLE_NAME,ENGINE,CREATE_TIME,UPDATE_TIME
from information_schema.tables where
TABLE_SCHEMA = 'information_schema' or TABLE_SCHEMA = 'mysql'
and CREATE_TIME is not NULL and UPDATE_TIME is not null
order by CREATE_TIME desc;

system_tables

※ バージョン確認 (mysql> select @@version;)
version_5141


Prepared statementはステートメントを一度定義して、それを何回も違う引数で実行するものです。
これはセキュリティを増しなおかつ効率のよい方法で、アドホックなクエリのストリングに置き換わるものです。

SELECT * FROM Country WHERE code = ?

「?」はいわゆる場所とりです。上のクエリを実行するときはこの場所に値がいります。
「?」は必須ではありません。

Prepared statementはSQL のロジックとデータを分離することでセキュリティを増加します。
ロジックとデータを分離することで、SQLインジェクション攻撃を回避することができます。
通常のクエリを扱っている場合、ユーザから受け取ったデータを処理するには注意が必要です。
これはシングル・クオート、ダブル・クオート、バックスラッシュなどの文字をエスケープする関数を
使用することに関係します。こういったことはpreparedstatementを使用する際には不必要です。
データを分離することでMySQLは自動的にこういった文字を考慮しており特別な関数を使用して
こういう文字をエスケープする必要がありません。

prepared statementでの性能向上はいくつかの異なった機能によります。
まず最初に、クエリを一度しかパースしなくてよいことです。
最初にステートメントの用意をした際、MySQLはステートメントをパースしてシンタクスをチックして、
クエリの実行の用意をします。同じクエリを何回も実行するのであれば、そのオーバヘッドは2度目からありません。
あらかじめ、パースしてあることで例えばなんどもINSERTステートメントを使うような場合、スピードが増加します。

2つ目の性能向上は新しいバイナリーのプロトコルによります。
今までのプロトコルはネットワークを介して転送する前に、全てをストリングに変換していました。
クライアントはデータをストリングに変換し(大抵の場合もとのデータより大きい)、ネットワーク
(か他の方法で)サーバに転送します。サーバはストリングをもとの正しいデータタイプに変換します。
バイナリー・プロトコルであればこのオーバーヘッドがありません。全てのタイプはそのままの形で(バイナリー形式)
で転送されます。そのためCPUの使用も削減され、ネットワークの使用も押さえることができます。

Prepared statementは上の全ての場合に有益です。しかし、アプリケーションの全てに適用すべきでもないし、
できません。最初にこれは DML (INSERT, REPLACE, UPDATE, とDELETE), CREATE TABLE, とSELECT
クエリに限られています。将来の版では他のクエリもサポートされ、prepared statementのクエリのAPIは
もっと一般的なものになります。

時として、prepared statementは普通のクエリよりも遅いときがあります。
理由はサーバーまで2往復するため、一度だけ実行されるだけのクエリであれば実行の速度が落ちます。
そのような場合はprepared statementで得られるセキュリティが性能を落としてまでも必要か考慮する
必要があります。

以上抜粋

mysql> PREPARE s1 FROM 'SELECT 1';
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> PREPARE s2 FROM 'SELECT 2';
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> execute s1;
+—+
| 1 |
+—+
| 1 |
+—+
1 row in set (0.00 sec)

mysql> execute s2;
+—+
| 2 |
+—+
| 2 |
+—+
1 row in set (0.00 sec)

※以下のキャプチャーでは、最後のPREPAREステートメントにsyntaxエラーが含まれており
s1として設定したPREPAREステートメントが無効になってしまっている状態。
prepared_statement

mysql> PREPARE s1 FROM 'SELECT 1';
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> PREPARE s2 FROM 'SELECT 2';
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> PREPARE s1 FROM 'SELECT (1+2)';
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> execute s1;
+——-+
| (1+2) |
+——-+
| 3 |
+——-+
1 row in set (0.00 sec)

mysql> execute s2;
+—+
| 2 |
+—+
| 2 |
+—+
1 row in set (0.00 sec)

mysql>

※以下のキャプチャーでは、最初のPREPAREステートメントが同じ名前で定義されているので
上書きされてs1というステートメントが最後に実行されたステートメントになっている。

prepared_statements

以下のように別名で定義すれば上書きされないので問題無い。
mysql> PREPARE P10 FROM 'SELECT (10+10)';
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> execute P10;
+———+
| (10+10) |
+———+
| 20 |
+———+
1 row in set (0.00 sec)

mysql>

PREPAREDステートメントを利用すれば、ネットワークトラフィックを減らしたり、
同じクエリーを何回も実行するなどの時間を削減する事ができます。

PREPAREDステートメントは、セッション固有のものになります。
他のユーザーのセッションや自分の他のセッションで同じ名前のステートメントを作成しても影響を受けません。
prepared_statement_session

———————————————————————
PREPARED ステートメントを利用した運用 (例:その1)
———————————————————————
ここでは、大陸と人口に変数を入れられるようにしてます。

① PREPARE STATEMENTの作成

PREPARE PS_COUNTRY_POP FROM 'SELECT Name, Population
FROM Country
WHERE Continent = ? AND Population > ?';

② 変数の値をSETしてます。 /* SELECT @C :=’Asia’ ,@P := 1000000000; でもOK */
SET @c = 'Asia', @p = 1000000000;

※SELECTで変数を設定した場合(例)
alternative

③ PREPAREステートメントの実行
EXECUTE PS_COUNTRY_POP USING @c, @p;

prepared_statement_exec

———————————————————————
PREPARED ステートメントを利用した運用 (例:その2)
———————————————————————
ここでは、大陸を変数にして国と人口を表示するためのPREPAREステートメントを利用。

① PREPARE STATEMENTの作成

PREPARE PS_Population FROM 'SELECT Name, Population
FROM Country WHERE Continent = ?';

② 変数の値をSETしてます。 /* SELECT @C :=’South America’ ; でもOK */
SET @c = 'South America';

③ PREPAREステートメントの実行 
EXECUTE PS_Population USING @c;

prepare_statement

※ 追加メモ:セッションを切って再接続してもPREPAREステートメントは利用出来ません。
execute_prepare_statement_session

※明示的にPREPAREステートメントをDEALLOCATEする方法。(セッションを切ればなくなりますが….. リソース開放の為)
① deallocate prepare PS_Population;
② drop prepare PS_Population;
drop_prepare_statement

「おまけ」
SELECT,INSERT,UPDATE,REPLACE,DELETE,SET,DO,
Many SHOW statements,CREATE TABLE statements
など殆どのDDL、DMLが設定可能

mysql> PREPARE s1 FROM 'SHOW FULL PROCESSLIST';
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> execute s1;

show_full_process

—————————————
MYSQL プリペアド・ステートメント
6.9. MySQL クエリキャッシュ

MySQL サーバ には Query Cache 機能があります。 クエリキャッシュの使用時、このキャッシュには、
SELECT クエリのテキストと、クライアントに送られたその結果が格納されます。
後でまったく同じクエリを受け取ると、サーバはそのクエリの解析と実行をもう一度繰り返す代わりに、
クエリキャッシュから結果を取り出します。
注意:クエリキャッシュから古いデータが返されることはありません。データが変更されると、
クエリキャッシュの関連するエントリがすべてフラッシュされます。

    その他利用にあたり参考になりそうなサイト

mysql の server side prepared statement って速いの?
MySQL で prepared statement を使うと query cache が効かないCommentsAdd Star
PHPのPDO::mysql。prepared statementはquery cacheを使っている!


ls コマンドで表示結果を見やすくする

[root@colinux ~]# ls -l

ls_color

[root@colinux ~]# cp /etc/DIR_COLORS ~/.dir_colors

[root@colinux ~]# cat .dir_colors
# Configuration file for the color ls utility
# This file goes in the /etc directory, and must be world readable.
# You can copy this file to .dir_colors in your $HOME directory to override
# the system defaults.

# COLOR needs one of these arguments: ‘tty’ colorizes output to ttys, but not
# pipes. ‘all’ adds color characters to all output. ‘none’ shuts colorization
# off.
COLOR tty

# Extra command line options for ls go here.
# Basically these ones are:
# -F = show ‘/’ for dirs, ‘*’ for executables, etc.
# -T 0 = don’t trust tab spacing when formatting ls output.
OPTIONS -F -T 0

[root@colinux ~]# eval `dircolors ~/.dir_colors -b`

ls_color_after