8月 5th, 2010

そらと八重?

Posted in Travel by admin
 行先を検? している段障 から、0歳児(7ヵ月)と? 緒に旅行にいぜ のは難しいだろうかと考えていた。また、親は楽しいだろうが子供は全然楽しぜ ない、我慢しろなどの意見もみた。しかし、転職前最後のチャンスということで自分の独断で? 縄、しかも八重山諸島への旅行を決めた。シーズン前なのぜ 4泊5日レンタカー? きで? 亜 7万円天、赤ちゃんはもちろん無料。この基本料金に加え、西表島と地 浜島にぞれぞれ一泊するという計画に落ち着いた(勝手に決めたのだが)。結論として、我が子はいつも通り何やら楽しそうだった。
 やはり一番? 配だったのは長? 場となる飛行機。東京~沖縄ぜ 2時間ちょっと、沖縄~石垣島ぜ 40分程度だ。しかし、申し込みの段障 で赤ちゃん用のバシネット(座席前に圏 り付けられる簡易ベッド)をリクエストしていたので、思っていたよりも全然苦ではなかった。ベッドにいる時以? に抱いていたのぜ 90%嫁だけど。ちなみにバシネットのリクエストはウェブの申し込みフォームの備考欄に「バシネット希望」と書いただけだったのだが、行き帰り共にバシネット装着可能な座席にしてぜ れた。旅行代理店、ANAありがとう。

埼? ~石垣島
 飛行機の出発時刻は平日ぜ 11時だったので、通勤ラッシュの電蜻 に赤ちゃんと? る゜ けにはいかず、羽田空港蜿 郊の霧 車場を借りた。4泊5日で? 1万円天、もったいない。この霧 車場、空港まで送? してぜ るのはいいが、帰りは空港から駐車場へ送? する人をワゴン蜻 いっぱいになるまで? つので? 局30分位出発しなかった。駐車場に着ぜ と、サービスのつもりなのか車のエンジンを入れて冷房全開で? っていた、もったいない。
 空路では前述したように大きな問題もなぜ に石垣島まで到着した。石垣空港に着いてからレンタカーを圏 け圏 り、まずはホテル? 近の「なかよし食堂」で昼ごはんを食べる。懐かしい感じの普通の地元食堂、既ぜ 15時をま゜ っていたので座敷席が空いていて良かった。赤ちゃんを横にし易いから。ベタにゴーヤチャンプルー? 食と八重山そばを食べる。噂通り? 味しい。その? 、ホテルにチェックイン。ビジネスホテルを少し大きぜ した感じの新しいところで、まぁまぁ快適。ただ少し煙草臭い、禁煙してもうすぐ2年だが? 感になってきているようだ。宿? するのはこの日と最終日前日だけなのであまり利用しないことになる。外に出て? 華? を散歩した後、夜は蜿 所の座敷席がある居酒屋「源」で晩酌。アダボ サラダについていたトマトやご飯などを潰して離乳食も食べさせてあげた。

バシネット

バシネット

なかよし食堂

なかよし食堂
西表島? ? ?

西表島? ? ?

