1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00
No description
Find a file
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
clients cmake: improve handling of protofbuf outputs 2018-07-03 18:24:20 +02:00
cmake cmake: add new modules for finding libibverbs and librdmacm 2018-07-04 17:27:45 +02:00
doc cmake: add install targets and several other cpack improvments 2018-06-30 01:29:45 +02:00
etc It is a bad idea to have a smaller CQ than recv. Queue 2018-07-16 13:41:42 +02:00
include/villas Cleaned up some obsolete code. Closes #176 2018-07-16 10:54:15 +02:00
lib Node gives back samples to framework at disconnect 2018-07-16 13:41:53 +02:00
packaging cmake: add support for infiniband node-type 2018-07-04 17:50:26 +02:00
plugins example_hook: compile in C again 2018-07-04 15:08:08 +02:00
src Changed memory type and size of pool of receive- and send loop 2018-07-12 17:47:34 +02:00
tests Merge branch 'infiniband' into develop 2018-07-04 16:50:36 +02:00
tools cpp: replace <stdio.h> by <iostream> 2018-07-03 21:04:28 +02:00
web cmake: add install targets and several other cpack improvments 2018-06-30 01:29:45 +02:00
.dockerignore docker: improve build process of application image 2018-05-15 19:00:57 +02:00
.editorconfig Added C++ extension to .editorconfig. Closes #161 2018-07-05 14:47:46 +02:00
.gitignore Remove villas.pb-c.c and villas.pb-c.h from repository and do a minor update to .gitignore. Closes #162 2018-07-06 14:47:11 +02:00
.gitlab-ci.yml ci: move packaging into seperate stage 2018-06-30 11:54:55 +02:00
.gitmodules remove thirdparty git modules 2018-04-04 09:00:38 +02:00
CHANGELOG.md io: use dots instead of hyphens in format names 2018-05-08 08:45:18 +02:00
CMakeLists.txt increase required CMake version to 3.6 (closes #170) 2018-07-06 16:12:05 +02:00
CONTRIBUTING.md fix CONTRIBUTING.md 2018-07-04 17:57:06 +02:00
COPYING.md added license 2017-04-27 12:51:35 +02:00
README.md update README 2018-06-30 01:30:06 +02:00

VILLASnode

build status coverage report

This is VILLASnode, a gateway for processing and forwardning simulation data between real-time simulators. VILLASnode is a client/server application to connect simulation equipment and software such as:

  • OPAL-RT RT-LAB,
  • RTDS GTFPGA cards,
  • RTDS GTWIF cards,
  • Simulink,
  • LabView,
  • and FPGA models

by using protcols such as:

  • IEEE 802.2 Ethernet / IP / UDP,
  • ZeroMQ & nanomsg,
  • MQTT & AMQP
  • WebSockets
  • Shared Memory
  • Files
  • IEC 61850 Sampled Values / GOOSE
  • Analog/Digital IO via Comedi drivers
  • Infiniband (ibverbs)

It's designed with a focus on very low latency to achieve real-time exchange of simulation data. VILLASnode is used in distributed- and co-simulation scenarios and developed for the field of power grid simulation at the EON Energy Research Center in Aachen, Germany.

Documentation

User documentation is available here: https://villas.fein-aachen.org/doc/node.html

2018, Institute for Automation of Complex Power Systems, EONERC

License

This project is released under the terms of the GPL version 3.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

For other licensing options please consult Prof. Antonello Monti.

Contact

EONERC ACS Logo

Institute for Automation of Complex Power Systems (ACS)
EON Energy Research Center (EONERC)
RWTH University Aachen, Germany