激安10G LANカードでNASを高速化

個人的に、作業用データはPCではなく常にTrueNASというOSのNAS PCで管理しています。理由は以下。
 ・NASは起動しっぱなしなので、スマホの写真データとかの自動バックアップができる。
 ・NAS内部でディスクの冗長化とステータス監視、別領域へバックアップも自動でできるので安心。
 ・スナップショットにより、誤って上書きしたファイルをPCから簡単に巻き戻すことができる。
 ・ごみ箱もある。

メインPCとNASが通信できるネットワークは全体含めこんな感じ。全てLANケーブル。

まず前提として、NAS側はRealtek RTL8125BGというチップを使った2.5GのLANカードを使っており、PC側は10G対応のバッファロLGY-PCIE-MG2を使ってます。PCとNASはバッファロのLXW-10G2/2G4というハブを経由しており、このハブは10Gポートが2つ、2.5Gポートが4つという構成で、PCとNASをそれぞれ同じ速度のポートに接続。10Gポートはカスケード元との接続もあるので2つとも埋まります。

で、この接続方法だとPCとNASのアクセス速度がMAX2.5Gで頭打ちになり、内臓ディスクより明らかに読み込みや書き込みが遅いんだろうな・・・と前々から思っていたので、今回はこれをかなりお安く改善できた話です。

ちょっと話がそれますが、10GのLANは以下の理由で結構扱い辛いです。
==============================================

①ハードが高い。
 ハブ、LANアダプタ共に、バカ高くなる。ただしSFPの接続形態はそうでもないみたい。

②発熱がやばい
 内臓LANアダプタもそうだけど、ハブも発熱がやばい。 LXW-10G2/2G4は冷やさないとまともに動いてくれない。

みんなも試行錯誤している様子。
https://kakaku.com/item/K0001210732/picture/
自分のもこんな感じに蓋を外してヒートシンクにUSBファンを当ててます。ヒートシンクと基盤の間は金属のスペーサーが入ってるので、結束バンドでしっかり固定しても大丈夫。遅い回転数でも全然冷えます。

③当たりはずれが多い
 LGY-PCIE-MG2はまれに通信できなくなる現象が発生し、デバイスマネージャから無効化→有効化しないと復帰できなくなる現象が有名っぽく、自分のも何度か経験しました。ファームウェアを他社製品のに上書きしたり色々したけど改善されず。バッファロのNW機器はWiFi以外お勧めできません。
==============================================

で、PCとNASを10Gbpsで接続するには、通常10Gのポートがもう少し多い又は全ポート10Gくらいのハブに変える必要があるのだけれど、もっと安い方法で対応できる方法を探しました。

ハブを買い替えなくてもいいよう、PCとNASのLANをもっと安定した10G×2のものに買い替えて、それぞれ片方のポートで直接繋げる方式を取ります。

LANボードはAmazonじゃなくAlieExpressでIntelのX540-AT2のボードを買いました。

これが信じられないくらい安いけど、以下のデメリットがあります。
 ・世代が古いので100m, 1G, 10Gにしか対応せず、近年で始めた2.5Gや5Gの機器相手には1Gの速度になる。
 ・古いのでIntelのドライバがWindows11に正式に対応していない。
  (Win10用ドライバを手動でインストールすることでWin11でも問題なく使えます。)
 ・AlieExpressのこの新品ではない(HP, Dell製のは新品なのかそれなりの値段)

NASはLinuxベースのTrueNASなのですが、こちらは増設するだけで自動で使える状態になってました。ちなみにこのブログを書くずっと前にFWサーバー(Sohos)のPCにもX540-AT2を使ってます。それはIntel純正(のはず)のを使っており。こちらも勝手に使えるようになってました。ヒートシンクを外すと、LANチップとは思えない見た目の、CPUみたいなピカピカなチップであることを確認済み。

本体内のエアフローが強烈なラックマウントのサーバはともかく、デスクトップPCは絶対ファンを付けないとLANチップが熱暴走して機能しなくなります。後継のチップはだいぶ改善されてるらしいです。

で、今回の2枚が届いたのでチェック。紙袋に固めの透明ケースに入っているのみで、非常に梱包はシンプル。金具やコネクタはピカピカだけどが基盤は明らかに中古です。

ボードのメーカーはInspurというところです。Huaweiとかで古くなったサーバーから抜いたやつとかなのかなぁ・・・。

 株式会社インスパージャパン

 米政府、中国最大のサーバーメーカーInspurをブラックリストへ 

まあ、そういうわけです。

AlieExpressはSSDの容量詐欺などで有名だけど、NW機器に関しては通常の相場の製品もあり、外れは無さそう。ヒートシンクを外し固まっていた熱伝導シールを外し、同じチップであることを確認。グリスを塗って元のヒートシンクに戻します。

改めてちょっとしたCPUみたいな大きさのチップ。謎のジャンパピンも2つあります。

で、試しにファンを付けずPCに取り付けてドライバを入れて使える状態にし片方をハブに接続。NASとを直接接続するためにもう片方のポートに固定IP設定をした瞬間、PC側のLANアダプタが強制的に「無効」の状態に陥ってしまう現象が発生。有効化をしても言うことを聞かず。
一旦LANボードを外そうと端を持ってみると、耐えられないくらいの熱を持ってたので外せず。こうなると、PCを止めてボードを冷やして再起動の後、デバイスマネージャーから無効→有効をしないと復帰してくれない模様。