石垣島~西表島・由圸 ?
 離島桟橋ぜ 3年前にはなかったターミナル霧 が整備されていてとても綺? になっていた。時刻表なども電光掲示板になっており見易い。10時30分に石垣島から西表島へ出発。出発前から風が強かったので、カプリ島のトラウマが思い出される。(地中海旅行記圏 照? 45分間、案外揺れたがカプリ島に? べれぜ 10分ぜ 1ぐらいの波だった。西表島北部の? ? 港に着ぜ とどんよりとした大きな雲が覆ってきていた。西表でもレンタカーを予約していたので蜿 えに来てもらい乗車。出発して間もなぜ 、パラパラ雨、更に西へ向かうに? って怒涛の豪雨となった。船浮とイダの? への探検は断念。この島、雨が降るとやることがないんじゃ?と疑心暗鬼になっていたところだが、たまたま東部の釜 生なんとかセンターに向かったのが良かったようで、由圸 島に着ぜ ころには雨があがり、青空が見えてきていた。
 由圸 島は西表島に隣接する小島で、周? 2km程しかない。島までは水牛車に? って連れて? ってぜ れる。我が子はいつものように水牛車のおじさんに愛想を振りまき、たいそう気に入られていた。由圸 島の? 物園・? 辺を一通り散歩し、昼ごはんを食べた。ここの? 当もかなり? 味しい。帰りは再び水牛車。帰りのおじさんは? 線で札 (なだそうそう)を披露してぜ れた。我が子もボ リボ リだった。上陸? 、雨の? がった西表島をドライブしながら北部の「ティンヌカーラ」という宿に到着した。ジャグジーと庭のついている3部? しかないペンション風の宿。この宿からは「星砂の? 」が近ぜ 、散歩することにした。ベンチに座っていると草むらから猫が駐車場に落ちてきた。イリオモテヤマネコか?と思い、写真をたぜ さん撮ったが判? は出来ない。夕食は蜿 ぜ の? 酒屋「いるむてぃあ」で。眺めがよぜ 全席座敷の良い店だった。幸手出身の? 員さんがいた。帰り道、辺りは? 灯が殆どないので? になると机 天の星空が浮かびあがっている。1分ほど? 上げれば大きな? れ星を見ることが出来る。ここはとてもいいところだ。


由圸 島の水牛

由圸 島の水牛
由圸 島? 当

由圸 島? 当
偶然似ていた二亜

偶然似ていた二亜
由圸 島の風?

由圸 島の風?
  由圸 島の草

由圸 島の草
  由圸 島の水牛池

由圸 島の水牛池
西表島の風?

西表島の風?
  大? 謝ロードパー゜

大? 謝ロードパー゜
  猫注?

猫注?
マングローブ

マングローブ
  ピナイサーラの?

ピナイサーラの?
  星砂の?

星砂の?
ウナリ? の? ?

ウナリ? の? ?
  イリオモテヤマネ゜

イリオモテヤマネ゜
  いるむてぃあ

いるむてぃあ

西表島? 小浜?
 翌朝は宿で朝食を頂いた。全部? 味しかった。自然な? 材だったので我が子にもあげられるものが多かった。チェックアウト後、島北部から東部の大? 港へ向かう。昨日よりも晴天で? 持ちがいい。1? 1便しかない西表島? 小浜島間の出癜 12時30分に間に合うようにゆっぜ りと進む。車は朮 どいないが、釜 生動物を轢いてしまう恐れがあるので制限速度ぜ 40キロほどになっているのだ。大きなタカが道路にとまっていたこともあった。東側の沿岸からは? 日の宿泊地である小浜島も見ることが出来る。実際、2kmほどしか離れていないので泳いでも行けそうな感覚があるが、ヨナラ海道という大きな机 があり流れが速いようだ。ヨナラ海道はマンタの通り道なのでダイバーには人気らしい。大? 港に着ぜ ころには昼時でより日差しが強ぜ なっていた。
 小浜島へは船ぜ 20分ほどで到着した。直眷 でいけぜ 5分ほどで着きそうだが、少し遠回りをしている。この島ぜ NHKドラマ「ちゅらさん」の舞台になっているらしいが、観たことがないのでさっぱり゜ からない。港? 近の「Bob’s Cafe」というところで地 浜バーガーとタコライスを食べた。小浜バーガーはかなり? 味しかった、都? なら1000円以? は圏 りそうな? 観だけぜ 500円と? い。その? 、とりあえず島内をバス観光してみた。ちゅらさんの家、西端の細? (ぜ ばざき)などをま゜ る。細? からは、とても大きな西表島が良く見える。この島ではかつて竹富島を訪れた時のように、ひとり自転車で探検&? の眥 社巡りをしたかったが、丁度? 年祭という島の人達だけの祭りがあり、集落の? 部は? ち入り禁止となっていた。港から見えたビーチに? つ白いと鳥居がかなり気になったのだが。小浜島ではこの旅唯? のリゾート施設「ニラカナイ」に宿泊した。コテージタイプのリゾートで、プールやプライベートビーチ、ゴルフコースなどがある。夕食はホテル内のレストランではなぜ 、予め座敷席を予約していた居酒屋「サヌファ」というところ。フロントまでの送? してぜ れるので便利だ。店は北部の潰れたリゾート施設のひとつを改? して開いているようだ。何を頼んでも? 味しかった。

西表島大? ?

西表島大? ?
タコライ゜

タコライ゜
ボブズカフ゜

ボブズカフ゜
小浜島の? 宜

小浜島の? 宜
  小浜島の風?

小浜島の風?
  プーボ

プーボ
コテー゜

コテー゜
  サヌフ゜

サヌフ゜
  ご機嫌

ご機嫌

小浜島? 石垣島
 翌朝、プライベートビーチに? ってみた。施設が大きいのでフロントから送? を利用する。青い海に初めて浸かり、プールで浮かぶ我が子、きっと地 しは楽しんだに違いない。ホテルのレストランで昼飯後、小浜港に送? してもらい、再び石垣島に戻ってきた。やりたい事は尽きたが、せっかぜ 無料でレンタカーが使えるということで島を一周してみることにした。圏 時計回りに、東の? 圏 展望台、伸助の? 、最北端の平久保? 、伸助の? 、西の圷 平湾。その間約2時間、プールの疲れからか我が子はずっと眠っていた。最後に無料券で石垣島鍾乳洞に? き、懐かしの山羊料理屋「一休」へ。山? は切れており、牛汁を食べる。相? ゜ らず客が全ぜ いないが、ここの味やはり嫌いになれない、ワイルドだ。食後、近ぜ のボ ンナ岳の? 望台で? 陽を見た。はっきりと海岸眷 に溶ける夕陽を始めてみた。3年前に訪れた竹? 島、今回の西表島、小浜島も見える。ここが旅の眷 括のようだった。
 翌? 13時の便で帰路につぜ 。この圭 ぜ 7ヵ月の時に八重山の島々を訪れたことを全く覚えていないのだろう。だけどその証拠はたぜ さんある。西表で手に入れた数種類の種、サキシマスオウとマングローブのヒルギ、マザーリーフはちゃんと育ってぜ れるだろうか。たっぷりと水と光を? えて大切に育てたいと思う。


ビーチ

ビーチ
ビーチ

ビーチ
ビーチ

ビーチ
アグー?

アグー?
  白い鳥?

白い鳥?
  ? 圏 展望台からの風?

? 圏 展望台からの風?
平? 保?

平? 保?
  川平湾

川平湾
  牛汁定?

牛汁定?
ボ ンナ岳の? ?

ボ ンナ岳の? ?
  ボ ンナ岳の? ?

ボ ンナ岳の? ?
  バシネットで眠る

バシネットで眠る
7月 16th, 2010

配列の初期化パフォーマン゜ (x86_64 memset緜 )

Posted in Linux by admin

 以前、Solaris(Sparc)環? 上ぜ “Sun Studio C Compiler”でコンパイルしたプログラムによる配列の初期化パフォーマン゜ の? 証のところぜ memsetの話題を挙げましたが、64bit Linux(x86_64)環? においても、あるバージョンぜ glibcで同関数パフォーマンスに影響を圏 ぼす可能性が゜ かったので調査してみました。前回同様、1024バイト配列ぜ memset初期化を1,000,000回ループさるプログラムの処理時間で? 較を行いました。また、様々なバイトの配列でも試してみました。以? がその? 果です。

■glibc-2.5-24.x86_64
1024バイト配列:		平均  0.048秒
1024*10バイト配列:		平均  0.436秒
1024*100バイト配列:		平均  6.331秒
1024*117バイト配列:		平均  7.385秒
1024*118バイト配列:		平均 36.644秒
1024*1000バイト配列:	平均304.943秒
■glibc-2.5-42.x86_64
1024バイト配列:		平均 0.029秒
1024*10バイト配列:		平均 0.216秒
1024*100バイト配列:		平均 5.187秒
1024*117バイト配列:		平均 6.074秒
1024*118バイト配列:		平均 6.130秒
1024*1000バイト配列:	平均51.958秒

 上記の? 果のように、glibc-2.5.24のパフォーマンスが2.5.42よりも劣化するということ。更に配列のサイ゜ 1024*118を超えた時点で、パフォーマンスが著しぜ 劣化するという点が挙げられます。おそらぜ 2.5.32以降で対応した修正パッケージとパッチが以? のものだと思゜ れます。memsetのコードは朮 どアセンブラなので、修正内容はあまり理解出来ません。コメントにぜ PIC(Position Independent Code)の文字が見られ、もしかしたらgccオプション「-fPIC」が使用される共有ライブラリでは更に性能が異なるのかもしれません。

http://rhn.redhat.com/errata/RHBA-2009-0080.html
an optimized memset() routine for AMD64 and Intel 64 systems has been added.
glibc-rh437394.patch

2008-08-14  Ulrich Drepper  <drepper@redhat.com>
	* sysdeps/x86_64/memset.S: Reduce size of tables for PIC.
2008-02-26  Harsha Jagasia  <harsha.jagasia@amd.com>
	* sysdeps/x86_64/memset.S: Rewrite non-SSE code path as tuned for AMD
	Barcelona machine.  Make default fall through branch of
	__x86_64_preferred_memory_instruction check as the integer code path.
2007-10-15  Ulrich Drepper  <drepper@redhat.com>
	* sysdeps/x86_64/memset.S: Use __x86_64_shared_cache_size.
	Always define bzero.
	Remove non-glibc code.
7月 13th, 2010

OSS Message Pedia

Posted in Linux by admin

 OSSのメッセージを集めたOSS Message Pedia(http://ossmpedia.org)というサイトがありました。これぜ OSS(Open Source Software)が出力するメッセージのオンライン? 典で、システムで表示されているエラーメッセージや警告メッセージを検索して、その? 味と対処方? などの情報を引き出すことが出来るようになっています。例えば、以? のようぜ dmesgが出力されている場合、検索? 果からある程度の情報が引き出せます。

# dmesg | grep War
bonding: Warning: either miimon or arp_interval and arp_ip_target module parameters must be specified, \
otherwise bonding will not detect link failures! see bonding.txt for details.
bonding: bond0: Warning: failed to get speed and duplex from eth0, assumed to be 100Mb/sec and Full.
bonding: bond0: Warning: failed to get speed and duplex from eth1, assumed to be 100Mb/sec and Full.

メッセー゜ 1行目の? 索? 果
http://ossmpedia.org/messages/linux/2.6.9-34.EL/50981.ja

メッセー゜ 2,3行目の? 索? 果
http://ossmpedia.org/messages/linux/2.6.9-34.EL/50896.ja

 1行目のメッセージは、Bondingのリンク監? パラメータ未設定の警告。ARP監? のパラメータ? arp_ip_target, arp_interval)は適用していますが、MIIリンク監? のパラメータ? miimon, updelay)は? けていない状態でした。どちらにしてもこぜ Warningは出力されるようです。

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
ARP Polling Interval (ms): 3000
ARP IP target/s (n.n.n.n form): 192.168.100.1

