SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
はやみず   ゆうと
はやみず ゆうと (早水 悠登)
id:hayamiz, @hayamiz
修士課程 入院1年目
 研究室:情報爆発の爆心地
就職活動中 だれか雇って!
卒論:Transactional Memory関係
現在:データベース関係

          Transactional Memory Primer   2
1.    Transactional Memory(TM)とは
2.    現状(のような話)
     1.   Hardware TM
     2.   Software TM
3.    STMメリット、デメリット
4.    (時間があったら)おまけ



                    Transactional Memory Primer   3
知ってる人はどのくらいいる?




      Transactional Memory Primer   4
並列プログラムの同期手法の1つ
ロック(排他的制御)によっておこる困った
問題をいくつか解決してくれる
 Dead lock
 Priority inversion
 …
×ロックの代替




               Transactional Memory Primer   5
ロックによる並列制御
 スレッドA                      スレッドB
    Lock(m)
                                       Lock(m)




         Transactional Memory Primer             6
ロックによる並列制御
 スレッドA                            スレッドB
 Start Txn
                                     Start Txn
 TMload(x)
 TMstore(y,x+1)
           衝突
                                     TMload(y)
                                     TMstore(x,y+1)
 Restart Txn


               Transactional Memory Primer        7
ロック
 排他的
 悲観的 … みんなでさわるとマズいよね、、、
Transactional Memory
 投機的
 楽観的 … マズいことになったらリセットすれ
 ばいいじゃん

イメージはつかめましたか?

             Transactional Memory Primer   8
クリティカルセクション
→トランザクション
Lock(mutex) → Start transaction
Unlock(mutex) → Commit transaction
共有メモリアクセス
→ TMのメモリアクセスAPI



             Transactional Memory Primer   9
1.    Transactional Memory(TM)とは
2.    現状(のような話)
     1.   Hardware TM
     2.   Software TM
3.    STMメリット、デメリット




                    Transactional Memory Primer   10
1.   Hardware Transactional Memory
2.   Software Transactional Memory

     Hybrid Transactional Memory
      忘れ去られてる感




                 Transactional Memory Primer   11
元祖TM (Maurice Herlihy, 1993)
最近まで:シミュレータの実装のみ
最近:Sun Rock Processor
 とうとう動くハードウェアが登場か?
 延期
 延期




           Transactional Memory Primer   12
Sun買収 \(^o^)/




         Transactional Memory Primer   13
Sun Rock Processor
  プロトタイプ実装の論文は出ている
  何ができるの?
    K-word Compare&Swap が作れたり
    効率良く lock-free data structure が実装できたり
    複雑な処理 ×
      トランザクションのリスタート:TLB miss, async
      interrupt, branch misprediction, floating point division,
      …




                  Transactional Memory Primer          14
アカデミックの世界で流行
PPoPP 2007 2本
PPoPP 2008 9本
PPoPP 2009 4本
PPoPP 2010 8本
ライブラリ、言語も増えつつある
DSTM2(Java), Deuce STM(Java),
TinySTM(C/C++), TL2(C), RSTM(C++),
Clojure

            Transactional Memory Primer   15
使い物になるの?
速さが必要なものには使えない
 2~3倍遅くなる
 スクリプト言語の機能としてはアリでは?
複雑なデータ構造:有効そう
 例:巨大なグラフ、ハッシュテーブル
 →各スレッドは一度にごく一部しか編集しない
 →データの競合がない
 →スケールする


       Transactional Memory Primer   16
1.    Transactional Memory(TM)とは
2.    現状(のような話)
     1.   Hardware TM
     2.   Software TM
3.    STMメリット、デメリット




                    Transactional Memory Primer   17
Hardware TM … できないことが多すぎる
ので割愛




        Transactional Memory Primer   18
○ Deadlockが起こらない
 ヤバくなったらリセットすればおk




         Transactional Memory Primer   19
○ Composable
 ロックを使ったプログラム … ロックする順番
 に気をつける必要
 STM … どんどんトランザクションをネストし
 てもおk




           Transactional Memory Primer   20
○ Composable

           Lock(A)                                 Lock(B)
Function                              Function
call          Lock(B)                 call            Lock(A)




              祝・デッドロック
                     Transactional Memory Primer        21
○ Priority inversionがおきない

  High

                 うごけない!!
Middle


  Low

Priority
              Transactional Memory Primer   22