「いや、PC内のエアフローがダメなんじゃない?うちのPCのなら大丈夫だからw」とか思っている方はぜひファンレス挑戦してください。

これはNAS側ですが、PC側も結局こんな感じでファンを無理やりつけてます。結束バンドがすごい使える。

そしてPCとNASの接続構成はこうなります。PCとNASの間で新たに10G専用の接続が追加されてます。

ネットワークドライブの設定を新たな接続用に変更し、アクセス性能の変化をチェック。

Before(2.5G接続)

After(10G接続)

書き込みはいい感じに10Gの性能を出し切れている。NASはHDD x3でのRAID5の構成に加えて256GBのSSDをキャッシュにしているため、書き込みだけはLANの性能いっぱいまで出せる模様。読み込みが半分くらいなのは、SSDキャッシュは読み込み用に機能しないためHDD(WD青5600rpm)性能の限界が影響しているのかなと。
小さなサイズの書き込み性能が前より低下しているけど、これはLANをジャンボパケットに対応させバッファも増やした影響だと思う。これに関しては、ログや微小なファイルを継続的に書き込みながら処理を進めるとか特殊なケースがなければ気にしなくていいと思う。

最終的にZBrushやSubstancePainterのプロジェクト保存時間が明らかに短くなったので満足。

Plasticityメモ

Plasticityはほとんどの操作がショートカットキーと単語検索でしか呼び出せません。パフォーマンスのグラフを出すくらいGUIがスッカスカで余裕はあるので、現在のモードで有効な操作の一覧を自動で出してくれてもいいのにな。各操作のアイコンを作るのが苦痛すぎるから?

 O:平面からオフセットしたカーブを作成
 Ctrl+R:横か縦方向にカーブを挿入 TABで切り替え
 Ctrl+3 or 4:選択した面かエッジかカーブに隣接する対象を選択
 Alt+D:平面投影表示でソリッドの輪郭やエッジからカーブを作成

他のサイトも貼っておきます。

アーティスト向けCAD『Plasticity』の操作方法をメモするだけの記事!
https://3dnchu.com/archives/plasticity-howto/
Plasticity マニュアル
https://doc.plasticity.xyz/ja

Plasticity

Plasticityという新しいソフトで銃のモデリングやってます。
ブールとかベベルが無茶苦茶強力なソフトです。もっと前からこれがあれば・・・

あと、作ってるモデルは作成前にざっくりと作ったデザインからかなり逸脱して考えながら作ってる状態なのでかなりペースが遅いです。作っては気に入らなくてNGの繰り返し。ずっとこればっかやってます。現実にあるものならもっとサクサクいけると思います。

テクスチャ作成@SubstancePainter

テクスチャペイントは、私のような趣味勢にとってはSTEAMのインディーズライセンス版がちょうどいいです。ホントに。ハイポリからローポリにベイクするのもコレでやったほうがいいです。

というわけで、ペイント云々よりベイク処理のやりやすさを紹介します。

まず、ハイポリとローポリの位置関係とトレース範囲を視覚的に確認でき、エラーがある部分を強調表示することができます。

で、ハイポリとローポリが、複数のメッシュで構成されて同一のマテリアルを使う構成の場合、仮にメッシュ同士が交差していると、その部分でベイク処理にも不具合が出ます。対策として、おそらく分離させたりするんだろうけど、その場合ハイポリベースのAOマップが忠実にベイクできません。

で、SubstancePainterはハイポリとローポリ双方の構成に含まれているメッシュの名前でベイク処理を分けてくれます。関係性の構成に漏れがないかもチェックできます。で、IDマップも出力すればレイヤごとにマスク処理として使えます。

これで複数のメッシュのベイクを簡単に単一マテリアル内に収められることになります。

素体のモデリング

ZBrushで素体(っていう表現でいいのか?)に細かいディテールを追加する作業です。ベースの形状は、昔からのデータをブラッシュアップし続けて流用してます。

今までは、プロジェクション方式でキャプチャ用に買った写真を張ってカラーマップを作り、そこから無理やりノーマルマップ等を作っていましたが、今回はまじめにZBrushでトライしました。

有料のブラシとかも買いましたね。

途中から瞼を閉じた状態にします。

目を閉じた状態にしないと瞼部分がZBrushで描けなかったりベイク処理も不安定になるので。
もちろんUV展開も閉じた状態で行います。
ベイクするようにエクスポートする直前では、下顎を下すような方法で口を少し開けたほうがいいです。それもベイク処理云々のため。

形状の変更はGoBというBlenderアドオンを使い、Blenderと連携できるようにしました。形状そのままで左右対称に頂点とかを移動できるのが便利です。

UVもUDIMという方式を採用しました。なんとなく便利な機能なのかなと。あと、ZBrushで謎の使用なのが、3DデータをインポートしたりGoBでインポートして持ち込むと、逆にエクスポートしたときにスケールや原点位置が強制的に変わること。

そこはここのランダムな数値を修正することで正せます。

「オブジェクトの中点を原点に自動で合わせてやろう。いい感じでしょ?」というお節介機能なんだろうけど、Zbrushで作業を完結させる人なんてほぼいないので、こーいう無駄機能やめてほしい。