|Advanced Setup Questions Scan period and Interchar Timeout [message #1355]
||Thu, 29 April 2021 21:18
Registered: January 2021
Hope you guys are well. I've got my DeviceMasters on the network and stable most of the time, so now I'm getting into the hard stuff. These new Xeon servers are running slower clock speeds than we used to have, I guess they are more interested in stability and such. pffft. I'm finding with my application on some of these chips the 3rd party app that consumes the DeviceMaster data (read only) is getting corrupted data or out of order when load gets high.
Now this 3rd party app probably thinks it is reading from an 8 byte uart of old. I see on the cores where I have isolated the DevcieMaster that there are pretty high IRQ counts too. ~2500/s. To be fair there are kernel things also running there sometimes. The kernel has not been isolated from that CPU.
So i have these knobs:
- Scan-period: "The scan-period value controls the scan rate of the serial driver code in the DeviceMaster.
It is specified in milliseconds and defaults to 10. If you wish to reduce latency, it's a better idea
to use the inter-character timeout value rather than decreasing the scan period."
- Inter-char Timeout: " The inter-character timeout and low_latency values for DeviceMaster ports may also
be set using the setserial(8) utility or the TIOCSSERIAL and TIOCGSERIAL ioctl() calls." (This does not
work for me, unknown IOCTL, I compiled it with my kernel too - doesn't matter though. I will just set
up it in nslink.conf, and yes i am not trying to set the deprecated low-latency flag).
- Retransmit timer: "The retransmit-timer value controls the length of time the DeviceMaster waits before
retransmitting packets. It is specified in milliseconds and defaults to 200. Changing the retransmit timer,
will increase CPU usage and network traffic."
Q1: So lets say my 3rd party application, running locally on the Linux box, needs his 38.8Kbaud data at least every 50ms or it will complain, since it thinks it is some ancient UART on the other side. How should I set these values?
Q2: I'm doing TCP connection (only one) to the Devicemaster from NSLINK. NSLINk then presents the serial ports as files in the OS and the 3rd party app opens them. I have very little insight after that. Is there a better way to set it up than the TCP to NSLINK?
Q3: Does it make any difference if I use the raw address MACID of the DM vs. the IP address?
Useful facts: We've got a 2Gbps bonded 802.3 LACP ethernet link, and we are hardly using any of it. So bandwidth and latency there is of very little concern. We've also got packet steering turned on such that the DeviceMaster packets go directly to the CPUs that the NSLINK is running on and nowhere else.
Thanks you in advance for your input. AN example config would be highly appreciated since this just doesn't want to work it seems.