Your SlideShare is downloading. ×
0
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Persistent-Memory-Programming-Model

1,518

Published on

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

No Downloads
Views
Total Views
1,518
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
22
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. 次世代不揮発メモリを自分のプ ログラムに組み込もう 第十回 カーネル/VM探検隊 2014/5/24
  2. 自己紹介 • 名前:中村 実 • 所属:武蔵中原周辺の会社 • Mail: nminoru@nminoru.jp • Twitter:@nminoru_jp • Web:http://www.nminoru.jp/~nminoru/
  3. 不揮発メモリの進化? HDDを不揮発メモリが 置き換える メインメモリの一部が 不揮発に メインメモリが全部 不揮発に • SSD • PCIe-SSD • Persistent Memory
  4. Persistent Memory • メモリベンダーは開発中 • SNIAなどが団体がプログラムインターフェイス を策定中 • アプリケーションベンダーの中には… 数年内に世の中のアプリケーションがPersistent Memoryを直接使うようになるよ!
  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. 不揮発性メモリ 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. どうやって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. PMの適用先(1) • DB – DBはトランザクションのコミット毎にストレージにロ グを書き込む必要がある – 1回に書き込むトランザクションのデータは小さい (128バイト以下のことも) • DBトランザクションをPMでキャッシュ – ストレージに書き込む前にPMでキャッシュ – 小容量でも大きな効果 • PostgreSQLならインスタンス毎に8KBあればOK
  9. PMの適用先(2) • Remote Direct Memory Access(RDMA) – RDMAはネットワークにつながった別のマシンのメ モリを直接読み書きする仕掛け – ネットワークにはInfiniBandやRoCEを使う • PM+RDMA – HA(DRDBとか)や分散ファイルシステム(Cephとか) のレプリケーション・ミラーリングが非常に低遅延 に行える!
  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. 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. 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. その他プログラムで必要なこと • キャッシュから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. 参考ページ • 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/

×