Persistent-Memory-Programming-Model

2,716 views
2,365 views

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,716
On SlideShare
0
From Embeds
0
Number of Embeds
60
Actions
Shares
0
Downloads
37
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Persistent-Memory-Programming-Model

  1. 1. 次世代不揮発メモリを自分のプ ログラムに組み込もう 第十回 カーネル/VM探検隊 2014/5/24
  2. 2. 自己紹介 • 名前:中村 実 • 所属:武蔵中原周辺の会社 • Mail: nminoru@nminoru.jp • Twitter:@nminoru_jp • Web:http://www.nminoru.jp/~nminoru/
  3. 3. 不揮発メモリの進化? HDDを不揮発メモリが 置き換える メインメモリの一部が 不揮発に メインメモリが全部 不揮発に • SSD • PCIe-SSD • Persistent Memory
  4. 4. Persistent Memory • メモリベンダーは開発中 • SNIAなどが団体がプログラムインターフェイス を策定中 • アプリケーションベンダーの中には… 数年内に世の中のアプリケーションがPersistent Memoryを直接使うようになるよ!
  5. 5. Non-Volatile Memory v.s. Persistent Memory • Non-Volatile Memory(NVM) – 不揮発なメモリ全般を指す言葉 – インターフェイスはブロック、メモリ、独自など • Persistent Memory(PM) – NVMのうち以下の特徴を備えたもの言う • Byte-addressable (バイト単位でアドレス指定可能) • Load/Store access (CPUから直接ロード・ストア可能) • Memory-like performance (高速で均一なアクセス速 度) • Probably DMA-able (DMAが使用可能。RDMAも)
  6. 6. 不揮発性メモリ NAND Flash Phase Change Memory(PCM), PRAM ReRAM, RRAM (STT-)MRAM 物性 相変化 抵抗変化 磁気変化 容量/チップ ~128Gbit 128Mbit 2Mbit 64Mbit 書き換え時間 10μ秒 100n秒 10n秒 7n秒 書き換え回数 104~5 106 1011~12 1015 主な製造メーカ 東芝、SanDisk、 Samsung Micron Panasonic Everspin、東芝 • NAND Flashは一度書き込んだ領域に再度書込みをする前に「消去」の動作が必 要。 • NAND Flashは書き換え回数が厳しいため、均等に書き込みを行えるようにwear levelingが必要。PCMにも必要。 • 現在のPanasonicのReRAMの書き換え回数は105回数程度
  7. 7. どうやってPMを入手する • 今のところ手頃に買えるPCM/ReRAM/MRAM はないようです • DIMMファクターのNAND Flashはある – Viking Technology NV-DIMM • http://www.vikingtechnology.com/nvdimm-faq – SanDisk ULLtraDIMM • http://www.sandisk.co.jp/enterprise/ulltradimm-ssd/ • みんなどうしているの? – とりあえずDRAMをPMに見立てて実験しているヨ
  8. 8. PMの適用先(1) • DB – DBはトランザクションのコミット毎にストレージにロ グを書き込む必要がある – 1回に書き込むトランザクションのデータは小さい (128バイト以下のことも) • DBトランザクションをPMでキャッシュ – ストレージに書き込む前にPMでキャッシュ – 小容量でも大きな効果 • PostgreSQLならインスタンス毎に8KBあればOK
  9. 9. PMの適用先(2) • Remote Direct Memory Access(RDMA) – RDMAはネットワークにつながった別のマシンのメ モリを直接読み書きする仕掛け – ネットワークにはInfiniBandやRoCEを使う • PM+RDMA – HA(DRDBとか)や分散ファイルシステム(Cephとか) のレプリケーション・ミラーリングが非常に低遅延 に行える!
  10. 10. PMのプログラムインターフェイス • NVM Programming Technical Work Group (http://snia.org/forums/sssi/nvmp) – Working Draft • http://snia.org/sites/default/files/NVMProgrammingModel_ v1.pdf – Andy Rudoff 氏のSDC 2013講演資料 • http://www.snia.org/sites/default/files2/SDC2013/presentat ions/GeneralSession/AndyRudoff_Impact_NVM.pdf • NVM Programmingはまだ概念をVerbsで提示す るだけでAPIになっていない
  11. 11. PMFS • PMをファイルシステムとして公開 – SNIAの”NVM.PM.FILE”プログラミングモデルに準拠 – ramfsのようにロード/ストア命令が直接PMに可能 • 実装 – Linuxカーネルモジュール https://github.com/linux-pmfs/pmfs – 現状ではx86_64でしか動作しない • 使い方 – カーネルオプション ”memmap=2G$4G”を指定すると4GBの位置から2GBを予約 – マウント #mount -t pmfs -o physaddr=0x100000000,init=2G none /mnt/pmfs – ファイルを作成してmmap
  12. 12. pmem • PMをmallocスタイルで確保するライブラリ https://github.com/pmem/linux-examples • pmemはPMFSのようなPM Filesystemを前提と している void* pmp = pmemalloc_init(path, MY_POOL_SIZE); void* addr = pmemalloc_reserve(pmp, size); pmemalloc_activate(pmp, addr);
  13. 13. その他プログラムで必要なこと • キャッシュからPMにwrite-backさせる必要がある • 一般命令 – x86 Instructions • INVD(Invalidate Internal Cache) • MOVNTQ(Store of Quadword Using Non-Temporal Hint) • ハードサポート – Epoch Hardware Modifications • キャッシュへの書込み時期をepoch IDで記録。一定epoch が経過したキャッシュはwrite backする。 • Jeremy Condit,et al.,: “Better I/O Through Byte-Addressable, Persistent Memory”, SOSP09
  14. 14. 参考ページ • Mnemosyne – Haris Volos, et al.,“Mnemosyne: Lightweight Persistent Memory”, ASPLOS 2011 http://research.cs.wisc.edu/sonar/projects/mnemosy ne/ • NV-HEAP – J. Coburn, et al. “NV-Heaps: Making Persistent Objects Fast and Safe with Next Generation, Non-Volatile Memories”, ASPLOS 2011 • DAX(Direct Access Block Layer) – http://lwn.net/Articles/591779/

×