1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-16 00:00:02 +01:00
Commit graph

97 commits

Author SHA1 Message Date
c249dcc89d refactor: use C-style commenting everywhere 2019-03-26 15:39:07 +01:00
5b553f2496 refactor: use strtok_r() instead of strtok() 2019-02-18 01:09:33 +01:00
8f7c8ae71e update copyright year to 2019 2019-01-13 00:42:39 +01:00
24dcd04b95 infiband: remove non-supported infiniband_fd() function 2019-01-09 14:36:46 +01:00
70cc94b5c7 refactor: warn() => warning() due to name collision with libc 2018-11-30 21:37:52 +01:00
6f7386afbf fix missing include 2018-11-30 21:35:14 +01:00
30576ba7ad refactoring: move config to villas/node/config.h 2018-11-30 21:00:53 +01:00
Dennis Potter
0819207c55 Fixed bug which improved latency about 33%.
An ugly workaround was removed in 3c33696265 and 159cefb14d. Besides making the code a little cleaner, it was expected that this would improve latency. However, it did not.

Cause for this was a bug that disabled inline messages for all messages. This is fixed in this commit. Now, the anticipated latency improvement can be seen. Compared to 159cefb14d, the latency for samples with 16 values or less is up to 33% better.

Furthermore, the check for signaling is fixed and some typos are fixed.
2018-11-02 12:46:12 +01:00
Dennis Potter
159cefb14d Added periodic signalling which is necessary in implementation without additional buffer 2018-10-21 12:35:21 +02:00
Dennis Potter
3c33696265 Removed signaling for inline messages. Fixes #206
This should decrease the time that is spent in the write-function a little bit and made an extra buffer obsolete.
2018-10-20 17:05:52 +02:00
Dennis Potter
1d918229e8 Forgot to remove a debug print statement 2018-10-14 12:39:49 +02:00
Dennis Potter
1328f190ad Removed obsolete BUSY/EVENT flag from Infiniband node 2018-10-14 01:54:54 +02:00
Dennis Potter
ed3a27fefd Fixed wrong meta data correction and added macros for sample size 2018-10-11 14:18:30 +02:00
Dennis Potter
7ae2d137fb Fixed the issue as discussed in #195 2018-09-09 12:37:46 +02:00
52492d47d1 Merge branch 'develop' of git.rwth-aachen.de:acs/public/villas/VILLASnode into develop 2018-08-20 18:40:46 +02:00
8a1947b95f infiniband: adapt to new signal code and separate node-type configuration into in/out sections 2018-08-20 18:29:12 +02:00
7c61f19fd2 refactor: memory_type_heap -> memory_heap 2018-08-13 14:57:32 +02:00
Dennis Potter
d742364637 Added STATE_PENDING_CONNECT 2018-08-13 14:50:49 +02:00
Dennis Potter
90680613c3 Removed whitespace in functioncalls 2018-08-13 14:07:29 +02:00
Dennis Potter
14a7b5cf8d Changed signature of memory_ib_get_mr.
Furthermore, a preprocessor macro pool_buffer was added to get the
address of a pool's buffer.

Discussed in #193.
2018-08-13 12:32:04 +02:00
1f16b4bf07 refactor: {sample,signal}_{put,get} -> {sample,signal}_{incref,decref} 2018-08-13 00:00:09 +02:00
32de7761fe refactor:
- DEFAULT_SAMPLELEN -> DEFAULT_SAMPLE_LENGTH
- DEFAULT_QUEUELEN -> DEFAULT_QUEUE_LENGTH
2018-08-12 23:59:15 +02:00
f35588aad8 refactor:
- SAMPLE_LEN() -> SAMPLE_LENGTH()
- SAMPLE_DATA_LEN() -> SAMPLE_DATA_LENGTH()
2018-08-12 23:59:15 +02:00
Sonja Kolen
eabd3dbb32 node infiniband: fixed a typo 2018-08-08 09:50:05 +02:00
Dennis Potter
0cd4e07173 Fixed another small bug in Infiniband node.
Both RC and UC are connected. So the check I changed should check for
NOT UDP (UD), instead of TCP (RC)
2018-08-07 17:52:45 +02:00
Dennis Potter
33d59938eb Added one more comment line on custom librdmacm 2018-08-07 17:36:29 +02:00
Dennis Potter
ec60f1d2c2 Added support for unreliable connections 2018-08-07 16:45:05 +02:00
Dennis Potter
71134a4c81 Node now already posts Work Receives if it accepts the connections.
Before, it waited until it is really connected. That caused problems,
because the send side will start immediately sending if it is connected.
Especially at high rates (>100k) this was a problem.
2018-08-04 17:34:52 +02:00
Dennis Potter
027555c34d Added flag in config to enable/disable connection fallback. Closes #188 2018-08-02 10:41:37 +02:00
Dennis Potter
aefe40dc35 Removed IMM mode. Replaced hard coded integers by constants 2018-08-01 18:26:42 +02:00
Dennis Potter
b96a55237b Added pthread_testcancel() in ib_read()
As discussed in issue #186 and on IM. This function check every 2048th
cycle if the thread should be canceled.

