Dennis Potter
6444a9e337
Split configuration in an in and out part
2018-07-15 13:51:18 +02:00
Dennis Potter
6975854376
Solved problem with blocking thread
...
In the case that a node was already disconnected but not stopped,
rdma_cm_get_event always blocked and we coulnd't join the threads. This
is solved in this commit by registering SIGUSR1 to the CM event thread.
This bug originated in issue #152
2018-07-14 16:46:23 +02:00
Dennis Potter
3d01174859
Merge branch 'ib-send-inline' into develop
2018-07-14 15:26:12 +02:00
Dennis Potter
95e2a7c20b
Added extra check for inline mode. Closes #164
...
The actual maximum size for inline mode is now returned to the user and
there is a check that inline_mode is either 0 or 1. Furthermore, this
commit includes a minor improvement in ib_write()
2018-07-14 15:20:24 +02:00
Dennis Potter
1d6ee5aec8
Node can determine if data should be send inline
...
The user can set the maximum size of the inline data and the node checks
if a sample can be send inline. This commit doesn't contain a info
message to the user about what the final max inline size will be. (The
HCA will probably change the value set by the user.)
2018-07-13 13:50:30 +02:00
Sonja Kolen
bfd25b55db
check if publish/ subscribe topic is set before subscribing or publishing, provide a warning to the user in case subscribing/ publishing cannot be done because of lack of topic
2018-07-13 13:36:13 +02:00
Dennis Potter
b1b778f542
Added buffer to ib_write()
...
Now, ib_write() reads every cycle cnt values from the Completion Queue.
If it is not able to return them to the framework immediately, it
temporarily saves them on a stack.
ib_write() checks every cycle if the stack is non-empty and if it is
possible to return values from the stack to the framework.
2018-07-13 12:21:59 +02:00
Dennis Potter
4cd8fc7150
ib_write and ib_read handle memory in a way that the pool doesn't underrun now. Sending data inline is broken in this commit
2018-07-12 17:49:17 +02:00
Dennis Potter
72e627b327
Fixes #166 , all node interfaces are modified
...
The functions now look like this
int node_read(struct node *n, struct sample *smps[], unsigned cnt, unsigned *release);
int node_write(struct node *n, struct sample *smps[], unsigned cnt, unsigned *release);
This commit enables nodes to control how many samples will
be released by the framework through *release
2018-07-11 18:14:29 +02:00
Dennis Potter
29ff75fad3
Removed some obsolete code for completion queues
2018-07-08 15:32:28 +02:00
Dennis Potter
746fd2f694
Refactored ib_write in the same way as ib_read (described in #153 ). Merged separate completion queue polls to ib_write. Closes #167
2018-07-08 15:00:47 +02:00
Dennis Potter
ebb5446305
Refactored the way ib_read() handles the refence counts for the samples it uses. This is based on the algorithm described in issue #153
2018-07-08 14:05:48 +02:00
Dennis Potter
6150a36411
Changed all node_write() functions
2018-07-07 17:48:07 +02:00
Dennis Potter
4663f55e4b
Changed all node_read() functions to support a *cnt instead of cnt
2018-07-07 17:07:45 +02:00
Dennis Potter
06e7434d6c
Solved some state problems. This commit also solves #154 , which was caused by a non-terminated thread. (This thread will be removed in a later commit anyway
2018-07-07 15:34:07 +02:00
Dennis Potter
836adee4d6
Node is able to clean everything up and reconnect. Node can abort if it is in STARTED and in CONNECTED state
2018-07-07 14:36:23 +02:00
Dennis Potter
80da4801e1
Source and target successfully connect and node changes status from STATE_STARTED to STATE_CONNECTED in this commit. Next step will be to fix ib_stop and ib_disconnect to make the target able to accept new connections.
2018-07-07 13:08:08 +02:00
Dennis Potter
e2061e58fc
Events are now monitored in a separate thread. The segmentation faults we saw earlier were caused because we exited ib_start before we created a protection domain, which is used by memory_allocation
2018-07-07 12:49:22 +02:00
Dennis Potter
2bf122991c
Started to convert the RDMA_CM_EVENT loop to a separate thread and added a new state to the node. This commit is still broken
2018-07-05 18:26:32 +02:00
Dennis Potter
43dc305fde
Placed sanity checks to a separate function ib_check. Closes #151
2018-07-05 15:30:33 +02:00
Dennis Potter
f976ce5418
Added debug messages with different verbosity levels
2018-07-05 13:57:25 +02:00
Dennis Potter
781f405a48
Adhered to coding style
2018-07-04 19:04:08 +02:00
b84210b91d
cmake: add support for infiniband node-type
2018-07-04 17:50:26 +02:00
4d09482fdb
Merge branch 'infiniband' into develop
...
# Conflicts:
# Makefile
# Makefile.config
# Makefile.help
# lib/Makefile.villas-ext.inc
# lib/Makefile.villas.inc
# lib/memory.c
# lib/nodes/Makefile.inc
2018-07-04 16:50:36 +02:00
8cd1b93225
cmake: fix linking of libiec61850 on Ubuntu
2018-07-04 16:27:43 +02:00
Dennis Potter
86363f06da
Added better handling for FLUSH_ERRs of receive work queue
2018-07-04 15:37:25 +02:00
Dennis Potter
8f52d167f5
Fixed wrong directory in include of ib.h
2018-07-04 15:26:22 +02:00
Dennis Potter
51519c06df
Implemented new memory system implementation in infiniband node
2018-07-04 15:15:24 +02:00
d9e041a525
cmake: fix detection of libwebsockets
2018-07-04 15:09:08 +02:00
Dennis Potter
f3a5b81649
Merge branch 'infiniband-memory' into infiniband
2018-07-04 10:50:21 +02:00
fc6f63b192
cmake: change sub-libraries to be statically linked
2018-07-03 18:25:15 +02:00
Dennis Potter
0470ebda33
Fixed indentations
2018-07-03 18:01:49 +02:00
Dennis Potter
a825009457
Removed bugs with regard to the zero-copy implementation. This commit is able to send -r 5000 -l 50000 with villas pipe. With a higher -r, the source throws errors that there aren't any receive WRs, so probably pipe doesn't fill up the WRs fast enough
2018-07-03 17:39:06 +02:00
45b121d884
infiniband: do not build memory allocator if node is not acticated
2018-07-02 16:05:05 +02:00
Dennis Potter
669d75a666
Basic implementation of zero-copying is done. The is still a problem with rread = hook_read_list. It doesn't return anything after the fourth read
2018-07-02 16:03:16 +02:00
bb70be0b2c
memory: refactored memory subsystem
2018-07-02 15:57:56 +02:00
Dennis Potter
c055010be1
ib_write() now takes data directly from the super pool instead of copying it. ib_read() still copies data and the code needs cleanup after zero-copy is implemented
2018-07-01 12:56:03 +02:00
Dennis Potter
c70dbe2263
Resolved memory_ib related compile and link errors
2018-06-30 18:20:30 +02:00
0a4f1a3731
cmake: add install targets and several other cpack improvments
2018-06-30 01:29:45 +02:00
c01393bc82
infiniband: add new memory type
2018-06-29 17:37:10 +02:00
9094941b4c
cmake: add more CMakeLists.txt
2018-06-29 14:36:50 +02:00
c16c53ffb9
test_rtt: fix compiler warnings
2018-06-29 14:36:50 +02:00
34e6891192
iec61850: fix ether_aton() call on OS X
2018-06-29 14:36:50 +02:00
179aa2d553
cmake: add new CMakeLists.txt
2018-06-29 14:35:39 +02:00
Dennis Potter
1e2d4158f0
Added possibility to add port dynamically, added some config warnings and added a WR refresh function to ib_read
2018-06-28 17:24:28 +02:00
Dennis Potter
95393eeb35
Forgot to acknowledge events which caused the rdma_cm_id to block.
2018-06-28 14:43:08 +02:00
Dennis Potter
5598f93582
Implemented disconnect function on source and target side. The cleanup function doesn't go through completely yet, probably because rdma_destroy_id blocks because not everything in the rdma_cm_id is destroyed yet.
2018-06-28 12:46:16 +02:00
Dennis Potter
1df18da3f2
Added Work Completion threads. Send Completion thread checks for errors, Receive Completion Queue is still empty.
2018-06-27 17:01:47 +02:00
Dennis Potter
7631ec98ed
Refactored the rdma_cm_id structure
2018-06-27 11:21:28 +02:00
Dennis Potter
9e5836001d
Node is able to send messages. A lot is hardcoded and this was only meant to be a first setup of a working node.
2018-06-27 10:37:46 +02:00