Closed manabinohibi closed 1 year ago
たぶんそれはlibpmemobj(pool利用前提)の方のpersistだと思います.libpmemの方だとpoolなしで直接アドレスを指定して実行できそうなので,こちらを試してみてもらえますか?たぶんlibpmemobj系のヘッダがインクルードしてあれば使えると思います.
すみません,そういえばそういう話でした. 確かにできそうなので,ちょっとやってみます.
とりあえず難しいことは考えずこれのアルゴリズムに合わせて永続化処理を追加しましたので,一度確認をお願いしたいです.
現状はpmem_persist()
しか使ってないです.
以下気になることです.
pmem_persist()
はキャッシュとDRAMとのやりとりになってるんでしょうかね?少なくともPMEMじゃないならpmem_msync
を使うべきな気はしています.お忙しい中ありがとうございます! 確認して修正していきます.
@baycedar
テストでは,giantsならPMEM,GitHub ActionsならSSDを使っておきましょう.
これはテスト側で使っているPMwCASDescriptor
などをPMEM上で保持するように変更する,ってことであっているでしょうか?
はい,そうです.実際にはDescriptorPool
用のテストだけPMEM上で行えば十分だとは思います.この辺のCMakeLists.txtやテスト用のcppファイルを参考にPMEMないしSSD上のパスを設定して,テストを実行すれば十分かと思います.
補足すると,giants上では/pmem_tmp
をpmem
グループのユーザなら誰でも読み書き可能にしているので,その直下にユーザ毎のディレクトリを作成してテストで使用するような内容になっています.
指摘いただいた点の修正及びテスト時のパスの指定方法の変更を行いました! 後者については挙げていただいたリンクと同じ感じにしましたが,意図通りの実装になっているでしょうか…?
再度ご確認よろしくお願いいたします.
ありがとうございます.マージします.
修正していただいた点についても一度確認しておきます!
@baycedar メモレベルの雑な共有ですが,
persist()
を使うにはプール領域へのポインタが必要でした. (pmem_pool_.persist()
みたいな) 各component側からはこのままだと参照できなさそうなので,なにかしらの方法で共有しないといけないんでしょうかね.