03-07-2011 05:57 AM
Hello,
I am using network streams to transfer data between cRIO 9074 and a host PC. The cRIO is connected to PC through a 10/100Mbps switch. PC has Gigabit ethernet connectivity. The datatype of the network stream is 1D Array of U32. Each time I write an array of 100000 elements into the network stream. The amount of data is around 390KB. For a round trip (from PC -->cRIO-->PC), it takes about 900ms. I have about 200ms of process / loop latency in cRIO.
When I calculate the throughput to send (100000*4*8 = 3200000bits)
@10Mbps - 320ms
@100Mbps - 32ms
Considering the 900ms turn around time (320+320+200), It looks like the cRIO is working at 10Mbps. If the cRIO is working at 100Mbps, the turnaround time should be around 100ms (excluding the processing time).
Is there a way to check which speed the cRIO is working at? Or What is the reason cRIO working at 10Mbps though switch and PC are capable of 100Mbps?
Any help / input will be useful for me
Thanks,
A Senthilnathan
04-07-2011 12:30 PM
I am having the same problem. I measured the throughput of cRIO 9074 (sending 1D array of Double from cRIO) 1096 KB/s or 8.56 Mbit/s. Seems cRIO is working in 10 Mbit/s/s mode. Same question, is there any way to set up the Ethernet speed? In MAX under Configure Network Settings there is a field "Preferred Link Speed" and it set to Autonegotiate. So I think we cannot do anything there.
Thanks,
Titoo
09-28-2011 09:48 AM
Later I found out that sending large chunk of data at a lower rate works much better and indeed, it increases the data rate. When you use NPSV, you should send large chunk of data (array, cluster, cluster of array, so on) at a slower rate as oppose to sending small sized data at a high rate. Also, increase the buffer size when sending the large sized data.
09-28-2011 11:59 PM
Hello Senthil,
If you are wanting to see how quickly a section of your code is running, or check how fast a loop is running at, you can check with using the Tick Count VI on the timing palette. You can use that VI and a flat sequence structure to grab the time in ms before and after a section of code to see how long it took to execute, or you can use that VI and a shift register in a loop to time loop iterations.
Here are the two methods to time your code that I described in my last post. The top while loop uses a shift register to tell you how much time (ms) each loop iteration takes. The bottom flat sequence structure will measure how much time (ms) a section of code takes to execute.
As for setting the speed, from this discussion It used to be possible to change this, but has been disabled in recent versions of NI-RIO.
Please have a look at this discussion
Cheers
Gapo
10-04-2011 11:25 AM
Hi!
There is a known issue with the 9074 where network throughput can be limited when communicating with a target using a forced speed. This isn't necessarily the reason you're seeing low throughput but it's something we can easily check for. To check this setting, follow the steps below.
To avoid the known issue and throughput limitation, make sure this property is set to Auto Negotiation rather than a specific link speed (see image). If the property is already set to Auto Negotiation, please let us know and we will continue investigating.
10-04-2011 11:44 AM
Actually, here's something else you can check on the Link Speed & Duplex settings for your NIC. If the setting is currently set to a specific speed (10/100 Mbps F/H, 1 Gbps, etc.), try some of the other speeds to see if they make a difference. Still use Auto Negotiation as well and let us know what results you see from the different speed settings.