<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title>PC Junkie Rev3.0</title>
	<link href="http://xmms.jp/blog/atom.php" rel="self" />
	<link href="http://xmms.jp/blog/" />
	<id>http://xmms.jp/blog/index.php</id>
	<updated>2026-04-15T04:32:22Z</updated>
	<author>
		<name>x@xmms.jp</name>
		<email>x@xmms.jp</email>
	</author>
	<entry>
		<title>RouterBoard RB2011UiASに触ってみた</title>
		<link href="http://xmms.jp/blog/index.php?entry=entry140204-003021" />
		<link rel="alternate" type="text/html" href="http://xmms.jp/blog/index.php?entry=entry140204-003021" />
		<link rel="edit" href="http://xmms.jp/blog/index.php?entry=entry140204-003021" />
		<id>http://xmms.jp/blog/index.php?entry=entry140204-003021</id>
		<summary type="html"><![CDATA[　あけましておめでとうございました(過去形)。つかもう2月ですね。久しぶりの記事です。<br /><br />　今年第一の記事は、評価用の<a href="http://routerboard.com/RB2011UiAS-RM" >RB2011UiAS-RM</a>を株式会社シー アイオープラスさんから貸していただいた（ありがとうございます！）ので、一部界隈でアツいRouterBoardについてファーストインプレッションと簡単なベンチマークをしてみました。<br /><br />　本来だと先先週の初めくらいには評価を終わらせようと思っていたのですが風邪引いたり忙しかったり現場が<strike>クソ</strike>色々大変で全く何も出来ていなかったという…。<br /><br /><a href=images/P1181177_R.JPG class=lb><img src=images/P1181177_R.JPG width=500px></a><br><br /><br /><br /><h2>外観について</h2><br /><br /><a href=images/520_l.jpg class=lb><img src=images/520_l.jpg width=500px></a><br><br /><br />　まずは全面。しかし肝心の全体像の写真を撮り損ねていたので製品イメージ画像です。まだ手元にありますが撮りなおすのがめんｄ(ry<br />　インターフェース構成は、5GiE+1SFP+5FEと言う構成です。これらのインターフェースはルーティングインターフェースにもスイッチインターフェースにもなります。6つの1GibEというのは中々強そうです。<br />　また、Port1がPoE受電、Port10がPoE給電ポートになってはいるのですが、入力電圧が30Vで48Vのaf準拠ではないので一般的なスイッチにつないでも何も起きません。ここは対応してほしかったところではあります。<br /><br /><a href=images/P1181197_R.JPG class=lb><img src=images/P1181197_R.JPG width=500px></a><br><br /><br />　そして裏面。裏面にはシスコきしめんのシリアルポートがあります。ACポートは、10-28Vの入力に対応し、口さえ合えば大体のACアダプタが使えます。最初からついてきたのは24V0.5Aだったので、大体12W前後あればよさそうな感じがします。<br /><br /><a href=images/P1181195_R.JPG class=lb><img src=images/P1181195_R.JPG width=500px></a><br><br /><br />　奥行きです。横に長いものの、奥行きはものすごく短く、大体SSDと同じくらいの大きさでした。<br /><br />　LCDを前面ではなく上面に配置し、より小型化した<a href="http://routerboard.jp/RB2011UAS-IN/" >RB2011UAS-IN</a>というモデルがあるので、自分のように19インチラックを持っていない場合はこちらの方が設置には融通が利くかもしれません。<br /><br /><a href=images/P1181179_R.JPG class=lb><img src=images/P1181179_R.JPG width=500px></a><br><br /><br />　電源を入れたところです。電源確認の青色LEDが思いの外輝度高いです。某DCの某ルーターで状態確認用青色LEDに養生テープが貼ってあったのを思い出します。丁度ネットワークラックの目の高さに置いてあったので、作業中にLEDの光が目に刺さって痛かったのでしょう。<br /><br />　そんなことはどうでもよく、1Uサイズでラックマウントキットもついているので家で使うことはあんまり考えられていない気がしますが、人によっては寝床に置くには明るすぎるというかもしれません。その際には養生マスクがおすすめです。常時足元燈にはいいかもしれません。ちなみにファンレスです。<br /><br /><a href=images/P1181178_R.JPG class=lb><img src=images/P1181178_R.JPG width=500px></a><br><br /><br />　次に、LCDです。このルーターにはLCDが搭載されていて、感圧式なもののタッチパネルなので、ぽちぽちとここから色々いじれます。<br /><br /><a href=images/P1181192_R.JPG class=lb><img src=images/P1181192_R.JPG width=500px></a><br><br /><br />　PINの認証をすると、タッチパネルからシステムインターフェースのIPの設定も出来ます。あくまで簡易的なものなので、ここからVLANの設定などは出来ません。ちなみに初期PINは1234です。<br /><br /><br /><a href=images/P1181183_R.JPG class=lb><img src=images/P1181183_R.JPG width=500px></a><br><br /><br />　実用的なのは、このスループットグラフです。タッチすることによりppsとbpsを切り替えられます。この画面から抜けるには下から上にフリックする必要があるのですが、前述の通り感圧式なのでフリック系の作業は指の腹ではつらい時があります。ですが、物珍しくて面白いです。<br />　それ以外にも、Uptime、温度、入力電圧などの情報を一定間隔で切り替えるInfomationSlideshowというものもあります。<br /><br /><br /><h2>機能について</h2><br /><br />　まだ全ての機能を検証した訳ではないので、さわりだけ紹介します。<br /><br />　RBを操作する方法として、WebFigというWebGUIを使う方法と、Winboxと言う専用アプリケーションを使う方法があります。どちらも操作できる内容としては同じなのですが、Winboxの方はIPでアクセスできなくてもシステム用ブリッジに繋がっていればMACアドレスを元にログインできるので、IPを変更したあと繋がらなくなってしまった場合につかえます。<br /><br />　それらを使いインターフェースを設定していきます。インターフェースの種類は、物理インターフェースの他に、以下のようにVLAN、Bonding、GRE、EoIP、OpenVPN…など、大体のトンネルは制覇してそうな感じに種類があります。<br /><br /><a href=images/rb_webfig_ifs.PNG class=lb><img src=images/rb_webfig_ifs.PNG width=500px></a><br><br /><br />　物理インターフェースは、デフォルトではeth1だけが別扱いで、それ以外はbridge-localというブリッジに繋がっていてL2として動きます。<br /><br /><a href=images/rb_webfig_def_brdge.PNG class=lb><img src=images/rb_webfig_def_brdge.PNG width=500px></a><br><br /><br />　デフォルトのFWは以下のようになっています。<br /><br /><a href=images/rb_webfig_def_fw.PNG class=lb><img src=images/rb_webfig_def_fw.PNG width=500px></a><br><br /><br />　NATのセクションでは以下のような設定が入っていて、デフォルトではeth1がWANインターフェースとして動いていて、内側の通信はマスカレードされて外に出て行きます。<br /><br /><a href=images/rb_webfig_def_nat.PNG class=lb><img src=images/rb_webfig_def_nat.PNG width=500px></a><br><br /><br />　機能についてはまだまださわれていませんが、ぱっと見こんな感じです。<br /><br /><br /><br /><h2>みんな大好きiperf</h2><br /><br /><br />　とりあえず、素の状態でiperfしてどの程度でるか、と言うのが気になるので、特にチューニングせずiperfしていきます。<br />　今回はいつもの構成ではなく、以下のように一つの物理マシンをESXi5.5を入れ、VMを内部で2台動かし、ポート1とポート2でそれぞれのvSwitchを作成し、VM1とVM2の通信をこのポートを使って通信するように設定してます。ほんとは別件でVMサーバとして使おうと思いつつ放置していたサーバなのですが、ついでなので使いました。<br />　RBとサーバの間に挟まってる何かは今回全く使っていないので無視してください。<br /><br /><a href=images/P1271201_R.JPG class=lb><img src=images/P1271201_R.JPG width=500px></a><br><br /><br />　HW構成<br />M/B : Supermicro X9SCL-F<br />CPU : Xeon E3-1225 V2<br />Mem : ECC UDIMM 4x4GB 1333MHz<br />NIC : Intel 1000PT/QuadPort<br />OS : VMware ESXi 5.5<br /><br />テスト環境OS<br />割り当てCPU 2CPU<br />割り当てMem 2GB<br />OS Debian 7.2/x86-64<br />NIC : vmxnet3<br /> 1を作成後、vCenterServerよりクローンを行い2を作成したため、全く同じ構成のVMです。また、VMにはvmware-toolsが入っています。<br /><br />　 まずは、ループバックを作りiperfを行い、vmwareのカーネルの限界がまだ来ていないことを確認します。<br /><br /><a href=images/P1311207_R.JPG class=lb><img src=images/P1311207_R.JPG width=500px></a><br><br /><br />　どうでも良いですが、かしめ器が有るとつい限界まで短いケーブル作ってしまいますよね。作ったあと、短すぎて自分でも何に使うか分からなかったのですが今回役に立ちました。<br /><br />　以下のコマンドを実行した結果です。そのまま貼ると長くなるので結果だけ貼ります。<br /><br /><blockquote>for a in {1,2,4,8,16,32,64,128} ; do iperf -c IP -i 1 -w ${a}K &gt;&gt;iperf_direct.txt ; done</blockquote><br /><br />　上からTCP Window sizeを1K、2K,4K、8K、16K、32K、64K、128Kと変化させました。<br /><br /><blockquote><br />[  3]  0.0-10.1 sec   159 MBytes   133 Mbits/sec<br />[  3]  0.0-10.0 sec   624 MBytes   523 Mbits/sec<br />[  3]  0.0-10.0 sec   566 MBytes   474 Mbits/sec<br />[  3]  0.0-10.0 sec   794 MBytes   666 Mbits/sec<br />[  3]  0.0-10.0 sec   996 MBytes   835 Mbits/sec<br />[  3]  0.0-10.0 sec  1.09 GBytes   939 Mbits/sec<br />[  3]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec<br />[  3]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec<br /></blockquote><br /><br />　物理マシン同士で実行してもこの程度なので、ハイパーバイザがネックになることはまだないと思われます。また、結果は1秒おきに出力しましたが大きなブレはありませんでした。<br /><br />　この値を元に、ケーブルをRBのポート2と3に繋ぎ、同じようにiperfしてみました。<br /><br /><blockquote><br />[  3]  0.0-10.0 sec   153 MBytes   128 Mbits/sec<br />[  3]  0.0-10.0 sec   520 MBytes   435 Mbits/sec<br />[  3]  0.0-10.0 sec   556 MBytes   466 Mbits/sec<br />[  3]  0.0-10.0 sec   738 MBytes   619 Mbits/sec<br />[  3]  0.0-10.0 sec   844 MBytes   707 Mbits/sec<br />[  3]  0.0-10.0 sec  1.02 GBytes   879 Mbits/sec<br />[  3]  0.0-10.0 sec  1.06 GBytes   910 Mbits/sec<br />[  3]  0.0-10.0 sec  1.06 GBytes   908 Mbits/sec<br /></blockquote><br /><br />　若干の劣化はありますが、許容の範囲内だと思います。また、通信があるとLCDのインターフェース選択部分にも反映されます。<br /><br /><a href=images/P1311208_R.JPG class=lb><img src=images/P1311208_R.JPG width=500px></a><br><br /><a href=images/P1311210_R.JPG class=lb><img src=images/P1311210_R.JPG width=500px></a><br><br /><a href=images/P1311209_R.JPG class=lb><img src=images/P1311209_R.JPG width=500px></a><br><br /><br />　このように、見てて面白いです。某店の某サービス提供時に配布される某所のOEMの某ラグビー型の某WLAN APもLCDついているならYoutube再生機能とか言う訳の分からないゴミクズバグ機能をつけないでこっちをつけた方が数百倍役に立ったのではと思います。<br /><br />　この写真を撮る途中に切れないように10分間iperfを流しましたが、フリーズや再起動などはありませんでした。<br /><br />　さて、ブリッジ同士での通信が取れたので、今度はWAN側に当たるIPマスカレード先の物理マシンにiperfしてみます。物理マシンとはL2通信時にはほぼループ時と同じ値がでていることを確認しています。<br /><br />　その結果、以下のようになりました。<br /><br /><blockquote><br />[  4]  0.0-10.1 sec  33.1 MBytes  27.6 Mbits/sec<br />[  5]  0.0-10.0 sec   272 MBytes   228 Mbits/sec<br />[  4]  0.0-10.0 sec   295 MBytes   247 Mbits/sec<br />[  5]  0.0-10.0 sec   299 MBytes   251 Mbits/sec<br />[  4]  0.0-10.0 sec   303 MBytes   254 Mbits/sec<br />[  5]  0.0-10.0 sec   307 MBytes   257 Mbits/sec<br />[  4]  0.0-10.0 sec   296 MBytes   248 Mbits/sec<br />[  5]  0.0-10.0 sec   297 MBytes   249 Mbits/sec<br /></blockquote><br /><br />　んー？これは…少し性能劣化が気になるところです。NATさせると性能が落ちる、というのはどっかの銀色のルーターを思い出しますね。それよりは数十倍早いですが。<br /><br />　<a href="http://routerboard.com/RB2011UiAS-RM" >こちら</a>ではRoutingでも最低は698Mbpsは出るような気がしていたのですが、それには及びません。そこで、FastPathとは何か、発動条件は何か、と調べてみると、以下のような制限があることに気がつきました。<br /><br /><a href="http://wiki.mikrotik.com/wiki/Manual:Fast_Path" >http://wiki.mikrotik.com/wiki/Manual:Fast_Path</a><br /><br /><blockquote><br /><br />IPv4 fast path is automatically used if following conditions are met:<br /><br />firewal rules are not configured,<br />Traffic flow is disabled /ip traffic-flow enabled=no<br />Simple and queue trees with parent=global are not configured.<br />source interface is not bridge port or bonding slave<br />destination interface queue is set to only-hw-queue and no queue tree entries with parent=&quot;dst interface&quot;<br />no mesh, metarouter interface configuration,<br />sniffer, torch and traffic generator is not running<br />connection tracking is not active<br />ip accounting is disabled (/ip accounting enabled=no);<br />VRFs are not set (/ip route vrf is empty);<br />Hotspot is not used (/ip hostspot has no interfaces);<br />IpSec policies are not configured (ROS v6.8)<br /><br /></blockquote><br /><br />　要するに、CPUがパケットを見ずに、チップ上でスイッチできる必要があると言う事みたいです。しかしfirewal rules are not configuredという制限はちょっと辛い…。。<br />　試しに、Fastpathが有効になるかどうか、全てのFWルールを削除し、ローカルブリッジからeth2とeth3を外し、単純なIPルーティングのみをさせてみました。<br />　Port2が192.168.87.1/24で、Port3が192.168.86.1/24で、それぞれを独立インターフェースとして動かし、それぞれの仮想マシンのでふぉげを変更したルーターのIPにしました。<br /><br /><blockquote><br />[  3]  0.0-10.1 sec  49.9 MBytes  41.5 Mbits/sec<br />[  3]  0.0-10.0 sec   648 MBytes   543 Mbits/sec<br />[  3]  0.0-10.0 sec   755 MBytes   633 Mbits/sec<br />[  3]  0.0-10.0 sec   789 MBytes   662 Mbits/sec<br />[  3]  0.0-10.0 sec   889 MBytes   746 Mbits/sec<br />[  3]  0.0-10.0 sec  1.01 GBytes   864 Mbits/sec<br />[  3]  0.0-10.0 sec  1.04 GBytes   889 Mbits/sec<br />[  3]  0.0-10.0 sec  1.03 GBytes   889 Mbits/sec<br /></blockquote><br /><br />　確かに、速度は戻りました。色々見てみると、やはりNATを有効にするとブリッジポートではないRoutingPort間の通信は300Mbps前後に落ち込んでしまうようです。<br /><br />　このテストをした後、<a href="http://connpass.com/event/4467/?utm_campaign=event_reminder&amp;utm_source=notifications&amp;utm_medium=email&amp;utm_content=title_link" >RB勉強会</a>があったので中の人に聞いてみたところ、「CPUでの処理はお察しください。そういった方は32コアの<a href="http://routerboard.com/CCR1036-8G-2SplusEM" >CCR1036-8G-2S+EM</a> をどうぞ」と言われたので、やはりそういう物みたいです。<br />　とはいうものの、新品実売価格1万後半のルーターでここまで遊べるルーターを見たことないので、ネットワークGeekにはとてもおすすめです。全然深いところを触れていませんが、GUIを触った感じで「ああこれは遊べるな」と思えます。<br /><br />　まだまだ機能にさわれていないので、もっと遊んできたいと思います。誰か時間ください。]]></summary>
		<updated>2014-02-03T15:30:21Z</updated>
	</entry>
	<entry>
		<title>【Storage】VMware 5.1からSRPなデータストアを使う</title>
		<link href="http://xmms.jp/blog/index.php?entry=entry130520-030318" />
		<link rel="alternate" type="text/html" href="http://xmms.jp/blog/index.php?entry=entry130520-030318" />
		<link rel="edit" href="http://xmms.jp/blog/index.php?entry=entry130520-030318" />
		<id>http://xmms.jp/blog/index.php?entry=entry130520-030318</id>
		<summary type="html"><![CDATA[前回までのあらすじ<br /><blockquote><br />　無事にSRPターゲットの起動に成功したら、どんな人でもおそらくVMwareからこれを使いたいと考えるでだろう。VMware 4.xにはSRPイニシエータがあり、これからSRPなデータストアに繋ぐことが出来たので、Supported DeviceにあるConnectX2を買えばSRPが使える！と思っていた。<br />　しかし、去年の後半くらいからIBを触っていき、色々調べているうちに5系になってからVMware用SRPイニシエータが配布さていないことを知り、IBを使うには10GとしてiSCSIで繋ぐしかないことを知って絶望する。SRPの良さを知ってからこの事に気がついたので、知ったときはときはマジかよ…と結構落ち込んだ。<br />　一応、iSCSI over IPoIBがどの程度のパフォーマンスが出るのか調べてみると、ConnectedMode（MTU 65520)が使えないので10GbEなIBのMPIOx2（20Gbリンク)でさえ5GB/s(4-5Gbps)程度しか出ないらしい。Oh…<br /><a href="http://communities.vmware.com/thread/393784?start=0&amp;tstart=0" >http://communities.vmware.com/thread/39 ... p;tstart=0</a><br /><br /><blockquote> if anyone in Mellanox wants IB to get market acceptance then they should support this crap! (Mellanoxの中にIBのシェアを上げたいやつがるいならこのクズをどうにかしろ！)</blockquote><br /><br />　全くです…<br /><br />　はっきり言って、全く使い物にならないといってもいいレベルのサポート状況にうちひしがれていた中、ある情報が届く。<br /><br /><blockquote class="twitter-tweet" lang="ja"><p>@<a href="https://twitter.com/wakadannacom">wakadannacom</a> @<a href="https://twitter.com/xmms">xmms</a> @<a href="https://twitter.com/hanakara_milk">hanakara_milk</a>SRP使えるようになったらしいですよ。 ESXi 。松本さん情報ですが、、<a href="http://t.co/x0mOwbe8" title="http://www.mellanox.com/page/products_dyn?product_family=36&mtag=vmware_drivers">mellanox.com/page/products_…</a> under Downloads tab”</p>— hiroyuki satoさん (@hiroysato) <a href="https://twitter.com/hiroysato/status/304258751509168128">2013年2月20日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script><br /><br />　キター！ConnectX2が来たら本気出す！<br />　そして、ようやくConnectX2が来たので試してみたのであった…</blockquote><br /><br />　ConnectX2はもっと前からあったのですが、<a href="comments.php?y=13&amp;m=05&amp;entry=entry130513-131436" > 前回 </a>無事にSRPターゲットが使えるようになったので、VMwareから接続し、どの程度パフォーマンスが出るのか試してみました。<br /><br /><br /><br /><h2>検証環境</h2><br />　今回試験に利用した構成です。<br /><h3> SRP ターゲット</h3><br /><blockquote> OS<br />　ubuntu server 12.04<br />HW<br />　MB/Rampage Gene II<br />　CPU/Xeon X5647<br />　Mem/4GB@1333MHz x6=24GB,UDIMM<br />　HCA Infinihost III EX(4xDDR)<br />　HDD WDC WD400JD-55MS　x1　 ST3160318AS　x6 </blockquote><br /><br />前回作成した構成そのままです。<br /><br /><br /><h3>SRP イニシエータ(VMhost)</h3><br /><blockquote>OS<br />　VMware 5.1 update1(VMware-VMvisor-Installer-5.1.0.update01-1065491.x86_64.iso)<br />HW<br />　MB/Rampage II Extreme<br />　CPU/Xeon E5530@定格<br />　HCA/ConnectX2 VPI(QDR,QSFP)<br />　Memory 6x4GB@1066MHz</blockquote><br /><a href=images/R_P5090652.jpg class=lb><img src=images/R_P5090652.jpg width=500px></a><br><br />　いつも使っているマシンが使用中だったため、前回のイニシエータから微妙に変更されています。変更点としては、MBがLanParty UTからRampage II Extremeへ、CPUがCorei7 920からXeon 5530へ、メモリのクロックが1333から1066へと変わっています。また、HCAが最初から対応ファームウェアだったので今回は実行しませんでしたが、ファームのバージョンによってはファームのアップデートが必要です。<br /><blockquote>Firmware versions:<br />• ConnectX®-2: 2.9.1000 and above<br />• ConnectX®-3: 2.11.0500 and above</blockquote><br /><br /><h2>VMwareのセットアップ</h2><br />　インストールは、ローカルのHDDにISOからインストールしました。今思うとintel pro1000/CTを使ったiSCSI bootでもよかったのですが、その時は気がつきませんでした。。あと、RampageIIのオンボードのNIC (Marvell　 88E8056) がVMWでドライバを持っていなくて認識できなかったため、隣に転がっていた1000MTを追加する羽目になりました。ハードウェア対応は要チェックですね。。<br /><br />　インストールが終わったら、vSphere　Clientから構成タブ→左側の「ソフトウェア」カラム→セキュリティプロファイル　から、SSHとESXiシェルを有効にします。ESXiシェルを有効にするのは、SSHのログインをRSA鍵だけではなくパスワード認証も許可するためのものなので、不要な場合は以下を飛ばしてください。<br /><br /><h3>SSHのパスワードログイン有効化</h3><br />　ESXiシェルを有効にしたら、ローカルコンソールからAlt+F1を押してESXiシェルを立ち上げ、以下を変更します。<br /><blockquote>~ # vi /etc/ssh/sshd_config<br />#PasswordAuthentication no<br />PasswordAuthentication yes<br /></blockquote><br /><br /><h3>OFED for VMware ESXiインストール</h3><br /><br />　以下のDownloadタブから　「MLNX-OFED ESXi 5.X Driver」をダウンロードします。<br /><a href="http://www.mellanox.com/page/products_dyn?product_family=36&amp;mtag=vmware_drivers" >http://www.mellanox.com/page/products_d ... re_drivers</a><br /><br />　または、wgetでダウンロードします。<br /><blockquote>wget h t t p://www.mellanox.com/downloads/Drivers/MLNX-OFED-ESX-1.8.1.0.zip</blockquote><br /><br />　次に、<a href="http://www.mellanox.com/related-docs/prod_software/Mellanox_IB_OFED_Driver_for_VMware_vSphere_User_Manual_Rev_1_8_1.pdf" > マニュアル </a>に沿ってドライバを追加していきます。<br /><blockquote>esxcli software vib install -d MLNX-OFED-ESX-1.8.1.0.zip </blockquote><br /><br />　そして、VMホストを再起動します。再起動したあと、ESXiシェルからesxcliを実行してドライバがロードされているかを見ます。<br /><blockquote>~ # esxcli software vib list | grep Mellanox<br />net-ib-cm 1.8.1.0-1OEM.500.0.0.472560 Mellanox PartnerSupported 2002-02-26<br />net-ib-core 1.8.1.0-1OEM.500.0.0.472560 Mellanox PartnerSupported 2002-02-26<br />net-ib-ipoib 1.8.1.0-1OEM.500.0.0.472560 Mellanox PartnerSupported 2002-02-26<br />net-ib-mad 1.8.1.0-1OEM.500.0.0.472560 Mellanox PartnerSupported 2002-02-26<br />net-ib-sa 1.8.1.0-1OEM.500.0.0.472560 Mellanox PartnerSupported 2002-02-26<br />net-ib-umad 1.8.1.0-1OEM.500.0.0.472560 Mellanox PartnerSupported 2002-02-26<br />net-memtrack 2013.0131.1850-1OEM.500.0.0.472560 Mellanox PartnerSupported 2002-02-26<br />net-mlx4-core 1.8.1.0-1OEM.500.0.0.472560 Mellanox PartnerSupported 2002-02-26<br />net-mlx4-ib 1.8.1.0-1OEM.500.0.0.472560 Mellanox PartnerSupported 2002-02-26<br />scsi-ib-srp 1.8.1.0-1OEM.500.0.0.472560 Mellanox PartnerSupported 2002-02-26</blockquote><br /><br />　一番下に待ちわびたsrpドライバがいたら成功です。これで、ESXiシェルを抜けます。<br /><br /><h2>SRP イニシエータの接続</h2><br /><h3>SRP Targetの準備</h3><br />　 <a href="comments.php?y=13&amp;m=05&amp;entry=entry130513-131436" > 前回 </a> の通りtargetcliの初期設定は出来ている前提で、いつものように受け入れるセッションIDを追加するため、 SRPターゲット側でいつものように tailf /var/log/syslog します。tail(f| -F)したら、vSphereClientを起動し、構成→左側の「ハードウェア」カラム→ストレージアダプタ　から、ConnectX2がいると思うので、右クリックし「再スキャン」をします。<br /><br /><a href=images/VMware5_IB_SRP1.PNG class=lb><img src=images/VMware5_IB_SRP1.PNG width=500px></a><br><br /><br />すると、いつも通りにターゲット側にメッセージが上がると思います。<br /><blockquote>May 19 21:27:21 SRP kernel: [ 425.419379] Session : kernel thread ib_srpt_compl (PID 3662) started<br />May 19 21:27:21 SRP kernel: [ 425.419436] Rejected login because no ACL has been configured yet for initiator 0x8119bbffff00d8c50002c903000e7855.<br />May 19 21:27:21 SRP kernel: [ 425.419493] Session 0x8119bbffff00d8c50002c903000e7855: kernel thread ib_srpt_compl (PID 3662) stopped</blockquote><br /><br />　この 0x8119bbffff00d8c50002c903000e7855 という長いセッションIDをコピーしたら、targetcliからACLを追加します。<br /><blockquote>/&gt; cd ib_srpt/0xfe800000000000000019bbffff00d8c5/acls/<br />/ib_srpt/0xfe...ff00d8c5/acls&gt; create 0x8119bbffff00d8c50002c903000e7855<br />Successfully created Node ACL for 0x8119bbffff00d8c50002c903000e7855<br />Created mapped LUN 0.</blockquote><br /><br />　これで、再度vSphereClientから再スキャンをかけると、接続されます。<br /><br /><blockquote>May 19 21:29:21 SRP kernel: [ 545.118200] Received SRP_LOGIN_REQ with i_port_id 0x8119bbffff00d8c5:0x2c903000e7855, t_port_id 0x19bbffff00d8c4:0x19bbffff00d8c4 and it_iu_len 580 on port 1 (guid=0xfe80000000000000:0x19bbffff00d8c5)<br />May 19 21:29:21 SRP kernel: [ 545.119125] Session : kernel thread ib_srpt_compl (PID 3948) started</blockquote><br /><br /><h3>LUNのフォーマット</h3><br />　接続されたら、ストレージから「ストレージの追加」で今追加したLUNをフォーマットします。いつも通りです。<br /><br /><a href=images/VMware5_IB_SRP2.PNG class=lb><img src=images/VMware5_IB_SRP2.PNG width=500px></a><br><br /><br /><a href=images/VMware5_IB_SRP3.PNG class=lb><img src=images/VMware5_IB_SRP3.PNG width=500px></a><br><br /><br />　これで、ようやく念願のSRPが使えるようになりました。<br /><br /><h2>パフォーマンス</h2><br /><br /><h3>RAM上のディスクパフォーマンス</h3><br />　まず、いつも通りに20GBを割り当てたtmpfsを作りその上にFileIOな物を作ります。targetcliから /backstores/rd_mcp create name=srp_ramtest size=10Gとやることによりこんなことをしなくてもram上にファイルを作れることを知りましたが、一応今までと統一するためにtmpfsを利用します。ファイルを作成したら、通常通りOSを入れ、起動しました。利用したのはWindwos7 UltSP1、ハードウェア割り当てはCPUに2コア、メモリに2G、その他は特にウィザードからいじっていません。<br />　まずはCDMの結果です。<br /><a href=images/VMware_SRP_RAM_DDR_CDM2.PNG class=lb><img src=images/VMware_SRP_RAM_DDR_CDM2.PNG ></a><br><br />何故か実マシンで挿したときより早い…ホストのキャッシュが効いていそうな感じがします。<br />ディスクのIOもどこかで詰まっているようなことはありませんでした。桁が大きすぎるためか、何故かHDTuneのモニタリングが落ちます…。<br /><a href=images/VMware_SRP_RAM_DDR_CDM1.PNG class=lb><img src=images/VMware_SRP_RAM_DDR_CDM1.PNG width=500px></a><br><br /><br />しかし、HD Ttuneだと動きが若干違いました。同期と非同期の動きなのか、VMのキャッシュが効かないような読み方をするのか、何が原因だかはいまいち分かりませんでした。どっちが本当なんでしょうか。。<br /><a href=images/VMware_SRP_RAM_DDR_HDTune.PNG class=lb><img src=images/VMware_SRP_RAM_DDR_HDTune.PNG width=500px></a><br><br /><br />そして、HD Ttuneから書き込もうとしたのですが、RAMのサイズの関係でルートデバイスしか作れなかったので書き込みの実験は出来ませんでした。<br /><br /><h3>ZFS上のディスクパフォーマンス</h3><br />　次に、ZFSのディスクのテストです。上の実験中はZFSのモジュールをアンロードして20GBのRAMをファイルとして割り当てていましたが、今回はまずvmdkをコピーし、RAMのファイルを取り除き、ZFSのディレクトリ上に再びコピーして起動しました。構成は前回と同じく、ディスク6本のraidz構成です。ディスクへの書き込みは時間があるときに追記しようと思います。。<br /><br /><a href=images/VMware_SRP_ZFS_DDR_CDM1.PNG class=lb><img src=images/VMware_SRP_ZFS_DDR_CDM1.PNG width=500px></a><br><br /><br />　CDMとHD Ttuneの差がかなりありますが、今回はディスクの動きが見れたので、CDMのベンチ時はZFSのキャッシュに載っているためほぼReadの時にディスク負荷はかからず、HD Ttuneの時には常にディスクに負荷がかかっている、と分かりました。ディスク直に読んだときとのパフォーマンスの差は、原因がVMFS の特性であったりHDDの特性であったりするので、やはりデータストアにSSDを使わないとこれ以上のパフォーマンスは難しそうです。SSDでのZFS時の動きやL2ARCの動きを見てみたいので、誰かそこそこなSSDを束で貸してください＞＜多分書き込み過多でぶっ壊しそうですが＞＜<br /><br />　とにかく、「元のストレージが早ければそれだけSRPの速度はでる」と言うことが分かったのでよしとします。やはりパフォーマンスは金で買うしかなさそうですね…。]]></summary>
		<updated>2013-05-19T18:03:18Z</updated>
	</entry>
	<entry>
		<title>【Storage】ZFSOnLinux +LIO SRPを試してみた</title>
		<link href="http://xmms.jp/blog/index.php?entry=entry130513-131436" />
		<link rel="alternate" type="text/html" href="http://xmms.jp/blog/index.php?entry=entry130513-131436" />
		<link rel="edit" href="http://xmms.jp/blog/index.php?entry=entry130513-131436" />
		<id>http://xmms.jp/blog/index.php?entry=entry130513-131436</id>
		<summary type="html"><![CDATA[前回までのあらすじ<br /><br /><blockquote><br />SRPによる「ぼくのかんがえたさいきょうのすとれーじ」構想を実現するべく、様々な検証をした結果、どうやらSCSTとSRPそのものは問題なさそうだという結論が出つつあった。そして、ストレージサーバにSCSTカーネルを入れようと計画していて、あることに気がつく。SCSTカーネルだとZFS on LinuxのネイティブZFSのconfigureが通らない。どうにか動かそうと1日は頑張ったが、結局心が折れ、挫折した。<br /><br />( ◠‿◠ )＜ザコめ　(◞‸◟)<br /><br />しかし、調べてみるとib_srptモジュールがlinux kernel3.3くらいから（あいまい）マージせれたらしく、それがあればLIOからSRPがしゃべれるらしい。<br />debianには3.2以降のカーネルは公式にはないが、(カーネル的な意味で)一歩先を行くubuntu server が12.04ではデフォルトで3.5なので、試しにUbuntu serverを入れてmodinfoをしてみると、確かにib_srptモジュールはある。そして、ZFSのパッケージもあり、3.5カーネルの上でZFSもうごいた。もしかしたら、これならZFSとSRPもいけるのでは--?<br /><br />---そして、再び格闘が始まった---<br /></blockquote><br /><br />前置きが長くなりましたが、だいたいこんな感じです。2ヶ月くらい前からやろうやろうと思いつつ何もしていませんでしたが、どうにか動いたのでメモとして残します。両方ともまだ実績のないいろんな意味でとんがった構成ですがどうなるか…。。<br /><br /><h2>動作環境</h2><br />今回試した環境です。<br /><br /><h3>SRPターゲット</h3><br /><blockquote>OS<br />　ubuntu server 12.04<br />マシン<br />　MB/Rampage Gene II<br />　CPU/Xeon X5647<br />　Mem/4GB@1333MHz x6=24GB,UDIMM<br />　HCA Infinihost III EX(4xDDR)<br />　HDD WDC WD400JD-55MS　x1　 ST3160318AS　x6</blockquote><br /><br />　以前<a href="http://connpass.com/event/1833/" >ブレードサーバ勉強会</a>の時にJX-FM500Bと言うケースに入れ、iSCSIのSANとして使うはずだったマシンです。まあ結局色々あってiSCSIを繋ぐことは出来なかったんですけどね。。それからずっと部屋の隅に置いてあったので、再利用しました。<br /><br /><h3>イニシエータ</h3><br /><blockquote>OS<br />　Windows 7<br />マシン<br />　MB:DFI LANPARTY UT X58 T3eH8<br />　CPU:Xeon Corei7 920(定格)<br />　HCA Infinihost　III LX(4xDDR)<br />　Mem:6 x 2GB@1333MHz</blockquote><br /><br />　いつものマシンです。<br /><br /><h2>targetcliのインストール</h2><br /><br />　そのままだと何故かXの類とOpenGL系も入れようとして800MB超もディスクを消費するので、<br /><blockquote> apt-get install --no-install-recommends targetcli</blockquote><br /><br />　で必要なものだけを入れます。<br />　インストールが終わったら、targetcliが立ち上がるか試します。<br /><br /><blockquote>root@SRP:~# targetcli<br />Welcome to the targetcli shell:<br /><br />Copyright (c) 2011 by RisingTide Systems LLC.<br /><br />Visit us at <a href="http://www.risingtidesystems.com." >http://www.risingtidesystems.com.</a><br /><br />Using iscsi fabric module.<br />Using loopback fabric module.<br />Using ib_srpt fabric module.<br />Using qla2xxx fabric module.<br />Using tcm_fc fabric module.<br />/&gt; exit<br />root@SRP:~#</blockquote><br /><br /><h2>tagetcliの準備</h2><br />　targetcliが立ち上がったらいったん終了し、SRPをしゃべる為の準備をします。<br /><br /><h3>openSMの起動</h3><br /><br />apt-get install opensmで入るので必要に応じて入れます。windows側で起動してもいいのですが。<br /><br /><h3>モジュールのロード</h3><br />　モジュールは以下のものをロードします。<br /><blockquote>ib_srpt(tagetcliを起動すると読み込まれる)<br />mlx4_ib or ib_mthca(HCA用ドライバ)</blockquote><br /><br /><h3>余談</h3><br />　srpを動かそうとしても、デフォルトだと/ib_srp以下でcreateしようとして以下のエラーで失敗します。<br /><blockquote>/ib_srpt&gt; create 0x0000000000000000008f104039864b1<br />Traceback (most recent call last):<br />  File &quot;/usr/lib/python2.7/dist-packages/configshell/shell.py&quot;, line 983, in run_interactive<br />    self._cli_loop()<br />  File &quot;/usr/lib/python2.7/dist-packages/configshell/shell.py&quot;, line 806, in _cli_loop<br />    self.run_cmdline(cmdline)<br />  File &quot;/usr/lib/python2.7/dist-packages/configshell/shell.py&quot;, line 927, in run_cmdline<br />    self._execute_command(path, command, pparams, kparams)<br />  File &quot;/usr/lib/python2.7/dist-packages/configshell/shell.py&quot;, line 902, in _execute_command<br />    result = target.execute_command(command, pparams, kparams)<br />  File &quot;/usr/lib/python2.7/dist-packages/targetcli/ui_node.py&quot;, line 157, in execute_command<br />    return UINode.execute_command(self, command, pparams, kparams)<br />  File &quot;/usr/lib/python2.7/dist-packages/targetcli/ui_node.py&quot;, line 85, in execute_command<br />    pparams, kparams)<br />  File &quot;/usr/lib/python2.7/dist-packages/configshell/node.py&quot;, line 1405, in execute_command<br />    result = method(*pparams, **kparams)<br />  File &quot;/usr/lib/python2.7/dist-packages/targetcli/ui_target.py&quot;, line 119, in ui_command_create<br />    target = Target(self.rtsnode, wwn, mode=&#039;create&#039;)<br />  File &quot;/usr/lib/python2.7/dist-packages/rtslib/target.py&quot;, line 1252, in __init__<br />    self._create_in_cfs_ine(mode)<br />  File &quot;/usr/lib/python2.7/dist-packages/rtslib/node.py&quot;, line 71, in _create_in_cfs_ine<br />    os.mkdir(self.path)<br />OSError: [Errno 22] Invalid argument: &#039;/sys/kernel/config/target/srpt/0x0000000000000000008f104039864b1&#039;</blockquote><br /><br />　最初は、<a href="http://www.linux-iscsi.org/wiki/HCA#Hardware_support" >Hardware Support</a>を見てみるとConnectX以降しか書いていのですが、試した環境がinfinihostだったのでそれが悪いと思っていました。なので、ConnectX2が来たら本気を出そうと後回しにしていたのですが、その後某氏にConnectX2を譲っていただき同じように試してみましたが変わらずエラーでした。<br /><br />　ここで再び心が折れ(豆腐メンタルすぎ)放置していたのですが、久しぶりに調べてみると<a href="http://permalink.gmane.org/gmane.linux.scsi.target.devel/3226" >このフォーラム</a>に同じ情報が上がっていて、一部修正する必要があるようです。13は確認していないですが、少なくともubuntu server 12.04とInfinihost LXとConnectX2 VPIという環境では修正が必要でした。修正がいるかどうかは使用するHCAにもよる…のでしょうか？<br />  試してみた限りでは、infinihostでも問題なく動いています。iSER等を使うときにConnectXが必要なのでしょうか？それとも<a href="http://www.linux-iscsi.org/wiki/RTS_OS" >RTS OS</a>の話ですかね？RTS OSも試してみたいとは思うのですが、ZFSが行けるかどうか…<br /><br /><h3>ib_srpt.specの修正</h3><br />  /var/target/fablic/ib_srp.specファイルを修正します。<br /><blockquote>vi /var/target/fabric/ib_srpt.spec<br />#wwn_from_files_filter = &quot;sed -e s/fe80/0x0000/ -e &#039;s/\://g&#039;&quot;<br />wwn_from_files_filter = &quot;sed -e s/fe80/0xfe80/ -e &#039;s/\://g&#039;&quot;</blockquote><br /> <br /> これで、ひとまず準備は終わります。<br /><br /><h2>targetcliのLUN作成</h2><br /><a href="http://linux-iscsi.org/wiki/SCSI_RDMA_Protocol" >ここ</a>に書いてある通りに、backstoresでlunをつくり、そのlunをSRPのターゲットと結びつけていきます。/ib_srp以下でcreateしようとしても0xfe80...というのがタブで補完されないときは、HCAのドライバが読まれていないのでmodprobeでHCAのドライバを読んでください。（たまにはまる）<br /> <br /><br />LUNとターゲットを結びつけたら、接続するイニシエータのIDを取るため、一旦targetcliをexitするかCtrl+Zでバックグラウンドにまわし、/var/log/syslogをtail -fします。どうでもいいのですがUS12.04だと/var/log/messagesはなくなっているんですね…<br /><br />tailfしたら、イニシエータ側（今回はWindows7)から接続します。Windows上からだと、<a href="comments.php?y=12&amp;m=12&amp;entry=entry121210-201131" >前回</a>と同じくOFEDのSRPドライバを入れたあと、デバイスマネージャから記憶域コントローラ→Infiniband SRP Miniportを有効にしたり無効にしたりすることにより再接続します。<br /><br />  一度ドライバを無効にしたあと有効にすると、以下のようなメッセージが出るので、これをコピーします。<br /><br /><blockquote>May 10 22:29:03 SRP kernel: [ 3960.483703] Received SRP_LOGIN_REQ with i_port_id 0x19bbffff00d8c4:0x5ad00000bf4d4, t_port_id 0x19bbffff00d8c4:0x19bbffff00d8c4 and it_iu_len 2116 on port 1 (guid=0xfe80000000000000:0x8f104039864b1)<br />May 10 22:29:03 SRP kernel: [ 3960.484690] Session : kernel thread ib_srpt_compl (PID 2112) started<br />May 10 22:29:03 SRP kernel: [ 3960.484840] Rejected login because no ACL has been configured yet for initiator 0x0019bbffff00d8c40005ad00000bf4d4.　←このIDが必要<br />May 10 22:29:03 SRP kernel: [ 3960.484848] Session 0x0019bbffff00d8c40005ad00000bf4d4: kernel thread ib_srpt_compl (PID 2112) stopped</blockquote><br /><br />  SCSTもそうでしたが、SRPの動きとしてクライアント側であれこれ認証するのではなく、ターゲット側で一括で認証するようです。<br /><br />  このIDをとったら、targetcliに戻り、aclを変更します。<br /><br /><blockquote>/ib_srpt/0xfe...8f104039864b1&gt; cd /<br />/&gt; cd /ib_srpt/0xfe800000000000000008f104039864b1/<br />/ib_srpt/0xfe...8f104039864b1&gt; acls/ create  0x0019bbffff00d8c40005ad00000bf4d4<br />Successfully created Node ACL for 0x0019bbffff00d8c40005ad00000bf4d4<br />Created mapped LUN 0.<br />Entering new node /ib_srpt/0xfe800000000000000008f104039864b1/acls/0x0019bbffff00d8c40005ad00000bf4d4<br />/ib_srpt/0xfe...5ad00000bf4d4&gt;</blockquote><br /><br />  これで、イニシエータ側からもう一度接続をかけると、Infiniband SRP Miniportの！マークが無くなり、ディスクの管理から今追加したディスクがみえるはず…です。<br /><br /><h2>SRP素の性能ベンチマーク</h2><br />　まずは、mount -t tmpfs -o size=10GとしてRAM上に作ったFileIOなLUNに対してみんな大好きCDMとHDTuneを回した結果です。HCAは両者ともInfinihost III （4xDDR)です。connectX2をもう一枚手に入れないとなかなかいい数字はでなさそうです。まあ、それでもiSCSIでは中々出せない数値です。<br /><br /><a href=images/IB_LIO_SRP_DDR_ramdisk_bench.PNG class=lb><img src=images/IB_LIO_SRP_DDR_ramdisk_bench.PNG width=500px></a><br><br /><br />　ちなみに、SCSTの時の結果です。<br /><a href=images/WinOFED_SRP_perf.PNG class=lb><img src=images/WinOFED_SRP_perf.PNG width=500px></a><br><br /><br />　SCSTの方が概ね1Gbps程度多く速度が出ているようにみえます…。ほぼ同じ構成のはずなのですがなぜ…。まあ、どっちにしてもiSCSIではでない速度なのでよしとします。<br /><br />　SRPが通ったら、SCSTカーネルではうまく入らなかったZFSを入れてみます。<br /><br /><h2>ZFS over　Infinibandを試してみる</h2><br />　US12.04はレポジトリを追加することによってapt-get installで自動的にインストールされます。まあこれは今に始まったものではないですが…。<br /><br />　<a href="https://launchpad.net/~zfs-native/+archive/stable" >ここ</a>にあるように、まずppaのキーを追加します。<br /><blockquote>root@SRP:~# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1196BA81F6B0FC61<br /><br />Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.pb0RR67Pg5 --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys 1196BA81F6B0FC61<br />gpg: requesting key F6B0FC61 from hkp server keyserver.ubuntu.com<br />gpg: key F6B0FC61: public key &quot;Launchpad PPA for Native ZFS for Linux&quot; imported<br />gpg: Total number processed: 1<br />gpg: imported: 1 (RSA: 1)</blockquote><br /><br />　次に、sources.listに以下を追加します。<br /><blockquote> root@SRP:~#  vi /etc/apt/sources.list<br /><br />deb <a href="http://ppa.launchpad.net/zfs-native/stable/ubuntu" >http://ppa.launchpad.net/zfs-native/stable/ubuntu</a> precise main<br />deb-src <a href="http://ppa.launchpad.net/zfs-native/stable/ubuntu" >http://ppa.launchpad.net/zfs-native/stable/ubuntu</a> precise main<br /></blockquote><br /><br />　そしたら、apt-get updateのあと、apt-get install ubuntu-zfsでzfsが入ります。まあなんて簡単。<br /><br /><br />　そして、いつもどおりにpoolを作り、その上にFileIOなLUNを作ります。上のtmpfsの実験をしたあとに再起動をしているのですが、saveconfigをし忘れてtargetcliの設定が真っさらになりましたw<br /><br />　ZFSについては何度も扱っているうえにいくらでもほかに優秀なまとめがあり、targetcliについても本家の通りの作業なのであまり詳しく書きませんが、作業内容のメモを残しておきます。まずはストライプでのZFSの動きを見ます。<br /><blockquote><br />root@SRP:~# fdisk -l|grep Disk<br />Disk /dev/sda: 160.0 GB, 160041885696 bytes<br />Disk identifier: 0x4030e8a7<br />Disk /dev/sdb: 160.0 GB, 160041885696 bytes<br />Disk identifier: 0x4030e8ab<br />Disk /dev/sdc: 160.0 GB, 160041885696 bytes<br />Disk identifier: 0x4030e897<br />Disk /dev/sdd: 160.0 GB, 160041885696 bytes<br />Disk identifier: 0x4030e893<br />Disk /dev/sde: 160.0 GB, 160041885696 bytes<br />Disk identifier: 0xb7b441a9<br />Disk /dev/sdf: 160.0 GB, 160041885696 bytes<br />Disk identifier: 0x00000000<br />Disk /dev/sdg: 40.0 GB, 40020664320 bytes<br />Disk identifier: 0x000bca5f<br />root@SRP: ~ # zpool create ib /dev/sd{a,b,v,d,e,f}<br />^cannot resolve path &#039;/dev/sdv&#039;<br />root@SRP: ~ # zpool create ib /dev/sd{a,b,c,d,e,f}<br />root@SRP: ~ # zpool list<br />NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT<br />ib 894G 127K 894G 0% 1.00x ONLINE -<br />root@SRP:~# targetcli<br />Welcome to the targetcli shell:<br /><br />Copyright (c) 2011 by RisingTide Systems LLC.<br /><br />Visit us at <a href="http://www.risingtidesystems.com." >http://www.risingtidesystems.com.</a><br /><br />Loaded iscsi_target_mod kernel module.<br />Created &#039;/sys/kernel/config/target/iscsi&#039;.<br />Done loading iscsi fabric module.<br />Loaded tcm_loop kernel module.<br />Created &#039;/sys/kernel/config/target/loopback&#039;.<br />Done loading loopback fabric module.<br />Loaded ib_srpt kernel module.<br />Created &#039;/sys/kernel/config/target/srpt&#039;.<br />Done loading ib_srpt fabric module.<br />Loaded tcm_qla2xxx kernel module.<br />Created &#039;/sys/kernel/config/target/qla2xxx&#039;.<br />Done loading qla2xxx fabric module.<br />Loaded tcm_fc kernel module.<br />Created &#039;/sys/kernel/config/target/fc&#039;.<br />Done loading tcm_fc fabric module.<br />/&gt; ls /<br />o- / ................................................................................................... [...]<br />o- backstores ........................................................................................ [...]<br />| o- fileio ............................................................................. [0 Storage Object]<br />| o- iblock ............................................................................. [0 Storage Object]<br />| o- pscsi .............................................................................. [0 Storage Object]<br />| o- rd_dr .............................................................................. [0 Storage Object]<br />| o- rd_mcp ............................................................................. [0 Storage Object]<br />o- ib_srpt ...................................................................................... [0 Target]<br />o- iscsi ........................................................................................ [0 Target]<br />o- loopback ..................................................................................... [0 Target]<br />o- qla2xxx ...................................................................................... [0 Target]<br />o- tcm_fc ....................................................................................... [0 Target]<br /><br />/&gt; backstores/fileio create zfs_srp /ib/zfs_srp size=10G<br />Generating a wwn serial.<br />Not using buffered mode.<br />Created fileio zfs_srp.<br />Entering new node /backstores/fileio/zfs_srp<br />/backstores/fileio/zfs_srp&gt; cd /ib_srpt<br />/ib_srpt&gt; create 0xfe800000000000000019bbffff00d8c<br />0xfe800000000000000019bbffff00d8c5 0xfe800000000000000019bbffff00d8c6<br />.................wwn<br />/ib_srpt&gt; create 0xfe800000000000000019bbffff00d8c5<br />Created target 0xfe800000000000000019bbffff00d8c5.<br />Entering new node /ib_srpt/0xfe800000000000000019bbffff00d8c5<br />/ib_srpt/0xfe...ff00d8c5/luns&gt; create /backstores/fileio/zfs_srp<br />Selected LUN 0.<br />Successfully created LUN 0.<br />Entering new node /ib_srpt/0xfe800000000000000019bbffff00d8c5/luns/lun0<br />/ib_srpt/0xfe...8c5/luns/lun0&gt;<br />/ib_srpt/0xfe...8c5/luns/lun0&gt; cd ../../<br />/ib_srpt/0xfe...9bbffff00d8c5&gt; acls/ create 0x0019bbffff00d8c4001a4bffff0c012c<br />Successfully created Node ACL for 0x0019bbffff00d8c4001a4bffff0c012c<br />Created mapped LUN 0.<br />Entering new node /ib_srpt/0xfe800000000000000019bbffff00d8c5/acls/0x0019bbffff00d8c4001a4bffff0c012c<br />/ib_srpt/0xfe...a4bffff0c012c&gt; cd /<br />/&gt; saveconfig<br />WARNING: Saving SRP current configuration to disk will overwrite your boot settings.<br />The current target configuration will become the default boot config.<br />Are you sure? Type &#039;yes&#039;: yes<br />Making backup of fc/ConfigFS with timestamp: 2013-05-11_23:48:52.464843<br />Successfully updated default config /etc/target/fc_start.sh<br />Making backup of qla2xxx/ConfigFS with timestamp: 2013-05-11_23:48:52.464843<br />Successfully updated default config /etc/target/qla2xxx_start.sh<br />Making backup of srpt/ConfigFS with timestamp: 2013-05-11_23:48:52.464843<br />Successfully updated default config /etc/target/srpt_start.sh<br />Making backup of loopback/ConfigFS with timestamp: 2013-05-11_23:48:52.464843<br />Successfully updated default config /etc/target/loopback_start.sh<br />Making backup of LIO-Target/ConfigFS with timestamp: 2013-05-11_23:48:52.464843<br />Generated LIO-Target config: /etc/target/backup/lio_backup-2013-05-11_23:48:52.464843.sh<br />Making backup of Target_Core_Mod/ConfigFS with timestamp: 2013-05-11_23:48:52.464843<br />Generated Target_Core_Mod config: /etc/target/backup/tcm_backup-2013-05-11_23:48:52.464843.sh<br />Successfully updated default config /etc/target/lio_start.sh<br />Successfully updated default config /etc/target/tcm_start.sh<br />/&gt; exit</blockquote><br /><br />　その結果です。(ZFS=ディスク6枚のストライプ )<br /><a href=images/ZFS_over_SRP_stripe.PNG class=lb><img src=images/ZFS_over_SRP_stripe.PNG width=500px></a><br><br /><br />　読み込みはまあいいとして、ディスクへの書き込みがだいぶぶれますね。もっとも、ZFSそのものが複雑な書き込みをしているので仕方ないのかもしれませんが。<br /><br />　次に、raidzの性能を見ます。<br /><br />　<blockquote>root@SRP:~# zpool destroy ib<br />root@SRP:~# zpool create ib raidz /dev/sd{a,b,c,d,e,f}<br />root@SRP:~# zpool status<br />pool: ib<br />state: ONLINE<br />scan: none requested<br />config:<br /><br />NAME STATE READ WRITE CKSUM<br />ib ONLINE 0 0 0<br />raidz1-0 ONLINE 0 0 0<br />sda ONLINE 0 0 0<br />sdb ONLINE 0 0 0<br />sdc ONLINE 0 0 0<br />sdd ONLINE 0 0 0<br />sde ONLINE 0 0 0<br />sdf ONLINE 0 0 0<br /><br />errors: No known data errors<br />root@SRP:~#<br /></blockquote><br /><br />　その結果です。<br /><a href=images/ZFS_over_SRP_RAIDZ.PNG class=lb><img src=images/ZFS_over_SRP_RAIDZ.PNG width=500px></a><br><br /><br />　読み込みはキャッシュが効いている為一定ですが、書き込みはかなりぶれています。まあ、これはSRPというよりはZFSの動きですが。。<br />　このブレをどうにかなくせないかと、create buffered=trueでLUNを作ってみたり、emurate_write_cache=1にしてみたり、zpool add log でSSDをキャッシュとして追加したり、zfs set sync=disabledという禁忌を犯してみたり…など、いろいろしてみたのですが、大きく改善することはありませんでした。というか、ZFSonLinuxではlogデバイスがあまり使われていないようにみえます。sync=alwaysにするとものすごい勢いでlogデバイスにアクセスしますが、standardにしている限りはあまり大きなアクセスはlogデバイスに対してはありませんでした。LIO側のFileIO時のO_SYNCが無視され非同期書き込みになっている…？<br /><br />　この落ち込みの問題は、iotopやatopをしてみると確かにRAIDZのメンバーディスクには常に負荷がかかっていたので、RAIDコントローラで側で大容量メモリを積んだら多少は隠蔽できるのでしょうか。まあ、用途としては書き込みよりも読み込みの方が多いので、何とかなりそうな気もしますが。後日、実稼働予定マシンで同じ構成をとり、もう少し様子を見てみようと思います。]]></summary>
		<updated>2013-05-13T04:14:36Z</updated>
	</entry>
	<entry>
		<title>【HW】Infiniband HCAの性能について</title>
		<link href="http://xmms.jp/blog/index.php?entry=entry121216-095941" />
		<link rel="alternate" type="text/html" href="http://xmms.jp/blog/index.php?entry=entry121216-095941" />
		<link rel="edit" href="http://xmms.jp/blog/index.php?entry=entry121216-095941" />
		<id>http://xmms.jp/blog/index.php?entry=entry121216-095941</id>
		<summary type="html"><![CDATA[　Inifinihost世代のHCAとConnectX世代のHCAでどの程度差があるのか知りたかったので、<a href="https://twitter.com/hanakara_milk" >@hanakara_milk</a>さんに借りてみました。ありがとうございます。今更Infinihostを誰が買うのか知りませんが、俺得なベンチを取ってみました。<br /><br /><br />　そして並ぶHCA達。LPブラケットなのがDDRなHCAで、MHRH19-XTCです。FHなHCAはMHQH19-XTCで、QDRです。どちらもコネクタがQSFPなのですが、コネクタについているヒートシンクが中々にごついです。<br /><br /><a href=images/IMG_0140_R.JPG class=lb><img src=images/IMG_0140_R.JPG width=500px></a><br><br /><br />　Infinihost IIIがかわいく見えます。また、ConnectXは基板の表面がマット仕上げになっていて、高級感があります。<br /><br /><a href=images/IMG_0141_R.JPG class=lb><img src=images/IMG_0141_R.JPG width=500px></a><br><br /><br />　InfinihostとConnectXとの大きな違いは、PCI-E 2.0に対応しているかどうかだと思います。追加された機能は以下の通りです。<br /><br /><br /><blockquote>    1.2us MPI ping latency<br />    10, 20, or 40Gb/s InfiniBand ports<br />    IBTA version 1.2.1 compatible<br />    PCI Express 2.0 (up to 5GT/s)<br />    CPU offload of transport operations<br />    End-to-end QoS and congestion control<br />    Hardware-based I/O virtualization<br />    TCP/UDP/IP stateless offload</blockquote><br /><br />　これのOffload系の機能がどこまで効いてくるのか気になります。<br /><br />　今回の実験機材も<a href="comments.php?y=12&amp;m=11&amp;entry=entry121129-050826" >前回</a>の通り、X58マザーボードを利用します。構成は以下の通りです。<br /><br /><table border=1>
 <tr>
  <td>マシン名</td>
  <td>ibhack(SRP Target,SM)</td>
  <td>ib0(Windows 7)</td>
</tr>
<tr>
  <td>M/B</td>
  <td>RampageII Gene</td>
  <td>LanpartyUT X58 T3eH8</td>
 </tr>
<tr>
  <td>CPU</td>
  <td>Xeon X5647@166*22=3.66GHz</td>
  <td>Core i7 920@166*20=3.32GHz</td>
 </tr>
<tr>
  <td>Memory</td>
  <td>24GB@DDR3 1333</td>
  <td>12GB@1666</td>
 </tr>
 </table><br /><br /><br /><h2>実験方法</h2><br />　	perftest-2.0-0.8.gaeb562e.tar.gzを<a href="http://www.openfabrics.org/downloads/perftest/" >ここ</a>から落とし、Debian上でコンパイルしたものをib_send_bw -aで実行し、まずRDMAの生の転送速度をみます。次に、Windows7を立ち上げ、ramfs上に作ったfileioなSRP Targetに接続して、ファイルシステムを書く前の生のHDDに対してHDtuneをかけてみます。接続は1対1のP2Pで、HCAは両方とも同じ型のものを挿して接続しています。<br /><br /><h2>ib_send_bw</h2><br />　CPUの速度がOCで規定より高い為、-FオプションをつけてCPUの周波数がデフォルトと違っても無視する必要がありました。<br /><br /><h3>MT25204(InfinihostIII LX DDR) ibhack-&gt;ib0</h3><br /><blockquote>---------------------------------------------------------------------------------------<br />                    Send BW Test<br /> Dual-port       : OFF		Device : mthca0<br /> Number of qps   : 1<br /> Connection type : RC<br /> TX depth        : 128<br /> CQ Moderation   : 100<br /> Mtu             : 2048B<br /> Link type       : IB<br /> Max inline data : 0B<br /> rdma_cm QPs	 : OFF<br /> Data ex. method : Ethernet<br />---------------------------------------------------------------------------------------<br /> local address: LID 0x05 QPN 0x70405 PSN 000000<br /> remote address: LID 0x06 QPN 0x60405 PSN 000000<br />---------------------------------------------------------------------------------------<br /> #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]<br /> 2          1000           2.19               1.91   		   1.000191<br /> 4          1000           4.37               4.13   		   1.082352<br /> 8          1000           8.78               8.30   		   1.087476<br /> 16         1000           17.62              16.67  		   1.092480<br /> 32         1000           35.25              33.54  		   1.098929<br /> 64         1000           70.06              67.71  		   1.109355<br /> 128        1000           140.61             135.66 		   1.111329<br /> 256        1000           281.13             271.14 		   1.110589<br /> 512        1000           558.75             532.13 		   1.089795<br /> 1024       1000           1007.01            960.94 		   0.984002<br /> 2048       1000           1160.50            1157.49		   0.592635<br /> 4096       1000           1298.67            1293.89		   0.331235<br /> 8192       1000           1393.80            1384.57		   0.177225<br /> 16384      1000           1447.22            1441.83		   0.092277<br /> 32768      1000           1475.98            1473.18		   0.047142<br /> 65536      1000           1490.27            1488.80		   0.023821<br /> 131072     1000           1496.89            1496.11		   0.011969<br /> 262144     1000           1465.14            1464.76		   0.005859<br /> 524288     1000           1462.32            1462.18		   0.002924<br /> 1048576    1000           1463.59            1463.05		   0.001463<br /> 2097152    1000           1464.98            1464.95		   0.000732<br /> 4194304    1000           1465.13            1465.12		   0.000366<br /> 8388608    1000           1465.29            1465.27		   0.000183<br />---------------------------------------------------------------------------------------<br /></blockquote><br /><br /><h3>MT25204(InfinihostIII LX DDR) ib0-&gt;ibhack</h3><br /><blockquote>---------------------------------------------------------------------------------------<br />                    Send BW Test<br /> Dual-port       : OFF		Device : mthca0<br /> Number of qps   : 1<br /> Connection type : RC<br /> TX depth        : 128<br /> CQ Moderation   : 100<br /> Mtu             : 2048B<br /> Link type       : IB<br /> Max inline data : 0B<br /> rdma_cm QPs	 : OFF<br /> Data ex. method : Ethernet<br />---------------------------------------------------------------------------------------<br /> local address: LID 0x06 QPN 0x50405 PSN 000000<br /> remote address: LID 0x05 QPN 0x60405 PSN 000000<br />---------------------------------------------------------------------------------------<br /> #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]<br /> 2          1000           2.20               1.94   		   1.018915<br /> 4          1000           4.44               4.13   		   1.082365<br /> 8          1000           8.87               8.10   		   1.061957<br /> 16         1000           17.72              16.85  		   1.104403<br /> 32         1000           35.63              33.82  		   1.108241<br /> 64         1000           70.94              67.30  		   1.102591<br /> 128        1000           141.99             135.31 		   1.108476<br /> 256        1000           284.47             270.95 		   1.109794<br /> 512        1000           565.39             528.15 		   1.081643<br /> 1024       1000           1015.76            974.34 		   0.997726<br /> 2048       1000           1171.46            1150.30		   0.588952<br /> 4096       1000           1305.33            1300.87		   0.333023<br /> 8192       1000           1396.99            1388.36		   0.177710<br /> 16384      1000           1447.05            1441.62		   0.092264<br /> 32768      1000           1473.54            1470.63		   0.047060<br /> 65536      1000           1487.21            1485.64		   0.023770<br /> 131072     1000           1494.10            1493.36		   0.011947<br /> 262144     1000           1463.98            1463.65		   0.005855<br /> 524288     1000           1461.48            1461.28		   0.002923<br /> 1048576    1000           1462.79            1461.29		   0.001461<br /> 2097152    1000           1463.74            1463.68		   0.000732<br /> 4194304    1000           1464.00            1463.96		   0.000366<br /> 8388608    1000           1464.03            1464.02		   0.000183<br />---------------------------------------------------------------------------------------<br /></blockquote><br /><br /><br /><h3>MHRH19-XTC(ConnectX DDR)　ibhack-&gt;ib0</h3><br /><blockquote>---------------------------------------------------------------------------------------<br />                    Send BW Test<br /> Dual-port       : OFF		Device : mlx4_0<br /> Number of qps   : 1<br /> Connection type : RC<br /> TX depth        : 128<br /> CQ Moderation   : 100<br /> Mtu             : 2048B<br /> Link type       : IB<br /> Max inline data : 0B<br /> rdma_cm QPs	 : OFF<br /> Data ex. method : Ethernet<br />---------------------------------------------------------------------------------------<br /> local address: LID 0x04 QPN 0x2c0049 PSN 000000<br /> remote address: LID 0x01 QPN 0xe0049 PSN 000000<br />---------------------------------------------------------------------------------------<br /> #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]<br /> 2          1000           11.81              9.59   		   5.030067<br /> 4          1000           23.95              22.46  		   5.886616<br /> 8          1000           47.34              44.65  		   5.852200<br /> 16         1000           96.64              92.21  		   6.042951<br /> 32         1000           190.97             176.70 		   5.790027<br /> 64         1000           381.28             360.29 		   5.902996<br /> 128        1000           761.26             689.17 		   5.645716<br /> 256        1000           1379.21            1167.59		   4.782438<br /> 512        1000           1695.87            1612.81		   3.303040<br /> 1024       1000           1759.30            1755.97		   1.798111<br /> 2048       1000           1822.55            1820.07		   0.931877<br /> 4096       1000           1857.81            1855.12		   0.474910<br /> 8192       1000           1864.95            1864.32		   0.238633<br /> 16384      1000           1872.64            1872.20		   0.119821<br /> 32768      1000           1876.15            1875.89		   0.060028<br /> 65536      1000           1877.68            1877.57		   0.030041<br /> 131072     1000           1878.51            1878.46		   0.015028<br /> 262144     1000           1878.93            1878.89		   0.007516<br /> 524288     1000           1879.12            1879.10		   0.003758<br /> 1048576    1000           1879.25            1879.24		   0.001879<br /> 2097152    1000           1879.28            1879.28		   0.000940<br /> 4194304    1000           1879.30            1879.30		   0.000470<br /> 8388608    1000           1879.31            1879.31		   0.000235<br />---------------------------------------------------------------------------------------<br /></blockquote><br /><br /><h3>MHRH19-XTC(ConnectX DDR)　ib0-&gt;ibhack</h3><br /><blockquote>---------------------------------------------------------------------------------------<br />                    Send BW Test<br /> Dual-port       : OFF		Device : mlx4_0<br /> Number of qps   : 1<br /> Connection type : RC<br /> TX depth        : 128<br /> CQ Moderation   : 100<br /> Mtu             : 2048B<br /> Link type       : IB<br /> Max inline data : 0B<br /> rdma_cm QPs	 : OFF<br /> Data ex. method : Ethernet<br />---------------------------------------------------------------------------------------<br /> local address: LID 0x01 QPN 0x100049 PSN 000000<br /> remote address: LID 0x04 QPN 0x300049 PSN 000000<br />---------------------------------------------------------------------------------------<br /> #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]<br /> 2          1000           11.01              8.35   		   4.376276<br /> 4          1000           24.01              21.53  		   5.645092<br /> 8          1000           47.92              43.32  		   5.677919<br /> 16         1000           99.99              94.22  		   6.174486<br /> 32         1000           197.26             170.16 		   5.575723<br /> 64         1000           420.60             362.58 		   5.940512<br /> 128        1000           827.53             723.93 		   5.930408<br /> 256        1000           1441.21            1215.54		   4.978834<br /> 512        1000           1687.67            1613.57		   3.304601<br /> 1024       1000           1759.67            1756.59		   1.798751<br /> 2048       1000           1822.69            1820.74		   0.932218<br /> 4096       1000           1857.79            1854.94		   0.474865<br /> 8192       1000           1864.82            1864.18		   0.238615<br /> 16384      1000           1872.45            1871.97		   0.119806<br /> 32768      1000           1875.97            1875.69		   0.060022<br /> 65536      1000           1877.47            1877.36		   0.030038<br /> 131072     1000           1878.27            1878.22		   0.015026<br /> 262144     1000           1878.69            1878.66		   0.007515<br /> 524288     1000           1878.91            1878.89		   0.003758<br /> 1048576    1000           1879.01            1879.00		   0.001879<br /> 2097152    1000           1879.04            1879.04		   0.000940<br /> 4194304    1000           1879.06            1879.06		   0.000470<br /> 8388608    1000           1879.08            1879.08		   0.000235<br />---------------------------------------------------------------------------------------<br /></blockquote><br /><br /><br /><h3>MHQH19-XTC(ConnectX QDR)　ibhack-&gt;ib0</h3><br />念のため、QDRでリンクしているか確認します。<br /><blockquote><br />root@ibhack:~# cat /sys/class/infiniband/mlx4_0/ports/1/rate<br />40 Gb/sec (4X QDR)<br /></blockquote><br />QDRでリンクをしていることを確認したら続けます。<br /><br /><blockquote>---------------------------------------------------------------------------------------<br />                    Send BW Test<br /> Dual-port       : OFF		Device : mlx4_0<br /> Number of qps   : 1<br /> Connection type : RC<br /> TX depth        : 128<br /> CQ Moderation   : 100<br /> Mtu             : 2048B<br /> Link type       : IB<br /> Max inline data : 0B<br /> rdma_cm QPs	 : OFF<br /> Data ex. method : Ethernet<br />---------------------------------------------------------------------------------------<br /> local address: LID 0x02 QPN 0x6004b PSN 000000<br /> remote address: LID 0x03 QPN 0x6004b PSN 000000<br />---------------------------------------------------------------------------------------<br /> #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]<br /> 2          1000           10.19              8.98   		   4.707758<br /> 4          1000           24.20              23.00  		   6.030120<br /> 8          1000           47.50              40.02  		   5.245350<br /> 16         1000           98.17              91.88  		   6.021122<br /> 32         1000           191.62             162.56 		   5.326693<br /> 64         1000           388.57             372.22 		   6.098381<br /> 128        1000           795.13             752.70 		   6.166095<br /> 256        1000           1514.78            1320.79		   5.409956<br /> 512        1000           2204.01            1977.20		   4.049303<br /> 1024       1000           2482.58            2398.21		   2.455767<br /> 2048       1000           2631.52            2616.36		   1.339578<br /> 4096       1000           2751.52            2736.97		   0.700664<br /> 8192       1000           2824.35            2816.94		   0.360568<br /> 16384      1000           2847.69            2845.08		   0.182085<br /> 32768      1000           2868.25            2865.46		   0.091695<br /> 65536      1000           2879.71            2878.75		   0.046060<br /> 131072     1000           2883.73            2883.73		   0.023070<br /> 262144     1000           2885.55            2885.32		   0.011541<br /> 524288     1000           2886.20            2886.12		   0.005772<br /> 1048576    1000           2886.48            2886.42		   0.002886<br /> 2097152    1000           2886.62            2886.62		   0.001443<br /> 4194304    1000           2886.25            2886.25		   0.000722<br /> 8388608    1000           2886.30            2886.30		   0.000361<br />---------------------------------------------------------------------------------------<br /></blockquote><br /><br /><h3>MHQH19-XTC(ConnectX QDR)　ib0-&gt;ibhack</h3><br /><blockquote>---------------------------------------------------------------------------------------<br />                    Send BW Test<br /> Dual-port       : OFF		Device : mlx4_0<br /> Number of qps   : 1<br /> Connection type : RC<br /> TX depth        : 128<br /> CQ Moderation   : 100<br /> Mtu             : 2048B<br /> Link type       : IB<br /> Max inline data : 0B<br /> rdma_cm QPs	 : OFF<br /> Data ex. method : Ethernet<br />---------------------------------------------------------------------------------------<br /> local address: LID 0x03 QPN 0x40049 PSN 000000<br /> remote address: LID 0x02 QPN 0x40049 PSN 000000<br />---------------------------------------------------------------------------------------<br /> #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]<br /> 2          1000           11.01              8.29   		   4.345156<br /> 4          1000           23.18              21.17  		   5.549494<br /> 8          1000           49.80              44.45  		   5.826456<br /> 16         1000           103.02             89.88  		   5.890369<br /> 32         1000           197.64             170.98 		   5.602656<br /> 64         1000           407.96             288.48 		   4.726448<br /> 128        1000           883.17             829.98 		   6.799235<br /> 256        1000           1539.28            1287.57		   5.273906<br /> 512        1000           2162.77            1979.89		   4.054805<br /> 1024       1000           2488.24            2401.56		   2.459200<br /> 2048       1000           2630.96            2616.39		   1.339592<br /> 4096       1000           2753.86            2739.81		   0.701390<br /> 8192       1000           2827.36            2820.18		   0.360983<br /> 16384      1000           2851.47            2848.96		   0.182333<br /> 32768      1000           2872.24            2871.94		   0.091902<br /> 65536      1000           2883.48            2882.69		   0.046123<br /> 131072     1000           2887.11            2886.78		   0.023094<br /> 262144     1000           2889.60            2889.35		   0.011557<br /> 524288     1000           2890.00            2889.98		   0.005780<br /> 1048576    1000           2890.62            2890.60		   0.002891<br /> 2097152    1000           2891.04            2891.03		   0.001446<br /> 4194304    1000           2890.65            2890.65		   0.000723<br /> 8388608    1000           2890.60            2890.60		   0.000361<br />---------------------------------------------------------------------------------------<br /></blockquote><br /><br /><h3>ib_send_bwまとめ</h3><br />　Infinihostでは 1493.36MB/s(11.66Gbps)が最大値だったのに対し、同じDDRでもConnectXでは1879.31MB/s(14.68Gbps)出ていました。理論値最大が16Gbpsなので、ConnectXではDDRの最大値近く出ていると思います。また、Infinihostではメッセージサイズが 131072Byteから若干下がっているのに対し、ConnectXでは下がることはありませんでした。<br />　ConnectXのQDRでは 2890.60MB/s(22.58Gbps)が最大値で、理論値最大の32Gbpsまではまだ遠いように思われます。というか、40Gb/sの8割となると8Gb/sもオーバーヘッドがあるんですね…。もったいないお化けが出てきそうです。FDRからは8b/10bエンコーディングではなく64/66bエンコードなので9.7割まで使えるようになり、かなりオーバーヘッドは削られていますが…。<br /><br /><h2>SRPでの転送速度</h2><br />　SRPですが、最初は/dev/ram0に対してBlockIOでアクセスしていたのですが、QDRでBlockIOを使うと何故か書き込みをするとbrdモジュールがCalltrace吐いて死んでしまいました。DDRではConnectXでBlockIOでアクセスしても問題は起きなかったので、詳しい原因はよく分からないのですが、ramfsにDDで書いたファイルに対してFileIOを発行しても大丈夫だったので、SCSTはvdisk_FileIOを利用しています。<br /><br /><h3>MT25204(InfinihostIII LX DDR)</h3><br /><a href=images/ib_srp_infinihost_ddr.PNG class=lb><img src=images/ib_srp_infinihost_ddr.PNG width=500px></a><br><br /><br /><h3>MHRH19-XTC(ConnectX DDR)</h3><br /><a href=images/ib_srp_connectx_ddr.PNG class=lb><img src=images/ib_srp_connectx_ddr.PNG width=500px></a><br><br /><br /><h3>MHQH19-XTC(ConnectX QDR)</h3><br /><a href=images/ib_srp_connectx_qdr.PNG class=lb><img src=images/ib_srp_connectx_qdr.PNG width=500px></a><br><br /><br /><h3>まとめ</h3><br />　RamdomIOに関しては、計測する度にかなりぶれるのであまり参考にはならないのですが、ConnectXはDDRでもQDRでも512byteのアクセスタイムが大体0.03-0.05msなのに対して、Infinihostでは0.05-0.09msくらいかかっていたので、やはり世代の差はかなりあります。また、その速度が出るストレージが現存しないものの最大値がQDRの32Gbpsに対して17Gbps程度なので、もう少しチューニングできそうな気がします。ターゲット側でdd if=/dev/zero of=/a/ram.img bs=1M count=10000 としたときに、大体4GB/s程度だったので、もしかしたらramfsというかOSがRAMにファイルシステムとしてアクセスすると言うのがもうネックなのかもしれませんが。<br /><br /><h2>おまけ QDR Infiniband上でのiperf</h2><br />　まずLinuxマシンでconnedted modeを使わずに、mtu2022の状態で転送します。<br /><blockquote>---------------------------------------------------------------------------------------<br />root@ibhack:~/perftest-2.0# iperf -c 10.1.1.2 -i 1<br />------------------------------------------------------------<br />Client connecting to 10.1.1.2, TCP port 5001<br />TCP window size: 28.8 KByte (default)<br />------------------------------------------------------------<br />[  3] local 10.1.1.1 port 36843 connected with 10.1.1.2 port 5001<br />[ ID] Interval       Transfer     Bandwidth<br />[  3]  0.0- 1.0 sec  1.39 GBytes  11.9 Gbits/sec<br />[  3]  1.0- 2.0 sec  1.14 GBytes  9.75 Gbits/sec<br />[  3]  2.0- 3.0 sec  1.37 GBytes  11.8 Gbits/sec<br />[  3]  3.0- 4.0 sec  1.40 GBytes  12.1 Gbits/sec<br />[  3]  4.0- 5.0 sec  1.41 GBytes  12.1 Gbits/sec<br />[  3]  5.0- 6.0 sec  1.41 GBytes  12.1 Gbits/sec<br />[  3]  6.0- 7.0 sec  1.41 GBytes  12.1 Gbits/sec<br />[  3]  7.0- 8.0 sec  1.41 GBytes  12.1 Gbits/sec<br />[  3]  8.0- 9.0 sec  1.40 GBytes  12.0 Gbits/sec<br />[  3]  0.0-10.0 sec  13.7 GBytes  11.8 Gbits/sec<br /></blockquote><br /><br />　次に、ConnectedModeにして、MTUを65520にした状態でテストしてみます。チューニング無しでも10G以上出てるので十分と言えば十分ですが…。<br /><br /><blockquote>root@ibhack:~/perftest-2.0# echo &quot;connected&quot;&gt;/sys/class/net/ib0/mode<br />root@ibhack:~/perftest-2.0# ifconfig ib0 mtu 65520<br /><br />root@ibhack:~/perftest-2.0# iperf -c 10.1.1.2 -i 1<br />------------------------------------------------------------<br />Client connecting to 10.1.1.2, TCP port 5001<br />TCP window size:  649 KByte (default)<br />------------------------------------------------------------<br />[  3] local 10.1.1.1 port 36844 connected with 10.1.1.2 port 5001<br />[ ID] Interval       Transfer     Bandwidth<br />[  3]  0.0- 1.0 sec  2.43 GBytes  20.9 Gbits/sec<br />[  3]  1.0- 2.0 sec  2.41 GBytes  20.7 Gbits/sec<br />[  3]  2.0- 3.0 sec  2.41 GBytes  20.7 Gbits/sec<br />[  3]  3.0- 4.0 sec  2.40 GBytes  20.6 Gbits/sec<br />[  3]  4.0- 5.0 sec  2.40 GBytes  20.6 Gbits/sec<br />[  3]  5.0- 6.0 sec  2.40 GBytes  20.6 Gbits/sec<br />[  3]  6.0- 7.0 sec  2.40 GBytes  20.6 Gbits/sec<br />[  3]  7.0- 8.0 sec  2.40 GBytes  20.6 Gbits/sec<br />[  3]  8.0- 9.0 sec  2.38 GBytes  20.4 Gbits/sec<br />[  3]  9.0-10.0 sec  2.41 GBytes  20.7 Gbits/sec<br />[  3]  0.0-10.0 sec  24.0 GBytes  20.6 Gbits/sec<br /></blockquote><br />　このテストはLinuxマシン上からの結果ですが、Windows上からでも同じような値がでました。<br /><br /><br /><h2>まとめ</h2><br />　PCI-Eが2.0対応になったからなのか、各Offload機能が機能したからなのか、やはりInfinihostよりもConnectXの方が総じていいです。ConnectXの方が熱を持つのが気になるところでしょうか。<br /><br />　色々IBのテストをしてみましたが、転送速度的にも扱い的にも(DebianのようなOFEDを入れられない環境だと扱いにかなり癖があるものの)悪くないので、そろそろ総IB化したいなあと思います。が、そんな資金はないので後回しですが…。<br />　あとはConnectX2以降のHCAでどのように変わったか、FDRで本気の転送したらどうなるのか、と言うのも気になります。なんでFDRの機材にさわれた前回のIBHackでこの前知識を持っていかなかったのか…非常にもったいないことをしました。まあ、あそこに行ったからこそなんか動きそうだと思ってHCAを買ってみたのですが。<br />]]></summary>
		<updated>2012-12-16T00:59:41Z</updated>
	</entry>
	<entry>
		<title>DebianにSCSTをいれてWindows7とLinuxからSRPで接続してみる</title>
		<link href="http://xmms.jp/blog/index.php?entry=entry121210-201131" />
		<link rel="alternate" type="text/html" href="http://xmms.jp/blog/index.php?entry=entry121210-201131" />
		<link rel="edit" href="http://xmms.jp/blog/index.php?entry=entry121210-201131" />
		<id>http://xmms.jp/blog/index.php?entry=entry121210-201131</id>
		<summary type="html"><![CDATA[　SRP転送そのものはもっと前に出来ていたのですが、力尽きて書く気力がありませんでした。ですが、気が向いたので自分用の備忘録と情報共有としてメモします。どこかでSubnetManagerが動いている前提で進みます。貼り付けが多いので長いです。<br /><br /><br /><h2>カーネルの入手</h2><br />　本来であれば、自分でscstに対応したカーネルを作らないといけないのですが、すでにビルド済みの物が配布されているのでそれを使わせて頂きます。<br /> /etc/apt/sources.listに以下を追加します。<br /><br /><blockquote>vi /etc/apt/sources.list<br />deb <a href="http://www.motschke.de/debian/" >http://www.motschke.de/debian/</a> stable main<br />---略---</blockquote><br /><br />追記が終わったらレポジトリのアップデートをします<br /><br /><blockquote>root@ibhack:~# apt-get update<br />Hit <a href="http://ftp.jp.debian.org" >http://ftp.jp.debian.org</a> testing InRelease<br />Hit <a href="http://ftp.jp.debian.org" >http://ftp.jp.debian.org</a> testing/main Sources/DiffIndex<br />Hit <a href="http://ftp.jp.debian.org" >http://ftp.jp.debian.org</a> testing/main amd64 Packages/DiffIndex<br />Hit <a href="http://ftp.jp.debian.org" >http://ftp.jp.debian.org</a> testing/main Translation-en/DiffIndex<br />Ign <a href="http://www.motschke.de" >http://www.motschke.de</a> stable InRelease<br />Ign <a href="http://www.motschke.de" >http://www.motschke.de</a> stable Release.gpg<br />Get:1 <a href="http://www.motschke.de" >http://www.motschke.de</a> stable Release [96 B]<br />Get:2 <a href="http://www.motschke.de" >http://www.motschke.de</a> stable/main amd64 Packages [5,935 B]<br />Ign <a href="http://www.motschke.de" >http://www.motschke.de</a> stable/main Translation-en_US<br />Ign <a href="http://www.motschke.de" >http://www.motschke.de</a> stable/main Translation-en<br />Fetched 6,031 B in 11s (536 B/s)<br />Reading package lists... Done<br /></blockquote><br /><br />　または、ここから必要なものを取ってきてdpkg -iします。<br /><a href="http://www.motschke.de/debian/packages/stable/" >http://www.motschke.de/debian/packages/stable/</a><br /><br />kernel/linux-image-3.2.21-scst-2.2.x-amd64_1.1_amd64.deb<br />SCST/scst-modules-3.2.21-scst-2.2.x-amd64_3.2.21-scst-2.2.x-amd64-1.0_amd64.deb<br />SCST/iscsi-scst_2.2-1.1_amd64.deb<br /><br />これらが必要です。<br /><br />　これでapt-get install をすればいいのですが、scstを入れるとscst組み込みカーネルになるので、自分でカスタマイズしてカーネルを作っている人は注意です。まあそんなことをしてる人はわざわざこんなところ見ないと思いますが…。<br /><br /><blockquote>root@ibhack:~# apt-get install iscsi-scst<br />---中略---<br />Setting up scst-modules-3.2.21-scst-2.2.x-amd64 (3.2.21-scst-2.2.x-amd64-1.0) ...<br /></blockquote><br /><br />　すると、ごりごりとinitramfs等のアップデートが行われるので、再起動してscst組み込み済みカーネルになっているか確認します。<br /><br /><blockquote>root@ibhack:~# uname -r<br />3.2.21-scst-2.2.x-amd64</blockquote><br /><br /><h2>SCSTの設定</h2><br />　scst組み込み済みカーネルでマシンが無事に上がってきたら、カーネルに組み込まれたscstドライバをロードします。一応、ファイルがあるか確認します。<br /><blockquote>root@ibhack:~# modinfo scst_vdisk<br />filename:       /lib/modules/3.2.21-scst-2.2.x-amd64/extra/dev_handlers/scst_vdisk.ko<br />version:        2.2.1-pre<br />description:    SCSI disk (type 0) and CDROM (type 5) dev handler for SCST using files on file systems or block devices<br />license:        GPL<br />author:         Vladislav Bolkhovitin &amp; Leonid Stoljar<br />srcversion:     B0EEADC040B8E1E80F57A67<br />depends:        scst,libcrc32c<br />vermagic:       3.2.21-scst-2.2.x-amd64 SMP mod_unload modversions<br />parm:           num_threads:vdisk threads count (int)</blockquote><br /><br />ファイルがあることを確認したらドライバをロードします。<br /><blockquote>root@ibhack:~# modprobe scst<br />root@ibhack:~# modprobe scst_vdisk<br />root@ibhack:~# modprobe ib_srp<br />root@ibhack:~# modprobe ib_srpt</blockquote><br /><br />そうしたらscstadminと言うコマンドを実行するのですが、何故か自分の環境だとSCST.pmがないと言われ実行できませんでした。<br /><br /><blockquote>root@ibhack:~# scstadmin<br />Can&#039;t locate SCST/SCST.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/sbin/scstadmin line 238.<br />BEGIN failed--compilation aborted at /usr/sbin/scstadmin line 238.</blockquote><br /><br />調べてみると、perlのバージョンが5.14なのに対してSCST.pmが入ってるのが5.10のディレクトリになっているのが原因でした。<br /><br /><blockquote>root@ibhack:~# find /usr/ -name &quot;*SCST*&quot;<br />/usr/local/lib/perl/5.10.1/auto/SCST-SCST<br />/usr/local/share/man/man3/SCST::SCST.3pm.gz<br />/usr/local/share/perl/5.10.1/SCST<br />/usr/local/share/perl/5.10.1/SCST/SCST.pm</blockquote><br /><br />　今回はSCST以下があればいいので、ディレクトリにシンボルリンクを張るか、export PERL5LIBをしてライブラリパスを追加します。5.14でも5.10のライブラリは動きました。これでエラーメッセージが出なければOKです。多分。<br /><blockquote>root@ibhack:~# ln -s /usr/local/share/perl/5.10.1/SCST/ /usr/lib/perl/5.14/SCST<br />(または)#export PERL5LIB=/usr/local/share/perl/5.10.1/<br />root@ibhack:~# scstadmin<br /><br />Collecting current configuration: done.<br /><br />No valid operations specified.<br /></blockquote><br /><br /><h2>SCSTadminの初期設定</h2><br />　scstadminを使ってLUNを作っていくわけですが、慣れるまで少々分かりづらいです。今回は、まずramfsでメモリに10Gの領域を確保して、そこに10G分DDをして、fileioなイメージを作ります。<br /><blockquote>root@ibhack:~# mount -t ramfs -o size=10G ramfs /a<br />root@ibhack:~#  dd if=/dev/zero of=/a/10G.img bs=1M count=10000</blockquote><br /><br />次に、SCSTのドライバにib_srptが登録されているか確認します。無ければ、modprobe ib_srptしてください。<br /><br /><blockquote>root@ibhack:~# scstadmin -list_driver<br /><br />Collecting current configuration: done.<br /><br />        Driver<br />        -------<br />        ib_srpt<br /><br />All done.</blockquote><br /><br />次に、scst_vdiskがscstadmからみえているか確認します。無ければ、modprobe scst_vdiskしてください。<br /><br /><blockquote>root@ibhack:~# scstadmin -list_handler<br /><br />Collecting current configuration: done.<br /><br />        Handler<br />        -------------<br />        vdisk_fileio<br />        vdisk_blockio<br />        vdisk_nullio<br />        vcdrom<br /><br />All done.</blockquote><br /><br />ramと言う名前のデバイスを作りfileioでアクセスするようにしています。<br /><br /><blockquote>root@ibhack:/ib# scstadmin -open_dev ram -handler vdisk_fileio -attributes filename=/a/10G.img<br /><br />Collecting current configuration: done.<br /><br /><br />-&gt; Making requested changes.<br />        -&gt; Opening device &#039;ram&#039; using handler &#039;vdisk_fileio&#039;: done.<br />        -&gt; Done.<br /><br />All done.</blockquote><br /><br />デバイスが追加されたか確認します。<br /><br /><blockquote>root@ibhack:/ib# scstadmin -list_devi<br /><br />Collecting current configuration: done.<br /><br />        Handler           Device<br />        ---------------------<br />        vdisk_nullio     -<br />        vdisk_fileio     ram<br />        vdisk_blockio    -<br />        vcdrom           -<br /><br />All done.</blockquote><br /><br />現在あるターゲットポータルを確認します。<br /><br /><blockquote>root@ibhack:/ib# scstadmin -list_targ<br /><br />Collecting current configuration: done.<br /><br />        Driver  Target<br />        ------------------------<br />        ib_srpt ib_srpt_target_0<br /><br />All done.<br /></blockquote><br /><br />このターゲットにibhack_srpという名前のグループを作ります。<br /><br /><blockquote>root@ibhack:/ib# scstadmin -add_group ibhack_srp -driver ib_srpt -target ib_srpt_target_0<br /><br />Collecting current configuration: done.<br /><br /><br />-&gt; Making requested changes.<br />        -&gt; Adding new group &#039;ibhack_srp&#039; to driver/target &#039;ib_srpt/ib_srpt_target_0&#039;: done.<br />        -&gt; Done.<br /><br />All done.<br /></blockquote><br /><br />Lun0にib_srpt_target_0ポータルのibhack_srpグループのramと言うデバイスを関連づけ、readonly=0でマウントします。<br /><br /><blockquote>root@ibhack:/ib# scstadmin -add_lun 0 -driver ib_srpt -target ib_srpt_target_0 -group ibhack_srp -device ram -attributes read_only=0<br /><br />Collecting current configuration: done.<br /><br /><br />-&gt; Making requested changes.<br />        -&gt; Adding device &#039;ram&#039; at LUN 0 to driver/target/group &#039;ib_srpt/ib_srpt_target_0/ibhack_srp&#039;: done.<br />        -&gt; Driver/target is not a fibre channel target, ignoring.<br />        -&gt; Done.<br /><br />All done.</blockquote><br /><br />こうすると、/var/log/systemまたはdmesgにデバイスをアタッチしたよ！と言うメッセージが来ます。(貼り付けたメッセージはdmesg)<br /><br /><blockquote>[17715.372975] dev_vdisk: Registering virtual vdisk_fileio device ram<br />[17715.372999] dev_vdisk: Attached SCSI target virtual disk ram (file=&quot;/a/10G.img&quot;, fs=10000MB, bs=512, nblocks=20480000, cyln=10000)<br />[17715.373053] scst: Attached to virtual device ram (id 2)<br />[18180.879669] scst: Added device ram to group ibhack_srp (LUN 0, rd_only 0)</blockquote><br /><br /><br />Fileioに使うパスなどを間違えていないことを確認したら、ターゲットを有効化します。<br /><br /><blockquote>root@ibhack:/ib# scstadmin -enable_target ib_srpt_target_0 -driver ib_srpt<br /><br />Collecting current configuration: done.<br /><br /><br />-&gt; Making requested changes.<br />        -&gt; Enabling driver/target &#039;ib_srpt/ib_srpt_target_0&#039;: done.<br />        -&gt; Done.<br /><br />All done.</blockquote><br />ここで、tailf (or tail -F)/var/log/systemをした状態でターミナルを開いておき、一旦target側を離れます。<br /><br /><h2>Windows SRP Initiatorの設定</h2><br />　Initiator側として、まずWindows7から接続してみます。OFED For Windowsを<a href="http://www.openfabrics.org/downloads/Windows/v3.1/" >ここ</a>からダウンロードし、インストールするときにSRPパッケージを入れます。<br /><br /><a href=images/SRP_OFED.png class=lb><img src=images/SRP_OFED.png ></a><br><br /><br />　すると、デバイスマネージャにInfiniband SRP miniportというのが追加されます。この段階では！マークがついていますが、これはターゲットにログインできない為についてるものです。！がつく場合は、scstadmin -enable_targetをしていないか、SMが起動していないか、ケーブルが繋がっていないと思われます。原因を特定した後、SRP miniportを無効化して有効にすると再接続しに行きます。<br /><br /><a href=images/SRP_OFED_miniport.png  class=lb><img src=images/SRP_OFED_miniport.png  width=500px></a><br><br /><br />　SRP miniportを入れたら、SCSTに戻ります。<br /><br /><h2>SCSTに接続するイニシエーターの追加</h2><br /><br />　SCSTに戻ったら、Miniportドライバを有効にしたタイミングでtailfしているターミナルに何かが流れると思います。よく分からなかったら、Windows側に戻りSRP　Miniportドライバを無効にしたり有効にしたりしてみてください。すると、以下のようになります。<br /><blockquote>Dec 10 14:57:45 ibhack kernel: [28606.571026] ib_srpt: Received SRP_LOGIN_REQ with i_port_id 0x5ad00000bf4d4:0x5ad00000bf3d0, t_port_id 0x5ad00000bf4d4:0x5ad00000bf4d4 and it_iu_len 4148 on port 1 (guid=0xfe80000000000000:0x5ad00000bf4d5)<br />Dec 10 14:57:45 ibhack kernel: [28606.571898] scst: Using security group &quot;ib_srpt_target_0&quot; for initiator &quot;0x0005ad00000bf4d40005ad00000bf3d0&quot; (target ib_srpt_target_0)<br />Dec 10 14:57:45 ibhack kernel: [28606.572222] ib_srpt: Received IB MRA event</blockquote><br /><br />この、真ん中にある<br /><blockquote>initiator &quot;0x0005ad00000bf4d40005ad00000bf3d0”</blockquote><br /><br />と言うのが、接続しようとしているイニシエーターIDです。これをコピーします。<br /><br />　接続するイニシエーターIDが分かったら、add_initでそれをscstに追加します。<br /><blockquote>root@ibhack:/ib# scstadmin -add_init  0x0005ad00000bf4d40005ad00000bf3d0 -driver ib_srpt -target ib_srpt_targe<br />t_0 -group ibhack_srp<br /><br />Collecting current configuration: done.<br /><br /><br />-&gt; Making requested changes.<br />        -&gt; Adding new initiator &#039;0x0005ad00000bf4d40005ad00000bf3d0&#039; to driver/target/group &#039;ib_srpt/ib_srpt_target_0/ibhack_srp&#039;: done.<br />        -&gt; Driver/target is not a fibre channel target, ignoring.<br />        -&gt; Done.<br /><br />All done.<br /></blockquote><br /><br />正しいInitIDが追加できると、dmesg(or /var/log/system)にこのように出ます。<br /><br /><blockquote>[28683.068321] scst: Added name 0x0005ad00000bf4d40005ad00000bf3d0 to group ibhack_srp<br />[28683.068505] scst: Processing thread ram0_0 (PID 3790) started<br />[28683.068715] scst: Processing thread ram0_1 (PID 3791) started<br />[28683.068895] scst: Processing thread ram0_2 (PID 3792) started<br />[28683.069015] scst: Processing thread ram0_3 (PID 3793) started<br />[28683.069141] scst: Processing thread ram0_4 (PID 3794) started<br />[28683.069266] scst: Processing thread ram0_5 (PID 3795) started<br />[28683.069371] scst: Processing thread ram0_6 (PID 3796) started<br />[28683.069480] scst: Processing thread ram0_7 (PID 3797) started<br />root@ibhack:/ib#</blockquote><br />　<br />　正しくスレッドが走ったら、再びWindows側に戻ります。<br /><br /><h2>Windowsでディスクの再スキャン</h2><br />　マシンそのものを再起動しても良いですが、コンピューターの管理からディスクの管理→ディスクの再スキャン　をすることにより、追加したディスクがみえるようになるはずです。あとはいつも通りのディスクとして扱えるので、煮るなり焼くなりご自由に。<br /><br /><a href=images/WinOFED_SRP.PNG class=lb><img src=images/WinOFED_SRP.PNG width=500px></a><br><br /><br /><h2>パフォーマンスについて</h2><br />　とりあえず主要ベンチを走らせてみたところ、DDRなInfinihost IIIという古い構成であっても、10Gbit近く出ました。iSCSIでは4-5Gb/sでネックになっていたのに比べ、2倍近く速くなりました。CPU使用率はシーケンシャル読みをしたときの負荷です。<br /><br /><a href=images/WinOFED_SRP_perf.PNG class=lb><img src=images/WinOFED_SRP_perf.PNG width=500px></a><br><br /><br />ちなみに、ib_write_bwをscstサーバ側で立ち上げ、Windows側から接続したときのパフォーマンスは最大1500MB/s程度出ていたので、あと2Gb/s程度の余地はありそうです。<br /><blockquote>------------------------------------------------------------------<br />                    RDMA_Write BW Test<br />Number of qp&#039;s running 1<br />Connection type : RC<br />Each Qp will post up to 100 messages each time<br />Inline data is used up to 400 bytes message<br />  local address:  LID 0x01, QPN 0x100407, PSN 0x777cc6 RKey 0xe4002a00 VAddr 0x007fe0519e7000<br />  remote address: LID 0x02, QPN 0xd0407, PSN 0xa9d4db, RKey 0x4e002700 VAddr 0x007fcda6d13000<br />Mtu : 2048<br />------------------------------------------------------------------<br /> #bytes #iterations    BW peak[MB/sec]    BW average[MB/sec]<br />      2        5000               2.21                  2.21<br />      4        5000               4.51                  4.50<br />      8        5000               9.01                  8.98<br />     16        5000              17.62                 17.58<br />     32        5000              35.05                 35.03<br />     64        5000              69.48                 68.30<br />    128        5000             133.97                133.95<br />    256        5000             206.10                205.86<br />    512        5000             576.27                573.69<br />   1024        5000            1035.02               1034.46<br />   2048        5000            1207.47               1206.42<br />   4096        5000            1336.65               1336.36<br />   8192        5000            1407.50               1407.48<br />  16384        5000            1453.84               1453.76<br />  32768        5000            1482.45               1482.44<br />  65536        5000            1495.00               1494.99<br /> 131072        5000            1501.55               1501.51　　　//MAX値<br /> 262144        5000            1471.14               1471.13<br /> 524288        5000            1468.67               1468.55<br />1048576        5000            1469.21               1468.62<br />2097152        5000            1468.69               1468.66<br />4194304        5000            1471.43               1471.43<br />8388608        5000            1471.54               1471.53<br />------------------------------------------------------------------<br /></blockquote><br /><br /><h2>LinuxでSRPに接続する</h2><br />　そろそろ文字の羅列に(主に自分が)疲れてきたところですが、まだ続きます。2回に分けるべきだったかもしれませんがそれほどの内容でもないのでまとめてしまいます。<br /><br />　LinuxでSRPイニシエーターを使うには、OFEDスタックを入れるか、srptoolsをDLしてきます。イニシエーター側は特にカーネルを作り直す必要はありません。<br /><a href="http://www.openfabrics.org/downloads/srptools/" >http://www.openfabrics.org/downloads/srptools/</a><br />　多分、Debianならいつも通りconfigure --prefix=/usr/ --mandir=/usr/share/man/manでcheckinstall -Dで通ると思います。よく覚えてないです。<br /><br />　どうにかしてsrptoolsが入ったら、 srp_daemonを実行します。なお、srp_daemonを実行するにはib_umadドライバがロードされている必要があります。また、SRPを使うのでib_srpもロードする必要があります。<br />　一度Windowsから接続できている状態であれば、srp_daemon -a -oしたときに何かしらの文字が帰ってくると思います。srp_daemonの詳しい引数は<a href="http://linux.die.net/man/1/srp_daemon" >ここ</a>やman srp_daemonでみれますが、-a -oは全てのターゲットを一回だけスキャンする、と言う引数です。<br /><blockquote>root@ib0:~# modprobe ib_umad<br />root@ib0:~# modprobe ib_srp<br />root@ib0:~# srp_daemon -a -o<br />10/11/12 19:39:51 : Class Port Info set returned status 0x000c<br />10/11/12 19:39:51 : Warning: set of ClassPortInfo failed<br />IO Unit Info:<br />    port LID:        0001<br />    port GID:        fe800000000000000005ad00000bf4d5<br />    change ID:       0001<br />    max controllers: 0x10<br /><br />    controller[  1]<br />        GUID:      0005ad00000bf4d4<br />        vendor ID: 000005<br />        device ID: 006274<br />        IO class : 0100<br />        ID:        SCST SRP target<br />        service entries: 1<br />            service[  0]: 0005ad00000bf4d4 / SRP.T10:0005ad00000bf4d4</blockquote><br /><br />　何も帰ってこない場合はターゲットが動いていないので、ターゲット側でtailf /var/log/systemして、***WARNING***等の文字列をみて、それっぽいエラーを見つけてください。だんだん適当になってきてるのは多分気のせいです。<br />　上のような文字が帰ってきたら、/sys/class/infiniband_srp/srp-&lt;device&gt;-&lt;port&gt;/add_target file に書き込みます。今回はmthca0のポート1がイニシエーターに使うポートなので、そこにリダイレクトします。<br /><br /><blockquote>root@ib0:~# srp_daemon -c -o &gt; /sys/class/infiniband_srp/srp-mthca0-1/add_target<br />10/11/12 19:39:24 : Class Port Info set returned status 0x000c<br />10/11/12 19:39:24 : Warning: set of ClassPortInfo failed</blockquote><br />　このコマンドを発行したタイミングで、イニシエーターがSCSTターゲットに接続するので、Windowsの時と同じ要領でdmesgかtailf /var/log/messageしてイニシエーターIDを調べます。<br /><blockquote>Dec 10 19:39:27 ibhack kernel: [ 4609.618429] ib_srpt: Received SRP_LOGIN_REQ with i_port_id 0x0:0x5ad00000bf3d0, t_port_id 0x5ad00000bf4d4:0x5ad00000bf4d4 and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x5ad00000bf4d5)<br />Dec 10 19:39:27 ibhack kernel: [ 4609.619471] scst: Using security group &quot;ib_srpt_target_0&quot; for initiator  これ→&quot;0x00000000000000000005ad00000bf3d0&quot; (target ib_srpt_target_0)<br /></blockquote><br /><br />イニシエーターIDが判明したら、ターゲット側でadd_initで追加します。<br /><blockquote>root@ibhack:~# scstadmin -add_init 0x00000000000000000005ad00000bf3d0 -driver ib_srpt -target ib_srpt_target_0 -group ibhack_srp<br /><br />Collecting current configuration: done.<br /><br /><br />-&gt; Making requested changes.<br />        -&gt; Adding new initiator &#039;0x00000000000000000005ad00000bf3d0&#039; to driver/target/group &#039;ib_srpt/ib_srpt_target_0/ibhack_srp&#039;: done.<br />        -&gt; Driver/target is not a fibre channel target, ignoring.<br />        -&gt; Done.<br /><br />All done.</blockquote><br /><br />Initiatorを追加したら、一度ib_srpをアンロードし、もう一度ロードし、またSRP接続します。<br /><blockquote>root@ib0:~# rmmod ib_srp<br />root@ib0:~# modprobe ib_srp<br />root@ib0:~# srp_daemon -c -o &gt; /sys/class/infiniband_srp/srp-mthca0-1/add_target</blockquote><br /><br />イニシエーター側でdmesg等をして接続できたか確認します。<br /><br /><blockquote>Dec 10 20:05:10 ib0 kernel: [ 3054.245465] scsi9 : SRP.T10:0005AD00000BF4D4<br />Dec 10 20:05:10 ib0 kernel: [ 3054.245936] scsi 9:0:0:0: Direct-Access     SCST_BIO ram               220 PQ: 0 ANSI: 5<br />Dec 10 20:05:10 ib0 kernel: [ 3054.246132] sd 9:0:0:0: Attached scsi generic sg1 type 0<br />Dec 10 20:05:10 ib0 kernel: [ 3054.246262] sd 9:0:0:0: [sdb] 20971520 512-byte logical blocks: (10.7 GB/10.0 GiB)<br />Dec 10 20:05:10 ib0 kernel: [ 3054.246267] sd 9:0:0:0: [sdb] 4096-byte physical blocks<br />Dec 10 20:05:10 ib0 kernel: [ 3054.246783] sd 9:0:0:0: [sdb] Write Protect is off<br />Dec 10 20:05:10 ib0 kernel: [ 3054.247088] sd 9:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn&#039;t support DPO or FUA<br />Dec 10 20:05:10 ib0 kernel: [ 3054.248428]  sdb: unknown partition table<br />Dec 10 20:05:10 ib0 kernel: [ 3054.249145] sd 9:0:0:0: [sdb] Attached SCSI disk</blockquote><br /><br />これで無事にブロックデバイスとして見れました。簡単なベンチです。<br />シーケンシャル読み込み<br /><blockquote>root@ib0:~# dd if=/dev/sdb of=/dev/null bs=1M<br />10240+0 records in<br />10240+0 records out<br />10737418240 bytes (11 GB) copied, 9.41218 s, 1.1 GB/s</blockquote><br /><br />シーケンシャル書き<br /><blockquote>root@ib0:~# dd of=/dev/sdb if=/dev/zero bs=1M<br />dd: writing `/dev/sdb&#039;: No space left on device<br />10241+0 records in<br />10240+0 records out<br />10737418240 bytes (11 GB) copied, 9.24043 s, 1.2 GB/s</blockquote><br /><br />　大体Windows7と同じ値が出ました。bonnie+＋とかFIOとかしんどいので今度します。<br /><br /><h2>SCSTの設定の保存とサービス登録</h2><br />　驚いたことにまだ続きます。今回はramfsで構築してしまったので再起動したらどのみち消えてしまうのですが、その設定で問題なければ設定を保存します。保存せず再起動するとtargetの設定は消えます。(ネットワーク機器を設定したあとwrite memoryを忘れてやってしまうあれのように<br /><br /><blockquote>scstadmin -write_config /etc/scst.conf</blockquote><br /><br />また、デフォルトではscstサービスは起動時に立ち上がらないので、起動時にscstが立ち上がるようにします。(もしかしたら最初から立ち上がってたかも？要再検証<br /><br /><blockquote>update-rc.d scst defaults</blockquote><br /><br /><br />次回起動時にscstのドライバにib_srptも使うように/etc/default/scstを編集します。 <br /><br /><blockquote>SCST_TARGET_MODULES=&quot;scst_local iscsi_scst ib_srpt&quot;</blockquote><br />ここのコメントアウトを外し、有効化します。<br /><br /><h3>Debian/squeeze以降での/dev/ramについて</h3><br /><a href="http://d.hatena.ne.jp/n314/20100324/1269429930" >http://d.hatena.ne.jp/n314/20100324/1269429930</a><br />こちらに書いてあるように、brdモジュールをロードすると/dev/ramが作れます。/etc/modulesに<br /><blockquote>brd rd_nr=1 rd_size=10485760</blockquote><br />と書いて、<br /><blockquote>scstadmin -open_dev ram -handler vdisk_blockio -attributes filename=/dev/ram0</blockquote><br />とscstadminをしておけば、再起動の度にramfsを作ってddして…としなくてすみます。毎度メモリを10G持っていかれますが。まあ、困ったときにはrmmod brdすればデータ丸ごと破棄してメモリが解放されます。<br /><br /><h3>LIOについて</h3><br />今回、SCSTの対比としてLIOもやってみようかと思ったのですが、対応ハードウェアがConnect X2以降と書いてあり、対応ハードウェアを持っていない為試していません。<br /><blockquote> following Mellanox InfiniBand HCAs are supported:<br /><br />    Mellanox ConnectX-2 VPI PCIe Gen2 HCAs (x8 lanes), single/dual-port QDR 40 Gb/s<br />    Mellanox ConnectX-3 VPI PCIe Gen3 HCAs (x8 lanes), single/dual-port FDR 56 Gb/s<br />    Mellanox ConnectX-IB PCIe Gen3 HCAs (x16 lanes), single/dual-port FDR 56 Gb/s <br /><br />The InfiniBand/SRP fabric module (srpt.ko, Linux kernel driver database) for the Unified Target was released with Linux kernel 3.3 on March 18, 2012.[1] </blockquote><br /><br /><a href="http://www.linux-iscsi.org/wiki/SRP#Hardware_support" >http://www.linux-iscsi.org/wiki/SRP#Hardware_support</a><br /><br /><h3>個人用メモ</h3><br /><blockquote>modprobe brd rd_nr=1 rd_size=10485760<br />modprobe ib_srpt<br />modprobe scst<br />modprobe scst_vdisk<br />scstadmin -open_dev ram -handler vdisk_blockio -attributes filename=/dev/ram0<br />scstadmin -add_group ibhack_srp -driver ib_srpt -target ib_srpt_target_0<br />scstadmin -add_lun 0 -driver ib_srpt -target ib_srpt_target_0 -group ibhack_srp -device ram -attributes read_only=0<br />scstadmin -enable_target ib_srpt_target_0 -driver ib_srpt<br />scstadmin -add_init　(InitiatorID) -driver ib_srpt -target ib_srpt_target_0 -group ibhack_srp<br />scstadmin -write_config /etc/scst.conf<br /></blockquote><br /><br /><h2>所感</h2><br />　やはり、RDMAは速いです。最初は何をすればいいか全く分かりませんでしたが、何をすれば良いのかが分かれば大して難しくないです。しかし、scstを入れるのが若干めんどくさいというかmake&amp;&amp;make installで済んでくれないかなと思います。<br />　何だかんだでまとめるのに1日かかってしまいました…文の推敲は後日します。<br /><br /><h2>参考</h2><br />素晴らしいHowto（というか、ほぼここの和訳に近いという<br /><a href="http://davidhunt.ie/wp/?p=2291" >http://davidhunt.ie/wp/?p=2291</a>]]></summary>
		<updated>2012-12-10T11:11:31Z</updated>
	</entry>
	<entry>
		<title>【HW】DDR InfinibandHCAにおけるIPoIBのパフォーマンス</title>
		<link href="http://xmms.jp/blog/index.php?entry=entry121202-085945" />
		<link rel="alternate" type="text/html" href="http://xmms.jp/blog/index.php?entry=entry121202-085945" />
		<link rel="edit" href="http://xmms.jp/blog/index.php?entry=entry121202-085945" />
		<id>http://xmms.jp/blog/index.php?entry=entry121202-085945</id>
		<summary type="html"><![CDATA[　<a href="comments.php?y=12&amp;m=11&amp;entry=entry121129-050826" >前回</a>にIPoIBが通るようになったので色々テストしてみました。機材は前回のままです。<br /><br />IP<br /> ibhack 10.1.1.1/24<br /> ib1 10.1.1.2/24<br /><br /><h2>iscsitarget+open-iscsiによるパフォーマンス</h2><br />　まあ、もう試した方が居るので今更ではあるのですが一応試してみました。ものすごく参考になるので必読です。自分も動かねえなぁと言うときに参考にさせて頂きました。<br /><a href="http://www.slideshare.net/tyamadajp/infiniband-on-debian#btnNext" >http://www.slideshare.net/tyamadajp/inf ... an#btnNext</a><br /><br /><h3>ターゲットの用意</h3><br />　まず、ramfsでディレクトリを作ります。<br /><blockquote>root@ibhack:~#mkdir /a<br />root@ibhack:~#mount -t ramfs -o size=10G ramfs /a<br /></blockquote><br /><br />　次に、iscsitargetを入れます。<br /><blockquote>root@ibhack:~#apt-get install iscsitarget iscsitarget-dkms</blockquote><br /><br />インストールが終わったら/etc/iet/iet.confを編集します<br /><blockquote>root@ibhack:~# vi /etc/iet/ietd.conf<br /><br />Target test:test<br /> Lun 0 Path=/a/10G.img,Type=fileio,ScsiId=xyz,ScsiSN=xyz<br /></blockquote><br /><br />最後に、/etc/default/iscsitargetの1行目を編集し、サービスを立ち上げます。<br /><blockquote>root@ibhack:~# vi /etc/default/iscsitarget<br /><br />ISCSITARGET_ENABLE=true<br /><br />root@ibhack:~/ib# service iscsitarget start<br />[ ok ] Starting iSCSI enterprise target service:.<br />. ok<br /></blockquote><br /><h3>イニシエーターの用意</h3><br />　ターゲットが用意できたら、それに接続するイニシエーターの設定をします。<br /><blockquote>root@ib1:~# apt-get install open-iscsi<br />---略---<br />root@ib1:~# iscsi_discovery 10.1.1.1<br />iscsiadm: No active sessions.<br />Set target test:test to automatic login over tcp to portal 10.1.1.1:3260<br />Logging out of session [sid: 1, target: test:test, portal: 10.1.1.1,3260]<br />Logout of [sid: 1, target: test:test, portal: 10.1.1.1,3260] successful.<br />Set target test:test to automatic login over tcp to portal 192.168.1.201:3260//←管理用IP<br />Logging out of session [sid: 2, target: test:test, portal: 192.168.1.201,3260]<br />Logout of [sid: 2, target: test:test, portal: 192.168.1.201,3260] successful.<br />discovered 2 targets at 10.1.1.1<br /><br />root@ib1:~# iscsiadm -m node -l -p 10.1.1.1<br />Logging in to [iface: default, target: test:test, portal: 10.1.1.1,3260] (multiple)<br />Login to [iface: default, target: test:test, portal: 10.1.1.1,3260] successful.<br />root@ib1:~# iscsiadm -m node -l -p 10.1.1.1 -T test:test<br /></blockquote><br />　ターゲットが適当な設定なので、IBのインターフェース以外に管理用インターフェースでもリッスンしていますが、今は気にしないことにしましょう。<br /><br /><h3>ddでのテスト</h3><br />　みんな大好きddでのシーケンシャルアクセステストです。<br /><br />　読み込み<br /><blockquote>root@ib1:~# dd if=/dev/sdb of=/dev/null bs=1M<br />10000+0 records in<br />10000+0 records out<br />10485760000 bytes (10 GB) copied, 30.9927 s, 338 MB/s]</blockquote><br /><br />書き込み<br /><blockquote>root@ib1:~# dd of=/dev/sdb if=/dev/zero bs=1M count=10000<br />10000+0 records in<br />10000+0 records out<br />10485760000 bytes (10 GB) copied, 23.3797 s, 448 MB/s<br /></blockquote><br /><br />　やはり先人のテストの結果の通り、4Gb/sで頭打ちになりました。ConnectModeにしてMTUをあげても変わりませんでした。<br /><br /><h2>Windowsでのパフォーマンス</h2><br />　まず、<a href="http://www.openfabrics.org/downloads/Windows/v3.1/" >ここから</a>OFED For Windowsを入れ、Connected modeを有効にします。<br /><br /><a href=images/win_ofed_cm.PNG class=lb><img src=images/win_ofed_cm.PNG ></a><br><br /><br />　そして、MS iSCSI initiatorからLinux iscsiTargetに接続をします。そしてNTFSでフォーマットをして、それからCrystalDiskで計測しました。<br /><a href=images/iet_infiniband_win.PNG class=lb><img src=images/iet_infiniband_win.PNG width=500px></a><br><br />　同じ条件でも、Open-iscsiよりは良い結果が出ました。open-iscsiイニシエータの性能があまりよくない？<br /><br />　もう一つの試験として、試しに両方ともWindows7に切り替え<a href="http://www.ltr-data.se/opencode.html/#ImDisk" >Im Disk</a>でRAMFSを作り、そこを共有フォルダとしてCIFSのテストもしてみたのですが、何気にConnected modeを有効にしただけでそこそこな速度が出ました。window-&gt;Linux Samba3serverもやってみたのですがここまでの値は出ませんでした。適当にやってしまったのでログが残っていないのですが、大体4-500MB/sでした。<br /><a href=images/ib_cifs_ramfs.PNG class=lb><img src=images/ib_cifs_ramfs.PNG ></a><br><br /><br /><br /><h2>まとめ</h2><br />　IBをIBoIPで使うのは、元のIBの帯域を発揮することは出来ませんが、それでもDDRクラスであれば1GbEtherを何本も束ねるよりは速いことが多かったです。場合によっては10Gbに迫る勢いです。<br />　中々いい感じなのですが、現在の問題点としては<br /><br />・スイッチが高い<br />・ケーブルが高い<br />・HCAもそこまで大量にあるわけではない<br />・かなりカーネルでドライバを持っているので殆どそのまま使える物の、Plug and playとまでは行かない<br />・Linuxで使う場合、RH系以外は結構めんどくさい<br />・古いHCAだとESXiやWin2012svr等でドライバを切られてしまって使えない<br /><br />　といったところを感じました。で、IBどうよ？と言われたら、「とりあえず2本くらいかって様子見てみると良いよ」と答えるでしょう。個人的には、これでSAN等のファブリックを固めるのもアリだと思います。<br /><br />　次回はSRPなどについてまとめたいと思います。]]></summary>
		<updated>2012-12-01T23:59:45Z</updated>
	</entry>
	<entry>
		<title>【HW】いろんなマシンでPhoronixTestSuite回してみた</title>
		<link href="http://xmms.jp/blog/index.php?entry=entry120426-042209" />
		<link rel="alternate" type="text/html" href="http://xmms.jp/blog/index.php?entry=entry120426-042209" />
		<link rel="edit" href="http://xmms.jp/blog/index.php?entry=entry120426-042209" />
		<id>http://xmms.jp/blog/index.php?entry=entry120426-042209</id>
		<summary type="html"><![CDATA[　某所で使った資料の残りをうpしておきます。詳しい環境などはベンチマークの結果を見てください。<br /><br />実行方法は.deb版だとインストールの時に結構依存が起きるので<a href="http://www.phoronix-test-suite.com/" >Phoronix-test-suite</a>　3.8のソースコードを持ってきて、./phoronix- test-suite benchmark multicore を実行しました。libboost等の足りないものapt-getして追加しました。<br />ちなみに、実行すると完走するまで1時間2時間かかります。<br /><br /><a href="http://openbenchmarking.org/result/1204096-BY-OPTERON2214,1204101-BY-E5504DEF728,1204101-BY-PHENOMII958,1204095-BY-E55043GHZ83,1204125-XMMS-I7920DE74,1204260-BY-I79203GHZ51,1204117-BY-2500K590821,1204125-BY-X5560ES2W95,1204110-BY-E5649ES2W51" >http://openbenchmarking.org/result/1204 ... 5649ES2W51</a><br /><br />メモリ周りの動き<br /><br /><a href="http://openbenchmarking.org/result/1204111-BY-SANDYMEMS19,1204117-XMMS-I7920TR84,1204121-BY-X55602WAY79,1204116-BY-E56492WAY59" >http://openbenchmarking.org/result/1204 ... 56492WAY59</a><br /><br />　やはり、1366のトリプルチャンネルは1155のデュアルチャンネルに比べて速いので、その辺の差が複数のプログラムが同時進行するパラレルコンパイル等の時にでてきている気がします。しかし、1コアあたりの処理能力はプロセスルールの差がある2500の方が920等と比べて勝ります。<br /><br />　1366はCPUが熱くなければいいプラットホームだと思ったのですが、もうディスコンされ始めて来ているので悲しいところです。2011に移行しろと言うことなのかもしれませんが。<br /><br />　誰か2011のテストしてくださいw]]></summary>
		<updated>2012-04-26T04:22:09Z</updated>
	</entry>
	<entry>
		<title>【HW】LSI MegaRAID SAS 8708EM2 のあれこれ　2</title>
		<link href="http://xmms.jp/blog/index.php?entry=entry111211-062125" />
		<link rel="alternate" type="text/html" href="http://xmms.jp/blog/index.php?entry=entry111211-062125" />
		<link rel="edit" href="http://xmms.jp/blog/index.php?entry=entry111211-062125" />
		<id>http://xmms.jp/blog/index.php?entry=entry111211-062125</id>
		<summary type="html"><![CDATA[　アキバの<a href="http://www.pcserver1.jp/" >鯖のおいしいお店</a>で8708EM2が格安で売っていたのでIYHしました。まあ買ったのは結構前なんですが…中々まとめる暇がなくて今まで先延ばしになっていました。ストレージサーバーで同型のものを使っているので、出来れば保守用に欲しいと思っていたところだったのでタイミングがよかったです。在庫がいつからあったのかは知りませんが…<br /><br /><a href=images/IMG_0381R_.jpg class=lb><img src=images/IMG_0381R_.jpg width=500px></a><br><br /><br />　それについて色々調べたのでメモです。　<br /><br /><br />　今回手に入れたのはNECのOEMでN8103-116と言う型番で、似たような型番でN8103-117と言うのがあり、こっちはRAID0/1/5/6/10/50/60に対応しているのですが、N8103-116はRAID0/1/10のみの対応です。ついてにSFF8077ケーブルも安かったので一緒に買いました。<br /><br />　と言っても中身はどちらも8708EM2を使用していて、RAID5がアンロックされているかされていないかの違いのみです。<br />　このアンロックはファームウェアによる判定ではなくて、ブラケット横にキーチップがつくかどうかのハードウェアキー判定です。なので、116を買ってファームを書き換えて117にしようというのは無理です。<br /><br /><a href=images/IMG_0404R_.jpg class=lb><img src=images/IMG_0404R_.jpg width=500px></a><br><br /><br />　一番下が117で上の2つは116です。運用用、検証用、観賞用^H^H^H冷暗所保管用です。殆ど違いはないのですがPCIブラケットの横にチップがついているかどうかの差があります。<br /><br /><a href=images/IMG_0405R_.jpg class=lb><img src=images/IMG_0405R_.jpg width=500px></a><br><br /><br />　これを挿したら他のものでもRAID5がアンロックされるの?と誰でも考えると思うので試してみたところ、これを挿すことによって他の116も117相当になりました。このチップそのものはカードと一対一ではないようです。<br /><br />　性能はというと、8HDDをRAID0で束ねたところこんな感じでした。<br /><a href=images/megaraid_8708EM2_8HDD_performance.PNG class=lb><img src=images/megaraid_8708EM2_8HDD_performance.PNG ></a><br><br /><br />　4本がBarracudaの7200/12の500Gで、残りの4本がBarracudaの7200/11の250Gです。扱いとしては250*8として扱われています。<br /><br /><a href=images/IMG_0382R_.jpg class=lb><img src=images/IMG_0382R_.jpg width=500px></a><br><br /><br />　そして検証しているうちに分かったのですが、やはり1本だけでRAID0を組むとJBODとして動くようです。2本以上のRAID0では無理でしたが、1本だけであれば8708EM2でアレイを作成しmkfsでファイルシステムを作り適当にデータを書いたあと、そのディスクを他のコントローラー(試したのはICH10)に挿してもHDDの中身は保持され、読むことが出来ました。<br /><br />　ってそれだと複数個HBAを買った意味が…まあ後悔はしてませんが。<br /><br />　ケーブルがSFF8077なので、このケーブルが手に入るのであれば安くてうまいカードだと思います。<br /><br /> <img src="images/000.png" width="500" height="4" alt="" /> <br />訂正：SFF-8077ではなくてSFF-8087の間違いです。普通のMiniSASのケーブルです。]]></summary>
		<updated>2011-12-10T21:21:25Z</updated>
	</entry>
	<entry>
		<title>【ZFS】iSCSI zvdev vs fileIO?　メモ</title>
		<link href="http://xmms.jp/blog/index.php?entry=entry111120-152335" />
		<link rel="alternate" type="text/html" href="http://xmms.jp/blog/index.php?entry=entry111120-152335" />
		<link rel="edit" href="http://xmms.jp/blog/index.php?entry=entry111120-152335" />
		<id>http://xmms.jp/blog/index.php?entry=entry111120-152335</id>
		<summary type="html"><![CDATA[　ZFS上でiscsiを実行する際、file-ioがいいのかblock-ioがいいのか気になったので試してみました。<br /><br />　まず、<br /><blockquote>zfs create -V 10G z1/vdev</blockquote><br />を実行した後、/etc/iet/ietd.confにて<br /><blockquote>Lun 0 Path=/dev/zvol/z1/zvdev,Type=blockio,ScsiId=zfs1,ScsiSN=zfs1</blockquote><br />　と設定した場合のベンチマークです。といってもCrystalDiskMarkを使用した簡単なものですが。ちなみにcompression=offです。<br /><br /><a href=images/zvdev.PNG class=lb><img src=images/zvdev.PNG width=500px></a><br><br /><br />書き込み時に若干の波があるものの速度としては速いです。<br /><br />次に、<br /><blockquote>#zfs create z1/iscsi<br />#dd if=/dev/zero of=/z1/iscsi/10G.img bs=1G count=10</blockquote><br />を実行したあと、ietd.confを<br /><blockquote>Lun 0 Path=/z1/iscsi/10G.img,Type=fileio,ScsiId=z1,ScsiSN=z1,IOmode=wb<br /></blockquote><br />と変えてietdを再起動します。<br /><br />その結果<br /><br /><a href=images/nocompressio.PNG class=lb><img src=images/nocompressio.PNG width=500px></a><br><br /><br />　QD32の4Krandwrite以外の数値はほぼ誤差の範囲で同じ速度が出ました。ただ、書き込み時における速度の波はfileioの方が安定しています。しかしなぜQD32の書き込みだけここまで差が出るのでしょうか?<br />　予測ではblockIOの方が同期書き込みになるはずなので書き込み速度は遅くなると思っていたのですが…。逆にblockIOの時はキャッシュが効いてFileIOの時に同期書き込みをして…と考えたとしても、そもそも同期書き込みだとすればこんな数値は出ないはずで…ｳﾎﾞｧ<br /><br />　もう一つ、fileio時にcompression=lzjbにしたときはどうなるのか、と言うのも試してみました。<br /><br /><blockquote>#zfs set compression=lzjb z1/iscsi<br />#dd if=/dev/zero of=/z1/iscsi/10G2.img bs=1G count=10</blockquote><br /><br />ietd.conf<br /><br /><blockquote>Lun 0 Path=/z1/iscsi/10G2.img,Type=fileio,ScsiId=z1,ScsiSN=z1,IOmode=wb</blockquote><br /><br />その結果<br /><br /><a href=images/compressio.PNG class=lb><img src=images/compressio.PNG width=500px></a><br><br /><br />　目に見えた変化はありませんが、やはり書き込み時にCPUをかなり消費します。compression=offの時は8CPU合計のidleが750%とかなのですが、compression=lzjbの時はidleが500-400%程度まで落ちます。それでも十分と言えば十分ですが。<br /><br /><br />　何回かベンチを取ったところでメモリのキャッシュの空きがなくなってきたところでもう一度同じzvdevをマウントしてベンチを走らせてみました。<br /><br /><a href=images/zvdev2.PNG class=lb><img src=images/zvdev2.PNG width=500px></a><br><br /><br />　大きな変化として、crystaldiskmarkはベンチを取るときにあらかじめディスクに読み書きするためのファイルを書くようなのですが、その準備が長くなりました(波が跳ね上がる前の小さな波がそれ）。これはZILの空きがあふれて直接ディスクに書いているからこうなったのでしょうか?正直よく分からないです<br /><br />　まあ、書き込みはそこまで入らないと思うので、個人的に大きな違いがないのであればfileioを使いたいところです。もしパフォーマンスが大きく違わないとしたら、zvdevを使った利点…ってなんでしょうか。<br /><br />　おそらくSolarisでCOMSTARを使うときにvdevを作ると思うのですが、Linux上では…?<br /><br />誰か詳しい人おしえて!]]></summary>
		<updated>2011-11-20T06:23:35Z</updated>
	</entry>
	<entry>
		<title>【Storage】ZFSベンチマークメモ</title>
		<link href="http://xmms.jp/blog/index.php?entry=entry111116-032434" />
		<link rel="alternate" type="text/html" href="http://xmms.jp/blog/index.php?entry=entry111116-032434" />
		<link rel="edit" href="http://xmms.jp/blog/index.php?entry=entry111116-032434" />
		<id>http://xmms.jp/blog/index.php?entry=entry111116-032434</id>
		<summary type="html"><![CDATA[　<a href="http://twitter.com/#!/team_eririn" >@team_eririn</a>氏が<a href="http://www.ainoniwa.net/ssp/?p=331" >とても参考になるベンチマーク</a>をとってくれていたので自分もLinuxOnZFSでのテスト結果をあげてみる。…が、結果を出してみると色々ジャンクな結果になってしまったという。メモリが36G載っているとファイルサイズが18Gだと4kREAD/WRITEでキャッシュに載ってしまって数字が爆発してます。なのであまり比較にならないです…。<br /><br />グラフ化めんどくさいのでとりあえず<a href="/junkyard/zfs-fio.html" >整形ログ</a>を…<br />　自分としてはraidzとraidz2でどの程度パフォーマンスが変わるかというテストをしたかったので参考までに。HDDはST3500418ASx4でMegaRAID8708EM2に刺さっています。<br /><br /><br />気になるのはraidz-1よりもraidz-2の方が書き込みの性能がいい(たとえばraidz-1のシーケンシャルライトがwrite: io=18432MB, bw=108802KB/s, iops=212　なのに対してraidz-2はwrite: io=18432MB, bw=154631KB/s, iops=302だったり、z1の512randwriteがwrite: io=18432MB, bw=73272KB/s, iops=143なのに対してz2はwrite: io=18432MB, bw=93818KB/s, iops=183だったり。メモリに対するrandwrでも誤差の範囲だがraidz-2の方が若干速い)という点です。予測するにコントローラーが腐っててストライピングについて行けてないのかも？と思いましたが、キャッシュに対する書き込みでも僅差でz2の方が速いので、正直分かりません。CPUクロックが2GHzと低いのでそれがネックになってる気もしますが、それだと普通遅くなるはずなんですが…<br /><br />　ただ、READはシーケンシャルでは安定してraidzの方が速いです。キャッシュに対する読み込みはまあ誤差の範囲でほぼ同じですが…。<br /><br />　何にしてもHDD欲しいです…]]></summary>
		<updated>2011-11-15T18:24:34Z</updated>
	</entry>
</feed>