○ Priority inversionがおきない

                              Mars Pathfinder
                              Priority inversionが
                              原因で再起動
                              Realtime systemで
                              は致命的



           Transactional Memory Primer     23
○ Priority inversionがおきない
 トランザクション同時が衝突したとき
 優先度に応じてリスタートするトランザク
 ションを決定
   できるらしい




            Transactional Memory Primer   24
× データ競合が頻発する場合くそ遅い
 トランザクションがリスタートしまくる
 カウンタのインクリメント
 線形リストのinsertion, deletion




         Transactional Memory Primer   25
× 取り消し可能な命令しかトランザク
ション中に実行できない
 リスタートできないといけない
 I/Oができない!!!
 I/Oを実行するトランザクションは排他的に、
 という逃げの手段も
  TMのメリットが損なわれてしまう




        Transactional Memory Primer   26
ほかにもいろいろ、、、
もう忘れました




      Transactional Memory Primer   27
Hardware TM
 搭載製品が世に出ることはあるのだろうか、、
Software TM
 いろいろ制限はあるけれど
 いろいろメリットもあります
   嬉しいシーンはあるはず
 Clojure!



              Transactional Memory Primer   28
道具としてのsoftware transactional
memory
Atomic blockの一実装
   parallelFor(i <- 0..99) {
     atomic {
       y[i] = x[i+1] + x[i];
     }
   }
Lock Allocation
              Transactional Memory Primer   29

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Linux女子部 iptables復習編
Linux女子部 iptables復習編Linux女子部 iptables復習編
Linux女子部 iptables復習編
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdf
 
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
普通の人でもわかる Paxos
普通の人でもわかる Paxos普通の人でもわかる Paxos
普通の人でもわかる Paxos
 
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
 
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
 
Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)
Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)
Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
Linux Preempt-RT Internals
Linux Preempt-RT InternalsLinux Preempt-RT Internals
Linux Preempt-RT Internals
 
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
 
TLA+についての話
TLA+についての話TLA+についての話
TLA+についての話
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
 
不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 

Andere mochten auch

C-x C-f のなかのひと
C-x C-f のなかのひとC-x C-f のなかのひと
C-x C-f のなかのひと
Yuto Hayamizu
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
Brendan Gregg
 

Andere mochten auch (20)

Understanding Hardware Transactional Memory
Understanding Hardware Transactional MemoryUnderstanding Hardware Transactional Memory
Understanding Hardware Transactional Memory
 
Transactional Memory for Smalltalk
Transactional Memory for SmalltalkTransactional Memory for Smalltalk
Transactional Memory for Smalltalk
 
Transactional Memory
Transactional MemoryTransactional Memory
Transactional Memory
 
C-x C-f のなかのひと
C-x C-f のなかのひとC-x C-f のなかのひと
C-x C-f のなかのひと
 
Fine-grained Measurement of PostgreSQL
Fine-grained Measurement of PostgreSQLFine-grained Measurement of PostgreSQL
Fine-grained Measurement of PostgreSQL
 
指の話
指の話指の話
指の話
 
Emacs Lispのある生活
Emacs Lispのある生活Emacs Lispのある生活
Emacs Lispのある生活
 
Beyond EXPLAIN: Query Optimization From Theory To Code
Beyond EXPLAIN: Query Optimization From Theory To CodeBeyond EXPLAIN: Query Optimization From Theory To Code
Beyond EXPLAIN: Query Optimization From Theory To Code
 
より深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニングより深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニング
 
Transactional Memory
Transactional MemoryTransactional Memory
Transactional Memory
 
VLDB2015 会議報告
VLDB2015 会議報告VLDB2015 会議報告
VLDB2015 会議報告
 
The Art of Performance Evaluation
The Art of Performance EvaluationThe Art of Performance Evaluation
The Art of Performance Evaluation
 
Linux Systems Performance 2016
Linux Systems Performance 2016Linux Systems Performance 2016
Linux Systems Performance 2016
 
Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
 
Velocity 2015 linux perf tools
Velocity 2015 linux perf toolsVelocity 2015 linux perf tools
Velocity 2015 linux perf tools
 
性能測定道 実践編
性能測定道 実践編性能測定道 実践編
性能測定道 実践編
 
性能測定道 事始め編
性能測定道 事始め編性能測定道 事始め編
性能測定道 事始め編
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at Netflix
 
Slideshare ppt
Slideshare pptSlideshare ppt
Slideshare ppt
 

いいかげんな人のためのTransactional Memory Primer