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 _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio