Wireshark-users: Re: [Wireshark-users] what is the upper limit of buffer size?
From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Fri, 20 Mar 2009 10:51:35 -0700
Well, the upper limit depends on the operating system on which you're capturing; I think you asked questions on the WinPcap list earlier, so presumably you're using Windows.

On Mar 19, 2009, at 11:45 PM, jli@xxxxxxxxxxxx wrote:

I use wireshark for realtime packets capture at 640Mbps and found packets drop, and i want to set a large kernel buffer, but i only found 127MB can be set, but my memory is 3GB and has 2.6G available.
     why?

Perhaps Microsoft wants to limit the size of the kernel region of the address space. I think Windows doesn't have separate kernel and user address spaces on x86, so the bigger the kernel portion of the address space is, the smaller the user portion of the address space is, and thus the less address space is available to user applications for *their* data. In addition, they might want to limit the size of the unpaged pool, so as not to take too much memory away from use by userland code; the WinPcap buffer is, I think, in the unpaged pool.

For more information on why the kernel buffer is limited, you might want to ask on the WinPcap list (although at leas some of the WinPcap developers are on this list).

Note also that the buffer can fix latency problems, where you drop packets because the system is temporarily unable to write them to disk (or otherwise process them) as fast as they're arriving; the buffer can hold packets during a temporary problem of that sort. It cannot fix throughput problems, where you drop packets because the system is *inherently* incapable of writing them to disk (or otherwise process them) as fast as they're arriving - capture for long enough in a situation such as that, and your buffer will eventually fill up and you will drop packets.