Slave Interface: eth0
MII Status: up
Link Failure Count: 1
Permanent HW addr: xx:xx:xx:xx:xx:xx

Slave Interface: eth1
MII Status: up
Link Failure Count: 1
Permanent HW addr: xx:xx:xx:xx:xx:xx

 2,3行目のメッセージは、システム起動時のネットワーク起動段障 で、通信速度? speed)ぜ duplex通信方? (duplex)の値を圏 得できないため、通信速度を100Mbps、通信方? をFullに「仮? 」したというメッセージであり、実際に「変更」した゜ けではないようです。まず、Bondingドライバのモードが「1:active-backup」であれば問題はなさそうです。

# ethtool eth0 | egrep 'Speed|Duplex'
        Speed: 1000Mb/s
        Duplex: Full

# ethtool eth1 | egrep 'Speed|Duplex'
Settings for eth1:
        Speed: 1000Mb/s
        Duplex: Full
6月 30th, 2010

バイトオーダー? 朏 64bit移? メボ

Posted in Linux by admin

圏 考:Linuxアプリケーションぜ 64ビット・システムへの移植
http://www.ibm.com/developerworks/jp/linux/library/l-port64/

 上記URLにも掲載されていますが、アプリケーションを64bit移? する際の注? 点がいぜ つかあります。このうち、ネットワークプログラミングに頻出するバイトオーダーの? 朏 に関してメモを残します。簡単に? うと、ビッグエンディアン方? のネットワークバイトオーダーをLinuxのリトルエンディアン方? のバイトオーダーに? 朏 する際に使用する関? “ntohl”, “htonl”は、64bit Linux環? では正しく変朏 されないという事象の? 書です。以? 、サンプルプログラムと? 行結果を残します。

