I recently upgraded from openSuse 11.2 to openSuse Leap 42.1. I have some real-time sensitive ethernet communications going on that I used to set the priority of using the following command on 11.2:
/usr/local/sbin/resched -vf irq/24-eth0 55
This would effectively put the ethernet process in the round robin schedule with a real-time priority of 55, higher than that of the default priority.
Now with Leap, I see the resched has been replaced with chrt, but I can no longer find the ethernet process in the process list. The only mention of an ethernet process I could find was the new wickedd processes. I set the priority of these 5 processes higher, but it doesn’t seem to have any effect. I can tell because I have a high speed camera I’m triggering, and with 11.2 when I raised the priority the camera trigger was less time-variable than it is with Leap.
Does anyone out there know how I could raise the priority of the ethernet communications in Leap? I’m just reading and writing sockets (TCP) directly from c++
I haven’t thought about how to elevate networking priority before, that’s something to think about.
The only thing I can remember where something like this was discussed was a lecture section describing Google’s in-house custom kernel (available publicly to anyone who wants to use it).
I suspect that “resched” might make less sense in a better managed systemd environment compared to how things are run in a SysVinit system so may have been deprecated with the sub-system changeover.
I also can see how elevating the Wicked (or for that matter Network Manager) priority likely does nothing… They only manage networking, they are not the networking processes themselves.
I wonder if you were able to identify the specific PiD for your network connection, then you could elevate it a number of different ways, eg by chrt or nice or renice. Discovering a PiD which is created automatically is difficult, it might be easier to figure out how your specific network connection is created and then modify that to specify a PiD… Then it would be not so difficult to modify the priority setting.
The -p flag for the command “ss” in the following reference(fifth section) returns the PiD of a network connection after the connection is running… but as I suggested this might not be the best approach and only works if your network connection is “long running” or re-usable (does not time out). http://www.binarytides.com/linux-ss-command/
None of those settings directly elevates priority, they only ensure that you have ample resources to support your network connection, so indirectly can affect performance.
Also, you can take a look at the TCP/IP Congestion Control algorithms I describe in the same article (pages prior to the link I gave you above) some of which may embed a command that increases priority (eg try something intended for short, local connections and high bandwidth).
Thanks so much for your response! I’m going through all this now to see if any of it can do what I’m asking.
What I was doing before was raising the priority of the kernel process that handles the ethernet interrupts, and now that I’m running on leap I’m not sure which kernel process is handling these interrupts. I was hoping someone would know which process it is - then I could just raise it’s priority.