Hello Keith,
Sorry for the long silence  - this problem really needed mulling over
in my head, and then I postponed that...
So, yes, I'd see why you want fine-tuned control over threading.

Would modifying UHD be an option for you? I could imagine the following
to be a viable approach:

1. in zero_copy_recv_offload_impl, add a new setter for _recv_thread'
CPU affinity
2. in x300_impl, add a new property tree property with a subscriber
that calls that setter

In effect, you'd then have a new property that you'd see with
`uhd_usrp_probe --tree`, and you could access that from your software
to change the right thread's properties.

Does that sound like it makes sense to you?

Best regards,
Marcus 
On Tue, 2018-05-22 at 16:15 +0000, Keith k wrote:
> Hello Marcus
> 
> I'm trying to run 16 N200s with LFTX/LFRX boards. I want to use all
> 16 TX channel and 20 RX channels at 10 MHz sampling rate. I will be
> streaming continuous on RX and sending bursts on TX. The problem I'm
> having is that the RX threads really don't like being preempted too
> often or they go into a unstable state where they continually drop
> samples. I've got a computer with a core i9 and I've isolated 70% of
> the cpu cores purely to my process, but when it comes to scheduling
> the threads the best I can do is evenly distribute them since I'm not
> aware of a mechanism to get the TID of only the UHD RX threads. Using
> isolcpus and taskset with basic round robin cpu affinity, I can get
> all 16 TX channels and 12 RX channels working for a period of a few
> hours, but I think if I could properly schedule the RX threads, I
> would be able to get them all working without dropped samples. In
> theory the fork would work for me since I could use a child process
> for only TX or RX threads and I could manually schedule them, but
> practically I know there would be problems with the multi-usrp
> object.
> 
> Right now I'm scheduling using command line utilities once my
> application is running, but I've now been considering querying the OS
> for TIDs before and after each streamer is created from within my
> application. I should be able use this information to isolate which
> set of threads are for RX or TX. Do you have any thoughts on the best
> approach to scheduling for UHD or operating high data rate multiusrp
> configurations? 
> 
> On Sat, May 19, 2018 at 9:05 AM, Marcus Müller <marcus.mueller@ettus.
> com> wrote:
> > Hi Keith,
> > 
> > in principle, you could continue using the multi_usrp in **one** of
> > the processes. The real problem stems from the question of who
> > inherits the sockets (in the case of network USRPs), the USB
> > handles, or kernel ring buffer handles.
> > In the end, only one process might react to packets coming from the
> > USRP. Also, this is C++, so if you don't watch out in your main
> > process, and your multi_usrp loses scope, its destructor would be
> > called, with devastating effects on the state of your USRP.
> > 
> > On the other hand, there is, at least as far as I can remember from
> > the top of my head, nothing to react to until you start a streamer.
> > But I wouldn't recommend relying on that as kind of API; I don't
> > think we guarantee usability of a multi_usrp after forking, but the
> > last word on that is Martin's.
> > 
> > Maybe if you described your use case, we could chime in with
> > approaches.
> > 
> > Best regards,
> > Marcus
> > 
> > On 14 May 2018 18:09:51 GMT+02:00, Keith k via USRP-users <usrp-use
> > r...@lists.ettus.com> wrote:
> > > Hello all
> > > 
> > > My intuition tells me this would be a bad idea, but before I try
> > > anything with this, does anyone have any thoughts about how the
> > > multi-usrp object would react in a situation where the process
> > > has been forked? I know that the call to create a multi-usrp
> > > object will fail if called in a second process, so I imagine it
> > > won't like being in 2 separate address spaces.
> > 
> > -- 
> > This was written on my cellular phone. whilst an impressive piece
> > of engineering, this might not be the perfect device to write
> > emails on - please excuse my brevity.
> 
> 
> 

_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to