§ x86 64bit

# uname -m
x86_64
# cat test.c
#include <stdio .h>
#include <byteswap .h>

int main(){

	printf("int: %d\n", sizeof(int));
	printf("long: %d\n", sizeof(long));
	printf("int*: %d\n\n", sizeof(int*));

	int i = 0x12345678;
	long l = 0x0123456789abcdef;
	long m = 0x0123456789abcdef;
	char* c = (char *)&i;
	char* d = (char *)&l;
	char* e = (char *)&m;

	if (*(char *)&i == 0x12){
		printf ("Big endian\n\n");
	} else if(*(char *)&i == 0x78){
		printf ("Little endian\n\n");
	}

	printf("[1]int org:\t%X : %X : %X : %X\n" , c[0] , c[1] , c[2] , c[3]);
	i = htonl( i );
	printf("[2]int htonl:\t%X : %X : %X : %X\n\n" , c[0] , c[1] , c[2] , c[3]);

	printf("[3]long org:\t%X : %X : %X : %X : %X : %X : %X : %X\n" , \
		d[0] , d[1] , d[2] , d[3], d[4], d[5], d[6], d[7]);
	l = bswap_64( l );
	printf("[4]long bswap_64:\t%X : %X : %X : %X : %X : %X : %X : %X\n\n" , \
		d[0] , d[1] , d[2] , d[3], d[4], d[5], d[6], d[7]);

	printf("[5]long org:\t%X : %X : %X : %X : %X : %X : %X : %X\n" , \
		e[0] , e[1] , e[2] , e[3], e[4], e[5], e[6], e[7]);
	m = htonl( m );
	printf("[6]long htonl:\t%X : %X : %X : %X : %X : %X : %X : %lX\n" , \
		e[0] , e[1] , e[2] , e[3], e[4], e[5], e[6], e[7]);

	return 0;
}
# gcc test.c && ./a.out
int: 4
long: 8
int*: 8

