I find the performance of IMQ is not good enough, so I try to enhance it by myself. Now I commit one simple change which could enhance the IMQ performance about 20% during my tests.
Let me show the reason.
The solution of IMQ is that push one packet into the IMQ queue during rx softirq, then IMQ works like one device, it will continue processing another packet poped from the queue and send it during the tx softirq.
In other words, the packet should be processed in one softirq without IMQ. But it needs two softirqs now with IMQ. It decreases the performance deeply.
So I enhance it with that pop and send one packet when push one into the IMQ queue. It almost equals one packet only cost one softirq at average.
There are two commits from me.
It is a new original IMQ patch based on 3.14 kernel;
It is the enhancement solution.
Actually there are other changes which could enhance the performance too. But they have not pass the test until now.
So I only commit the simplest one also efficient one
Hi,
Firstly thanks sharing the IMQ.
I find the performance of IMQ is not good enough, so I try to enhance it by myself. Now I commit one simple change which could enhance the IMQ performance about 20% during my tests.
Let me show the reason. The solution of IMQ is that push one packet into the IMQ queue during rx softirq, then IMQ works like one device, it will continue processing another packet poped from the queue and send it during the tx softirq.
In other words, the packet should be processed in one softirq without IMQ. But it needs two softirqs now with IMQ. It decreases the performance deeply.
So I enhance it with that pop and send one packet when push one into the IMQ queue. It almost equals one packet only cost one softirq at average.
There are two commits from me.
Actually there are other changes which could enhance the performance too. But they have not pass the test until now.
So I only commit the simplest one also efficient one