• http://www.fusionio.jp/events/hpcseminar/
  • 2013年6月25日(火)15:00-17:30
  • TKP渋谷カンファレンスセンター 会議室B(8F)
  • 主催: フュージョンアイオー株式会社、協力: 日本仮想化技術株式会社
  • 配布資料: SoftwareDesign 2012年6月号・11月号の抜粋、ioDriveII・ioDriveIIDuo(SLC,MLC)カタログ、「VSLのメリット」
  • スライド: (後日公開されるらしい)

昼にゲリラ豪雨が降ったが、セミナーの時間帯は小雨になってた。はじめての渋谷ヒカリエをとおり抜けて会場へ。

_1040926_1040927_1040928

[2013-06-25 15:00]

開会の言葉

[2013-06-25 15:03]_1040929

RUNNING NATIVE ioMEMORY SDK によるプログラミングの可能性 / 長谷川 猛さん

  • プリミティブAPIを提供していく。
  • アトミックライト・条件つきライト・TTL(time to live)付き書き込み(キャッシュなどに)・自動消去・クラッシュセーフなmmap・バージョニング(スパコンむけ?)
  • ユーザ定義のオブジェクトによるトランザクション・key-value storeトランザクション・高速なロギング(auto commit memory)・チェックポイトメモリ・メモリトランザクション
  • T10標準化: SBC-4 SPC-5 Atomic-Write...
  • 新しい不揮発メモリ(ReRAMとか)はすぐに使えるようにはならないと考えている。
  • DRAMの値段は下がりにくいと考えている。Flashは値段を重視して開発されているので値段が下がりやすいと考えている。
  • FTL(flash translation layer)がある。atomic writeをつかっても性能はそれほど落ちない。書き込み量が減って寿命が2倍になる(ダブルライトをしなくてよいため)。
  • atomic write: iovecで一発writeする。削除(TRIM)と併用できる。
  • PEサイクル: プログラム・イレース
  • Perconaのアトミックライト改造は#if 0..でコードを外す感じになっている。ジャーナルデータの書き込み完了を待たなくてよいので処理が速くなる。低レイテンシ。帯域幅も節約できる。アトミックライトをつかうとダブルライトをoffにしたときと同じ性能がでている。
  • ロギング(memlog api): 64Bのバッファにmv insnでかきこむ。自動的にステージングされていく。OSは関与しない。OSがクラッシュしても書き込みは行われる。64Bという小さな単位で書き込むことで1回の転送時間を短かくするという思想(PCIの最小トランザクション時間になる)。
  • iodrive2の書き込み時間15μsはCPUでさちっている。バス幅は問題ではない。Ethernetの方がレイテンシが短かい。iodriveの問題で15usか? fusion-ioのカードにはDMAエンジンとNANDflashしかのっていない。
  • auto commit memory: 1thread 1QD 9.6MIOPS
  • key-value store API: KVSのメタデータの量が減らせる。ファイルシステムレイヤをとおらない。put/getのバッチ発行。kv_get()など。perlバインディングつくってみた。性能はちゃんとでる。
  • directfs: 16EBのアドレス空間に1.2TBのflashをマッピング(VSL)して実現。1ファイル2TBまで?ファイル削除はTRIM。dedupもある?。安定した低レンテンシー(ファイルシステム由来のスパイクがない)。長谷川さんZFS好き。なぜかuberblockからの説明がはじまる。
  • extended memory, checkpointed memory, auto-commited memory.
  • extended memory: DRAMの延長でつかえるようにする。Flashをswapにする技術。OSのswapのコード自体がメンテナンスされてない問題もある。OSのswapをつかった場合と比べて10〜15倍の性能がでる。個人的にはコスト的にtieringをちゃんとやるべきと考えている。OSのswapだと読み込みに時間をつかいすぎて書き込みができなくなってしまったりしている。extended memはチューニングしてある。

[2013-06-25 15:59]

  • レイテンシの最悪値は保証できないが、フレッシュメモリを残すようにしたり、ストライピングしたりするしかない。directfsをつかうよりもxfsをつかったほうがいいらしい。pciのレイテンシが支配的になってしまうため。

_1040931

[2013-06-25 16:10]_1040930