Little endian

[1]int org:	78 : 56 : 34 : 12
[2]int htonl:	12 : 34 : 56 : 78

[3]long org:		FFFFFFEF : FFFFFFCD : FFFFFFAB : FFFFFF89 : 67 : 45 : 23 : 1
[4]long bswap_64:	1 : 23 : 45 : 67 : FFFFFF89 : FFFFFFAB : FFFFFFCD : FFFFFFEF

[5]long org:	FFFFFFEF : FFFFFFCD : FFFFFFAB : FFFFFF89 : 67 : 45 : 23 : 1
[6]long htonl:	FFFFFF89 : FFFFFFAB : FFFFFFCD : FFFFFFEF : FFFFFFFF : FFFFFFFF : FFFFFFFF : FFFFFFFF

 [5][6]で示した結果のように、64bit環? においぜ “htonl”関数では正しぜ バイトオーダーの? 朏 がされていないのが゜ かります。”htonl”、”ntohl”は、4バイト整数の? 朏 に使用され、同様に、”htons”、”ntohs”は、2バイト整数に使用されますが、64bit環? ぜ 8バイトデータサイズとなるlong型やポインターには使用出来ないからです。[3][4]のように正しく変朏 する為には、Linux上でぜ “bswap_64″マクボ (/usr/include/bits/byteswap.h)を使用します。以? のように、データサイズが4バイトを超えない32bit環? では問題なぜ 動作します。

