pmtest's People
pmtest's Issues
Does insertion of `PMTest_*` instrumentation need to be done manually? (and other questions on usage)
Hello developers,
I was wondering whether or not the instrumentation PMTest_*
function (i.e. PMTest_assign
, PMTest_flush
, PMTest_fence
), must be placed manually, or if there is some kind of compiler plugin that I'm missing. Assume I am not using any transactions and am doing it the old-fashioned manually clflush; sfence
(or clwb
/clflushopt
) approach to persistence. I was looking to modify this...
Since new->next
and new->value
are meant to persist before the write to root->head
, but this example deliberately violates this by persisting root->head
before new->value
. How would I catch this in PMTest? I got...
void list_insert_inconsistent(struct list_root *root, node_id node, int value)
{
struct list_node *new = NODE_PTR(root, node);
PMTest_isPersistedBefore(&new->value, sizeof(new->value), &root->head, sizeof(root->head));
PMTest_isPersistedBefore(&new->next, sizeof(new->next), &root->head, sizeof(root->head));
new->next = root->head;
PMTest_assign(&new->next, sizeof(new->next));
PMTest_flush(&new->next, sizeof(new->next));
PMTest_fence();
root->head = node;
PMTest_assign(&root->head, sizeof(root->head));
PMTest_flush(&root->head, sizeof(root->head));
PMTest_fence();
new->value = value;
PMTest_assign(&new->value, sizeof(new->value));
PMTest_flush(&new->value, sizeof(new->value));
PMTest_fence();
}
I'm wondering if PMTest_assign -> PMTest_flush -> PMTest_fence
can be kind of automated based on the instructions themselves, like PMDK's pmemcheck does. Is this possible, or do I have to manually instrument everything? Also am I correct in my translation to using PMTest?
Finally, let's say that I do not wish to sendTrace
yet... for example, let's say that I have a non-blocking persistent data structure (so transactions are out of the question) that lazily persists certain fields; how does PMTest handle this? As well, during atomic
operations, such as compare-and-swap
, how should I go about instrumenting that?
Thanks in advance!
make release error
Hi, sihang
Error occurred when executing make.
/usr/bin/ld: build/objects/pmtest.o: undefined reference to symbol '__tls_get_addr@@GLIBC_2.3'
//usr/lib64/ld-linux-x86-64.so.2: error adding symbols: DSO missing from command line
CentOS Linux release 7.6.1810 (Core)
glibc-2.17-260.el7_6.3.x86_64
gcc/g++ version : 4.8.5
Concurrent-Safety of PMTest?
Hello,
I'm wondering whether or not PMTest's transactions are concurrent-safe. As in, does it require external synchronization to access persistent memory? Is it possible to implement persistent non-blocking concurrent algorithms using these transactions?
Code Examples
Hello,
Are there code examples available? Thanks!
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.