Next-gen computer graphics architecture for NVM era / 藤田 将洋さん

  • ray tracing + big data
  • ray tracing: 波動は考えてない。光の直進性。2006年から性能向上+アルゴリズムの改良で映画でつかわれるようになってきた。
  • big data: スパコンほどではないが。アバター1PBを越えたことで話題に。geometry load 50%、texture IO 25%、Rendering 25%。レイトレーシングは実は少ない。
  • extended memory+mmapをつかう。かんたん。
  • volume rendaring: けむりとか。
  • 8192^3 = 1TB 16bit voxel.
  • 視点によってthread数が多い方がいいのか少ない方がいいのかいろいろ。原因不明.
  • file-based mmapよりもanon mmapをつかったら2.7倍くらい速くなった。
  • センサーからのデータをNVM(不揮発メモリ)に書き込んで、それを読みだしてレンダリング。Kinect fusionとか。
  • 石油を掘らずにシミュレーションで1.5TBくらいのデータを貯めてて、それを一瞬で可視化したいとか、要望がある。

[2013-06-25 16:34]

[2013-06-25 16:45]_1040932

フラッシュメモリを活用したハイパフォーマンスコンピューティングの可能性 / 伊藤 宏通さん

  • read時のデータ消失問題はfusion-ioはちゃんとケアしているらしい。
  • lustreなどの階層型ストレージの高速Tierとして。高速なワークエリアとして(広帯域・低レイテンシ)。チェックポインティング用(クラスタが大規模化しているため)。
  • 構造計算などの高速化。
  • extended memory, directkey-value store API, GPU direct. http://www.slideshare.net/fusionio/flash-memory-and-gpgpu-computing
  • extended memory: swapを積極的に使うパッチ。(Linux 3.6.0が対象)
    • 用途: 並列化が困難な(開発者がいなくなっちゃったとか)アプリケーションとか。ストレージにデータを追い出しにくいアプリ。メモリを解放しない行儀の悪いアプリ。
  • 姫野ベンチにサイズXXL(l112GB),XXXL(996GB)を追加したり、SWAPをつかうということでmadvise()を呼ぶようにしたり。12個行列をつくって、10個は参照のみでMADV_SEQUENTIAL、2個は結果格納MADV_RANDOM。madviseは非常に効果的だった。
  • SWAPをつかっている状況でもextended memoryならコンソールがつかえる状態。スピンロック待ちのスレッドがいくつかった(原因不明)。
  • 次世代不揮発性メモリの時代は2020年もあやしい。それまでの橋渡し。
  • コンテナ型の仮想マシンならextended memoryが合うかも。(アクセスあって初めてproxy httpdサーバを起動するタイプ)。
  • 2.5inchのSSDとは寿命は1〜2桁ちがう。BlogPaint

[2013-06-25 17:11]

質問コーナー

  • extended memory は R&D なので正式サポートはむつかしい(github)。ふつうのSSDでも効果はある。
  • linux 3.6.0 でデグレード(RHELでonの機能)があってハマった。

[2013-06-25 17:16]

帰りにアンケートを書いて出したらノベルティグッズのUSBメモリをもらった。

_1040934

% dmesg
...
ugen1.8: <General> at usbus1
umass1: <General USB Flash Disk, class 0/0, rev 2.00/1.00, addr 8> on usbus1
da1 at umass-sim1 bus 1 scbus11 target 0 lun 0
da1: <General USB Flash Disk 1.0> Removable Direct Access SCSI-2 device
da1: 40.000MB/s transfers
da1: 3824MB (7831552 512 byte sectors: 255H 63S/T 487C)
% su
Password:
# fdisk /dev/da1
******* Working on device /dev/da1 *******
parameters extracted from in-core disklabel are:
cylinders=487 heads=255 sectors/track=63 (16065 blks/cyl)

parameters to be used for BIOS calculations are:
cylinders=487 heads=255 sectors/track=63 (16065 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 11 (0x0b),(DOS or Windows 95 with 32 bit FAT)
    start 32, size 7831520 (3823 Meg), flag 0
        beg: cyl 0/ head 0/ sector 33;
        end: cyl 971/ head 22/ sector 22
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>
# mount_msdosfs /dev/da1s1 /mnt
# df /mnt
Filesystem 1K-blocks  Used   Avail Capacity  Mounted on
/dev/da1s1   3908116 17252 3890864     0%    /mnt
# ls -al /mnt
total 17246
drwxr-xr-x   1 root  wheel     4096 Jan  1  1980 .
drwxr-xr-x  44 root  wheel     1024 May 11 10:24 ..
-rwxr-xr-x   1 root  wheel  4392633 Apr 16 10:09 fusionio-directcache-datasheet-jp.pdf
-rwxr-xr-x   1 root  wheel  4075067 Apr 16 10:08 fusionio-ion-datasheet-jp.pdf
-rwxr-xr-x   1 root  wheel   167625 Apr 16 10:09 iodrive-two-datasheet-jp.pdf
-rwxr-xr-x   1 root  wheel  9012547 Apr 16 10:08 ioturbine-datasheet-jp.pdf