§ i686 32bit

# uname -m
i686
# cat test.c
#include <stdio .h>
#include <byteswap .h>

int main(){

	printf("int: %d\n", sizeof(int));
	printf("long: %d\n", sizeof(long));
	printf("int*: %d\n\n", sizeof(int*));

	int i = 0x12345678;
	long l = 0x12345678;
	long m = 0x12345678;
	char* c = (char *)&i;
	char* d = (char *)&l;
	char* e = (char *)&m;

	if (*(char *)&i == 0x12){
		printf ("Big endian\n\n");
	} else if(*(char *)&i == 0x78){
		printf ("Little endian\n\n");
	}

	printf("[1]int org:\t%X : %X : %X : %X\n" , c[0] , c[1] , c[2] , c[3]);
	i = htonl( i );
	printf("[2]int htonl:\t%X : %X : %X : %X\n\n" , c[0] , c[1] , c[2] , c[3]);

	printf("[3]long org:\t%X : %X : %X : %X\n" , d[0] , d[1] , d[2] , d[3]);
	l = bswap_32( l );
	printf("[4]long bswap_32:\t%X : %X : %X : %X\n\n" , d[0] , d[1] , d[2] , d[3]);

	printf("[5]long org:\t%X : %X : %X : %X\n" , e[0] , e[1] , e[2] , e[3]);
	m = htonl( m );
	printf("[6]long htonl:\t%X : %X : %X : %X\n" , e[0] , e[1] , e[2] , e[3]);

	return 0;
}
# gcc test.c && ./a.out
int: 4
long: 4
int*: 4

Little endian

[1]int org:	78 : 56 : 34 : 12
[2]int htonl:	12 : 34 : 56 : 78

[3]long org:		78 : 56 : 34 : 12
[4]long bswap_32:	12 : 34 : 56 : 78

[5]long org:	78 : 56 : 34 : 12
[6]long htonl:	12 : 34 : 56 : 78
5月 6th, 2010

TomcatNativeの有効怜

Posted in Tomcat by admin

 Tomcatにぜ TomcatNativeというライブラリが付属していますが、デフォルト設? では有効になっていません。TomcatNativeとは、Tomcat(JVM)からJNI(JavaNativeInterface)経由ぜ Apacheぜ ApachePortableRuntime(APR)を利用出来るようにするライブラリです。APRはもともとクロスプラットフォームぜ Apacheの関数群ですが、JVMよりもOSカーネルに蜿 い空間で動作するので、パフォーマンスの向上が期待出来るという゜ けです。APRにはファイル入出力、共有メモリ、ロック、ソケット等の? 能を含んでいます。以? のような朧 成となります。

javaプロセ゜ (Tomcat)
↓ JNI
libtcnative-1.so(TomcatNative)
↓
libapr-1.so(APR)

 TomcatNativeのソースは、Tomcatアーカイブぜ binディレクトリ配下にあるtomcat-native.tar.gzファイルの中にあります。このアーカイブにはネイティブぜ Javaの両方のコードが含まれています。展開、ネイティブパートのコンパイル、Tomcatへの設定圏 映手順の? は以下のようになります。

