Comments (5)
Hi @hualongfeng
There needs rpma_conn_completion_wait and rpma_conn_completion_get when I use rpma_write with RPMA_F_COMPLETION_ALWAYS. But When I use RPMA_F_COMPLETION_ON_ERROR, I don't need to wait the completion status. So how I know the operation is success or failed?
When you use RPMA_F_COMPLETION_ON_ERROR
you indicate you do not want to have a completion of this particular operation. If you want to get a completion of this exact operation you should use RPMA_F_COMPLETION_ALWAYS
.
But you can indicate the operation is completed successfully by collecting a completion of an operation which comes after the one you are wanting the completion work out (*). This is related to your other questions.
After I continuously perform the rma_write operation with RPMA_F_COMPLETION_ON_ERROR, and then use rma_read with RPMA_F_COMPLETION_ALWAYS, then if rma_read returns success, it means that the previous rma_write is also successful? And is the order of these operations strictly executed in the order in which I called them? In other words, the rpma_read operation must be executed after the rpma_write is completely completed?
(*) The operations are executed in order of posting but it does not imply the completion of operation B indicates the operation A I completed. This depends on the RDMA ordering rules in general. You can learn about it here: https://tools.ietf.org/html/rfc5040#page-59
RPMA_F_COMPLETION_ON_ERROR
is useful when you want to send multiple operations and wait just for the completion of the last one which may indicate the completion of all of them. It is a way of optimizing the pipeline.
@grom72 Maybe it is a good idea to include this information in the librpma documentation.
from rpma.
@janekmi Now I imitate the code of 05-flush-to-persistent
in the example, the rpma_write()
operation uses RPMA_F_COMPLETION_ON_ERROR
, and the rpma_flush()
operation uses the RPMA_F_COMPLETION_ALWAYS
operation, and then the rpma_conn_completion_wait
and rpma_conn_completion_get
operations confirm that the rpma_flush()
operation is successful, then this Does success mean that the operation of rpma_write
is successful? In other words, I must set the RPMA_F_COMPLETION_ALWAYS
flag for these two operations(rpam_write
and rpma_flush
) to ensure that my write and flush are both successful?
from rpma.
@janekmi Now I imitate the code of
05-flush-to-persistent
in the example, therpma_write()
operation usesRPMA_F_COMPLETION_ON_ERROR
, and therpma_flush()
operation uses theRPMA_F_COMPLETION_ALWAYS
operation, and then therpma_conn_completion_wait
andrpma_conn_completion_get
operations confirm that therpma_flush()
operation is successful, then this Does success mean that the operation ofrpma_write
is successful? In other words, I must set theRPMA_F_COMPLETION_ALWAYS
flag for these two operations(rpam_write
andrpma_flush
) to ensure that my write and flush are both successful?
Hi @janekmi, I looked at the implementation of rpma_flush
, it used the rpma_mr_read
operation and read 8bytes of data. How does this operation determine that the data has been flushed? Thanks.
from rpma.
@hualongfeng please see Whitepaper when read after write technology for data flushing is described.
https://software.intel.com/content/www/us/en/develop/articles/persistent-memory-replication-over-traditional-rdma-part-1-understanding-remote-persistent.html
from rpma.
@hualongfeng is there anything else to be clarified in this issue or we can close it?
from rpma.
Related Issues (20)
- FEAT: an alternative approach to get the latest work completion directly from rpma_conn_wait() [DRAFT] HOT 1
- Redundant code shall be remove from rpma_conn_req_destroy and rpma_conn_req_reject HOT 1
- numactl: execution of `fio': No such file or directory HOT 2
- FEAT: manual control of completion events generation [DRAFT]
- examples: unnecessary rpma_conn_delete() after failed rpma_conn_req() HOT 1
- Bad throughput performance in flush-to-persistent HOT 7
- FEAT: atomic_store() to be use with all set function HOT 1
- examples: RPMA file size limitation HOT 6
- MTT - server prestate should contain also args.threads_num
- Build in Docker Dynamic Library librpma.so.0 Not Found HOT 3
- test: some MT tests run under valgrind's memcheck sometimes hangs HOT 1
- test: pthread_cond_timedwait() failed: Connection timed out
- Automatic updating of documentation at pmem.github.io fails HOT 1
- FEAT: RPMA Fio Engine (server-side) support for offset
- Are there any Windows solution files to build?
- No device found Error HOT 6
- Unify dockerfiles
- Is it time to implement rpma verify based on traditional RDMA API? HOT 1
- Plan to implement rpma flush & atomic_write based on new ibverbs flush & atomic_write APIs HOT 6
- When will the new version of librpma be released?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rpma.