Hi Jason,

I have the same under-run problem with my project. I use x310 as well. I
don't have a solution. I'll appreciate it if anyone can figure out what is
causing this.

Regards,
Edwin




Jason W Zheng via USRP-users <usrp-users@lists.ettus.com>于2017年8月14日周一
下午2:42写道:

> Hi Robin, Marcus
>
>
> It makes no sense to me, then why changing transmit to be on its own
> channel (daughtercard) would cause the program to work.
>
>
>     // set up TX streams and threads
>     std::thread tx_threads[NUM_CHANNELS];
>     uhd::tx_streamer::sptr tx_streams[NUM_CHANNELS];
>     uhd::tx_metadata_t md;
>     md.start_of_burst = true;
>     md.end_of_burst = false;
>     md.has_time_spec = true;
>     md.time_spec = uhd::time_spec_t(0.1);
>
>     for (int i = 0; i < NUM_CHANNELS; i++){
>         stream_args.channels = std::vector<size_t>(1,i); //changing this
> from i to 1 causes it to work for unknown reasons
>         tx_streams[i] = usrp->get_tx_stream(stream_args);
>         //start the thread
>         std::cout << "Starting tx thread " << i << std::endl;
>         tx_threads[i] = std::thread(txTask,tx_buffs[i],tx_streams[i],md);
>     }
>
> The relevant line is commented in the above code snippet. When I change
> the channels arguments for the tx stream_args to be on it's own channel
> (daughterboard) separate from the receive, the underflows go away.
>
>
>
> @Marcus, in the code I posted, there is no coordination between the
> transmit and the receive threads. This is for example purposes. The
> transmit and receive buffers are independent. The transmit thread buffer is
> prefilled with 0's and is constantly transmitting 0's.
>
>
> ------------------------------
> *From:* ROBIN TORTORA <ti...@comcast.net>
> *Sent:* Monday, August 14, 2017 1:06:20 PM
>
> *To:* Jason W Zheng via USRP-users; Jason W Zheng
> *Subject:* Re: [USRP-users] Buffer underrun issue with simultaneous
> transmit and receive on the X310
>
> Willing to bet significant money your tx thread is being put on the
> physical processor that does not have your NIC card attached to it...
>
>
> Then, all data must go over QPI between processors.
>
>
> NUMA is not good for this.
>
>
> You can experiment with affinity to make sure things are all on the same
> physical processor as your NIC...
>
>
> We no longer buy multi-processor boxes for issues like this, NUMA is bad...
>
>
> On August 14, 2017 at 2:32 PM Jason W Zheng via USRP-users <
> usrp-users@lists.ettus.com> wrote:
>
>
> I'm running on a server with 2 Intel Xeon E5-2650 v4, CPU is listed here:
>
> https://ark.intel.com/products/91767/Intel-Xeon-Processor-E5-2650-v4-30M-Cache-2_20-GHz
>
> The network card I'm using is the recommended Intel X520-DA2
>
> I also have over 500 gigs of ram, so that is not an issue
>
> I don't think my cpu or network card are the issue as when I change my
> code to receive and transmit on separate channels, it works without any
> underflows.
>
>
> ------------------------------
> *From:* USRP-users <usrp-users-boun...@lists.ettus.com> on behalf of
> Jason W Zheng via USRP-users <usrp-users@lists.ettus.com>
> *Sent:* Monday, August 14, 2017 11:27:24 AM
> *To:* ROBIN TORTORA
> *Cc:* usrp-users@lists.ettus.com
> *Subject:* Re: [USRP-users] Buffer underrun issue with simultaneous
> transmit and receive on the X310
>
>
> How should I set the tx metadata? My application will essentially stream
> continuously.
>
>
> Thanks,
>
> Jason
> ------------------------------
> *From:* ROBIN TORTORA <ti...@comcast.net>
> *Sent:* Monday, August 14, 2017 11:17:07 AM
> *To:* Jason W Zheng via USRP-users; Jason W Zheng
> *Subject:* Re: [USRP-users] Buffer underrun issue with simultaneous
> transmit and receive on the X310
>
>
> I dont see you setting the tx metadata object members to any values, so
> you are essentially going to tx with default metadata IF there is a
> constructor that initializes all the members to a consistent value...
>
> On August 14, 2017 at 1:56 PM Jason W Zheng via USRP-users <
> usrp-users@lists.ettus.com> wrote:
>
>
> Since I haven't gotten a response in a week, I thought some source code
> might help. I've removed any buffer dependencies leaving just the receive
> thread and transmit thread. The receive thread is constant receiving to a
> buffer, while the transmit thread is constantly transmitting 0s from
> another buffer.
>
> On the x310, when I receive and transmit from the same channel (same
> daughterboard), I get underflows (U's on the console), no matter what the
> rate. When I put receive and transmit on separate channels, the U's go
> away.
>
> How do I fix my source code so I can receive and transmit from the same
> channel without underflows?
>
> Thanks,
> Jason
>
>
> ------------------------------
> *From:* USRP-users <usrp-users-boun...@lists.ettus.com> on behalf of
> Jason W Zheng via USRP-users <usrp-users@lists.ettus.com>
> *Sent:* Monday, August 7, 2017 1:05:05 PM
> *To:* usrp-users@lists.ettus.com
> *Subject:* [USRP-users] Buffer underrun issue with simultaneous transmit
> and receive on the X310
>
>
>
>
> Hi,
>
>
> I'm building an application where I receive data from the x310, process
> the data, then transmit it out. I have 3 separate threads running, one for
> each task. The receive task is constantly receiving data from the x310 at
> 200MS/s and putting it into a buffer. The process task takes data from the
> receive buffer, processes it, and puts it into a transmit buffer. The
> transmit task is constantly transmitting data from the transmit buffer at
> 12.5 MS/s.
>
>
> I get constant underruns (U's on the console) when I try to receive and
> transmit from the same channel on the x310. However, when I transmit and
> receive on separate channels, underruns no longer occur. I would like to
> figure out a solution to this problem as I want to processes two 200MS/s
> streams on 1 x310.
>
>
> This problem occurs no matter the sample rates. I've tried lowering the
> receive rate to 50MS/s (while transmitting 4x the data to balance things
> out) and there are still constant underruns though at a lower rate.  I know
> processing time is not the issue as I've profiled the time it takes to
> process, and I have even removed the processing task from the application
> altogether (receive data to a buffer and do nothing with the data;
> constantly transmit 0's from the transmit buffer) and the underruns still
> occur.
>
>
> I'm running on UHD 3.11.0, and the x310 is is configured with basic TX/RX
> daughterboards and flashed with the XG image for use over two 10 gig
> ethernet links.
>
>
> Thanks,
>
> Jason
>
>
>
>
>
>
> _______________________________________________
> USRP-users mailing list
> USRP-users@lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
>
>
>
> _______________________________________________
> USRP-users mailing list
> USRP-users@lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
> _______________________________________________
> USRP-users mailing list
> USRP-users@lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to