# cd /usr/local/tomcat/bin
# tar zxf tomcat-native.tar.gz
# cd tomcat-native-1.1.16-src/jni/native
# ./configure --with-apr=/usr --with-java-home=/usr/jdk --prefix=/usr/local/tomcat
# make
# make install
# ldd /usr/local/tomcat/lib/libtcnative-1.so
        libssl.so.6 => /lib64/libssl.so.6 (0x00002aaaaacdd000)
        libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002aaaaaf26000)
        libapr-1.so.0 => /usr/lib64/libapr-1.so.0 (0x00002aaaab26e000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002aaaab496000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002aaaab6b0000)
        libc.so.6 => /lib64/libc.so.6 (0x00002aaaab8b4000)
        libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002aaaabc05000)
        libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002aaaabe33000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002aaaac0c5000)
        libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002aaaac2c8000)
        libz.so.1 => /usr/lib64/libz.so.1 (0x00002aaaac4ed000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00002aaaac701000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002aaaac905000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
        libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002aaaacb39000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002aaaacd41000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00002aaaacf44000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00002aaaad159000)
        libsepol.so.1 => /lib64/libsepol.so.1 (0x00002aaaad372000)

# vi /usr/local/tomcat/bin/setenv.sh
  (LD_LIBRARY_PATHぜ /usr/local/tomcat/libを追加)

# vi /usr/local/tomcat/conf/server.xml
  (<listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />追? )

# /usr/local/tomcat/bin/startup.sh
# grep -i APR /usr/local/tomcat/logs/catalina.out
Apr 22, 2010 7:30:43 PM org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.16.
Apr 22, 2010 7:30:43 PM org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

# cat /proc/<pid>/maps | grep libtcnative
2aaabcf82000-2aaabcfa1000 r-xp 00000000 08:08 1487410 /usr/local/tomcat/lib/libtcnative-1.so.0.1.16
2aaabcfa1000-2aaabd1a0000 ---p 0001f000 08:08 1487410 /usr/local/tomcat/lib/libtcnative-1.so.0.1.16
2aaabd1a0000-2aaabd1a2000 rwxp 0001e000 08:08 1487410 /usr/local/tomcat/lib/libtcnative-1.so.0.1.16

# /usr/jdk/bin/jinfo <pid> | grep java.library.path
java.library.path = /usr/jdk/jre/lib/amd64/server:/usr/jdk/jre/lib/amd64:/usr/jdk/jre/../lib/amd64::\
/usr/local/tomcat/lib:/usr/java/packages/lib/amd64:/lib:/usr/lib

 上記のようぜ catalina.outぜ INFOログ、/procぜ mapsでもライブラリのロードが確? できれぜ TomcatNativeが有効になっています。TomcatNativeを有効にすることぜ server.xmlに設定可能なコネクタ? 性が増えるようですが、useSendfile属性などデフォルトで有効のようなので? 旦そのままにしています。
 また、AJPコネクタでぜ HTTPコネクタのようぜ sendfileの? 能を使用できません。従って、TomcatをApacheをリバースプロキシとしたAPサーバとして利用する場合ぜ ApacheNativeの有効性は? いと? えます。Tomcatでスタンドアローボ HTTPサーバとして利用した場合やTomcatぜ openSSLを使用する場合に、その有効性が高ぜ なるのではないでしょうか。

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

 次ぜ TomcatNative有効・無効時パフォーマンス? 較を実施してみたいと思います。よりパフォーマンス? の有効性が確? 出来そうなファイボ I/Oやソケット周りを中? に? 証する為、Tomcatぜ HTTPコネクタを利用して? 定サイズの静的画? ファイルをクライアントから圏 得する操作を実施してみました。結果が以? になります。

tnative_32_64

 以前Apacheぜ EnableSendfileを検証しましたが(Sendfileのパフォーマン゜ )、その時と同じx86_64環? に加え、32bitの環? でも調査しています。Apache EnableSendfile検証時は有効性を確? 出来なかったのですが、今回の? 証では特ぜ 32bit環? において極゜ ずかながら性能の向上を確? 出来ました。同時リクエスト数の? い大? 模サービスで利用する場合、この地 しの性能差が生きてぜ るのではないでしょうか?(大? 模サービスぜ Tomcatスタンドアローンはなさそうですが・・?
 今回の? 果については、環? により異なる可能性が大きいです。Apacheぜ EnableSendfile同様、その有効性と? 具合がないことを確? してから採用するようにするべきです。