discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] USRP2 eth_buffer


From: Juha Vierinen
Subject: [Discuss-gnuradio] USRP2 eth_buffer
Date: Wed, 22 Apr 2009 20:48:38 +0000

Hi,

I have been trying to get 25 MHz to disk with USRP2.  I am using the
C++ interface and a five disk software raid 0 that can do about 150
MB/s. I can easily run at 25 MHz with a simple nop_handler that only
checks for underruns and timestamps continuity, but when I write to
disk, I can barely do 10 MHz for longer than 30 s without overruns. I
have tried just about every filesystem with the same result every
time.

The reason seems to be lack of buffering. I have gone with the easiest
path of increasing the eth_buffer from approximately 25 MB to 500 MB.
I know people will flame me for using this much kernel memory, but it
seems to work fairly reliably (I have been saving 25 MHz to a five
disk software raid already for an hour without problems).

I think there should be a user configurable option similar to
fusb_blocksize and fusb_nblocks with usrp1, which defines the
eth_buffer size. I am willing write a patch if somebody is interested,
but I don't fully understand why there is a MAX_SLAB_SIZE in
eth_buffer.cc:

 // Calculate number of blocks
    req.tp_block_nr = std::min((int)(MAX_SLAB_SIZE/sizeof(void*)),
                               (int)(d_buflen/req.tp_block_size));

Why is there a (int)(MAX_SLAB_SIZE/sizeof(void*)) limit?

juha




reply via email to

[Prev in Thread] Current Thread [Next in Thread]