(unknown)
From: Ronny Meeus <hidden>
Date: 2012-10-13 07:12:05
Hello I have an application that needs to handle a massive amount of Ethernet packets coming from an FPGA on a dedicated Ethernet link. I use a raw Ethernet socket for this. By increasing the receive buffer of the socket, I'm able to capture all the packets and process them in the application. Since this processing can take some time I have increased the receive buffer to 500Mb. The size of the packets is 1000bytes so I'm able to capture 500k packets. What I observe is that the kernel allocates buffers from the slaballoctor for these packets but it takes buffers of 4k while in fact the packet is only 1k (This means 2G of kernel memory is being used). Is it possible to fine-tune this or is that an alternative for this? I already investigated the PACKET_RX_RING solution. This has the advantage that the buffers can be 1k but I do not want to consume 500Mb of virtual memory in my application which is running on MIPS in 32 bit mode where I only have 2G available in user space. --- Ronny