dbgroup-nagoya-u / pmem-atomic

A utility library for atomic operations in persistent memory.
Apache License 2.0
0 stars 0 forks source link

記述子更新時の永続化 #20

Closed manabinohibi closed 1 year ago

manabinohibi commented 1 year ago

@baycedar メモレベルの雑な共有ですが,persist()を使うにはプール領域へのポインタが必要でした. (pmem_pool_.persist()みたいな) 各component側からはこのままだと参照できなさそうなので,なにかしらの方法で共有しないといけないんでしょうかね.

baycedar commented 1 year ago

たぶんそれはlibpmemobj(pool利用前提)の方のpersistだと思いますlibpmemの方だとpoolなしで直接アドレスを指定して実行できそうなので,こちらを試してみてもらえますか?たぶんlibpmemobj系のヘッダがインクルードしてあれば使えると思います.

manabinohibi commented 1 year ago

すみません,そういえばそういう話でした. 確かにできそうなので,ちょっとやってみます.

manabinohibi commented 1 year ago

とりあえず難しいことは考えずこれのアルゴリズムに合わせて永続化処理を追加しましたので,一度確認をお願いしたいです. 現状はpmem_persist()しか使ってないです.

以下気になることです.

manabinohibi commented 1 year ago

お忙しい中ありがとうございます! 確認して修正していきます.

manabinohibi commented 1 year ago

@baycedar

テストでは,giantsならPMEM,GitHub ActionsならSSDを使っておきましょう.

これはテスト側で使っているPMwCASDescriptorなどをPMEM上で保持するように変更する,ってことであっているでしょうか?

baycedar commented 1 year ago

はい,そうです.実際にはDescriptorPool用のテストだけPMEM上で行えば十分だとは思います.この辺のCMakeLists.txtテスト用のcppファイルを参考にPMEMないしSSD上のパスを設定して,テストを実行すれば十分かと思います.

補足すると,giants上では/pmem_tmppmemグループのユーザなら誰でも読み書き可能にしているので,その直下にユーザ毎のディレクトリを作成してテストで使用するような内容になっています.

manabinohibi commented 1 year ago

指摘いただいた点の修正及びテスト時のパスの指定方法の変更を行いました! 後者については挙げていただいたリンクと同じ感じにしましたが,意図通りの実装になっているでしょうか…?

再度ご確認よろしくお願いいたします.

manabinohibi commented 1 year ago

ありがとうございます.マージします.

修正していただいた点についても一度確認しておきます!