This also removed the need for 'kill -9' in the integration test.
2018-07-26 15:46:41 +02:00
Dennis Potter
45ddebf5d1 Performance improvement for UDP
Before this commit, the Infiniband node recreated the address handle for
the remote node during every cycle. Now, it only creates it directly
after it got ah_attr.
2018-07-25 18:51:28 +02:00
Dennis Potter
dfd694bdc2 Some small changes in default settings and warning 2018-07-25 16:22:34 +02:00
Dennis Potter
427d715279 Fixed two minor bugs in Infiniband node 2018-07-23 16:52:38 +02:00
Dennis Potter
6296d4217e Added a few corrections for sample size
* Meta data was not included in the calculation which determines if
  sample should be send inline. This caused errors
* Meta data was not substracted from sample->length on receive side
2018-07-21 13:11:46 +02:00
Dennis Potter
591f9f73bd Added meta data in transfer
ib_write() and ib_read() now point to the sequence, ts_origin, and format
members of struct sample in a separate scatter/gather element each.

ib_read() measures the time with time_now() (from villas/timing.h) and
sets all flags at receive side.
2018-07-21 12:52:25 +02:00
Dennis Potter
2c3ddfd0c2 Merge branch 'ib-rearrange-qp' into develop
Closes #152. As described in #182, we will not rearrange the Queue Pairs
for connected mode. As soon as we test many-to-one connections for the
unrealiable connection, we will look again at this issue.
2018-07-21 12:14:25 +02:00
Dennis Potter
8704683bf2 Replaced send WC stack by queue 2018-07-21 12:07:43 +02:00
Dennis Potter
0e6d962c1a Merge branch 'ib-rearrange-qp' of git.rwth-aachen.de:acs/public/villas/VILLASnode into ib-rearrange-qp 2018-07-20 23:42:34 +02:00
Dennis Potter
a5068e28ea Replace sleep by a better check
Prior to this commit, we called rdma_disconnect() and waited for a fixed
amount of time. This check was kind of arbitrary. Now, we keep polling
the receive Completion Queue until ib->conn.available_recv_wrs is zero
and all receive samples are thus given back to the framework.
2018-07-20 23:40:43 +02:00
Dennis Potter
8029c47113 Fixed bug which arrised in afb8b57156 2018-07-20 23:34:52 +02:00
Dennis Potter
be87846a5a Fixed way of iterating scatter/gather list 2018-07-20 22:55:33 +02:00
Dennis Potter
afb8b57156 Removed option to manually add QP type
The QP type is dependend on the port space of the RDMA CM ID. If the
RDMA CM ID is set to TCP, the QP has to be set to a RC. If it is set to
UDP, it has to be set to UD.
2018-07-19 20:42:20 +02:00
Dennis Potter
3acc3df7c4 ib_read() now works for UDP
Node is now able to send data in RDMA_PS_UDP mode. Right now it creates
a new rdma_cm_id for every connection request. We could/should do this
differently
2018-07-19 20:33:41 +02:00
Dennis Potter
2b323c3781 Fixed a bug at the send side of UDP 2018-07-19 18:47:27 +02:00
Dennis Potter
cfa93292b0 Added support for RDMA_PS_UDP at send side 2018-07-19 18:32:06 +02:00
Dennis Potter
2bee7d24dd Added rdma_event_str()
This replaces the manual translation of enumerations in the switch
statements.
2018-07-17 11:10:05 +02:00
Dennis Potter
3df5d37b15 Added warning if not all samples are returned 2018-07-16 17:10:52 +02:00
Dennis Potter
0230389593 Node gives back samples to framework at disconnect
The node blocks a certain amount of samples to use in its queues.
Before this commit, the only moment to release them to the framwork was
during ib_read()/ib_write().

But, there were a couple of problems. In the following I will take
ib_read() as example, but ib_write() will be analogous.

The first problem was:
1. If a QP disconnect, all Work Requests get invalidated and will be
   "flushed" to a Completion Queue.

A possible solution would be, to save them in an intermediate buffer.
We could then "exchange" these samples with the framework as soon as the node
connects again and ib_read() is called again. So, we would get valid
samples from the framwork, post them, and give the "invalidated" samples back.

But, there is a second problem:
2. We cannot assume that ib_read() is ever called again after
   ib_disconnect(). This is for example the case if the disconnect is
   triggered by ib_stop() and not by an external node that disconnects.

   This would result in a memory leak, since the samples would never be
   returned to the framework, although the node is stopped.

Because of this second problem, I decided to return all samples with
sample_put() in the disconnect function. An additional benefit is that
this is more convenient than another buffer to temporarily safe the
invalidated samples.
2018-07-16 13:41:53 +02:00
0406c46bb4 fix indention of infiniband node 2018-07-16 11:00:15 +02:00