# Understanding and Dealing Hard Faults in Persistent Memory Systems (EuroSys '21)
- PM hard faults: バグやエラーで変な値がPMにかかれてしまう。
- PMEKV: 別スレッドで非同期的に削除。HashTableから削除後、別スレッドにfree依頼
- KVSが落ちると、free依頼が永続化されていなくて、リーク。
- memcached-pmem:
- PM hard faulsの影響緩和機構の提案: Arthas
- バグの種類に依存しない
- faultを取り除く
- 健全なメモリオブジェクトを残す
- Approach: Fine-grainedにチェックポイントを取得
- Design Challenges
- 効率的にチェックポイントを取得するのか?
- 従来のC/Rは粒度があらい
- PM-awareなものが必要
- どのように効率的にロールバックを実現するのか
- 従来のC/Rは直近のメモリ。
- Dependency-based Rollback (1/2)
- クラッシュぼ原因となった変数を更新した箇所を抽出してロールバック
- データの依存関係を適切なCPを選ぶ
![[Pasted image 20210528143541.png]]
- Dependency-based Rollback (2/2)
![[Pasted image 20210528143713.png]]
- EXP: Recoverability
- Objective
- 緩和するかを確認する
- Method
- 実際にアプリで発生させる
- 比較
- pmCRIU: 毎分PMのsnapshotを取得
- ArCkpt: Arthasのcheckpoint取得機構のみonで直近のCPにrollback
- Arthas:
- Result
- Arthasはすべてのケースでリカバリした。
- pmCRIU で確率的に成功するケースがある
- EXP: Efficiency of Mitigation
- 効率的にリカバーできているかを確認
- Result
- pmCRIUのほうが復旧時間は短い。
- Arthasは依存関係を検索するから
- Objective:
- Result
- Arthasのオーバヘッドは2.9-4.8%
- 実装と評価