Richard Thompson(deleted)
|
Prioritising Ethernet packets
|
Richard Thompson(deleted)
01/03/2008 5:06 AM
post4027
|
Prioritising Ethernet packets
I am using QNX 6.3.2 core on an intel IXP425 ARMBE.
I have a process (Process 1) which opens a UDP multicast socket and blocks on a recvfrom (2s timeout) until it receives
a packet for the multicast group. When a packet is received it puts the data into a database and then does a sendto,
sending data out to the multicast group.
Data is received every 3 or 4ms after sending data to the multcast group.
This process is running at priority 12.
I have another process (Process 2) which runs for 30ms then blocks for 100ms.
This process is running at priority 10 using FIFO scheduling.
I have noticed that the recvfrom in process 1 does not unblock until process 2 blocks, this delays my sendto by upto
30ms.
If process 2 scheduling is set to round robin then the recvfrom waits until the process 2 timeslices, this delays my
sendto by upto 4ms.
It looks like the priority 12 process is waiting for the priority 10 process to block or timeslice.
Is this correct/expected?
I need to reply to data received as quickly as possible.
Why does the recvfrom/io-net not inherit the priority of process 1 (12)?
Do I have to raise the priority of io-net to make the recvfrom unblock as soon as a packet of data is received? (io-net
has one thread at priority 21 and seven threads at priority 10).
Thanks for the help,
Rich
|
|
|