# 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% - 実装と評価