Communication-/Data-Aquisition Speed
|
|
---|---|
Hi, does anyone know how i can measure the speed my DeviceServers communicate over the control system? For example I would use a DeviceServer for a motor and one DeviceServer which samples the rotation speed of it and control the motor respectively give him new values for the speed. I know that i could realize this control by the Device Server itself, but the rotation speed depends on values generated by other Device Servers. Is there any benchmark for the transmission speed depending on the amount of DeviceServers in the Tango Control System? Any comparisons between Tango and other systems (epics, tine) available? Many thanks in advance :) Wahid
Best regards
Wahid |
|
|
---|---|
Hi, We have made several performance tests in the past, however we can say that there is no dependency to the number of device servers in the control system. Once the communication is established, the transmission is done directly between the client and the server. The maximum speed obtained between 2 device servers located on 2 computers connected on a network depends only on the performances of the machines and on the way you are writing your software. The overhead of tango libraries is very limited. I have not the exact figures but I can look for it and send it to you
Cheers
Jean-Michel |
|
|
---|---|
Some communication speed ficures have been published at last icalepcs. Have a look at http://accelconf.web.cern.ch/AccelConf/ICALEPCS2013/papers/tucocb10.pdf
Cheers
Jean-Michel |
|
|
---|---|
Hi Jean-Michel, I would be thankful if you could provide some figures for me. My devices are connected over Ethernet in a separate network, so there is only the Control System which causes traffic. The motor control will be realized on a SoC with an ARM core (Zedboard), running the tango Device Server on embedded linux environment. The calculation and controlling will happen in the PL while the Data generation and propagation to other DeviceServer happens over PS/Linux/TANGO. So the speed limitation is given by the TCP/IP over Ethernet? Is it possible to let two DeviceServers communicate directly or do they have to establish the communication by the TANGO DB getting and setting the attributes needed for the motor control?
Best regards
Wahid |
|
|
---|---|
To communicate between 2 device servers, one device server acts as a client on the other. In your case, if I understand well, the motor control device server will have a "speed" attribute that have to be controlled by your other device server.Lets call it ZedMotor then, your second device server (let's call it SpeedControl) will have to create a device proxy ZedMotor and do periodically write_attribute() on the attribute "speed". the server SpeedControl, will be the client of the server ZedMotor. The tango db will be used only at the creation of the device proxy to resolve the address. Then, once the proxy is established, the communication between SpeedControl and ZedMotor is direct, without any intermediate of the TANGO db. Therefore, the bandwith will be very high and it's useless to build an extra communication channel which would have to re-implement a communication protocol. I am pretty confident that such an architecture will work at the best, providing the ZedMotor server is able to modify rapidly it's speed attribute.
Cheers
Jean-Michel |
|
|
---|---|
Thank you Jean-Michel, i appreciate that! This sounds great and I'll focus on Device Proxy.
Best regards
Wahid |