Hi Joe, With sudo lspci -vvv you will see the capabilties, including the low-level PCIe bus speed and link count negotiation of the devices. The sudo is needed to get the low-level LnkCap and LnkCtl bits:
For a 16-lane videocard on a laptop here, likely soldered right on the motherboard: The PCIe capabilities: 8 GT/sec, max 16 lanes: LnkCap: Port #0, Speed 8GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <4us ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+ What the speed ended up to be 8GT/sec, 16 lanes: LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 8GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range AB, TimeoutDis+, LTR+, OBFF Via message DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled Below is a variant of the LnkCtl record, providing even more information on even the equalisation of the SERDES link that is used by this PCIe device: (equalisation is the analog RF signal processing to overcome losses while routing the signal over the motherboard and the connectors): LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+ EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest- Above could be regarded as a 'depth first' approach for those who would like to stay purely software-oriented. I like to treat a PC in such scenario as an embedded system, first get the powersupplies, clocks and other hardware right, design the clockdomains and datarates, then gradually move up the software/control/kernel/driver stack to verify for anomalies that could trigger such intermittent problems. Mark-Jan On Sat, Mar 09, 2019 at 10:40:39AM -0700, Joe Martin wrote: > Hi Mark, > > I am intrigued by your response and have obtained a tree view for my system > as you suggested to Paul. I???m unfamiliar with the tree view and don???t > understand how to check the number of PCIe lanes that are available to the > disk controller and disks and how to check how many PCIe bridges are in > between on my motherboard configuration. > > I have a screenshot of the tree view showing my 10G ethernet connection (but > it is 220KB in size so I didn???t attach it here) but I am not familiar with > how to determine what you asked about from the tree and what to do about the > configuration in any case. Is the configuration fixed and not changeable, in > any case? > > If so, then perhaps your alternative suggestion regarding booting from a USB > stick into a ramdisk is a viable route? I???m unfortunately not familiar > with the details of how to do that so perhaps a couple of brief comments > about implementing that process would help me understand better if that???s > the only viable alternative to pursue given the present hardware > configuration? > > Joe > > > On Mar 9, 2019, at 5:14 AM, Mark-Jan Bastian via USRP-users > > <usrp-users@lists.ettus.com> wrote: > > > > Hi Paul, > > > > I can record from the X310 to disk to nvme x4 PCIe at 800 MB/sec > > for a few minutes. There is still a risk of O 's appearing. > > > > First thing to check is the number of PCIe lanes available to the disk > > controller and disks, and how many and which PCIe bridges are in between > > on your motherboard configuration. Try to avoid other traffic over these > > PCIe bridges. lspci -vt for a tree view. > > > > Then one can do benchmarking from DRAM to disk. Perhaps you will not need > > a filesystem for your very simple storage purpose. > > You can ultimately just boot from some other media (USB stick or CD-ROM > > loaded into a ramdisk) just to make sure there is absolute no need to > > read-access any other data on said disks, via cached pages or otherwise. > > > > Hickups by system management mode or other unexpected driver interrupt > > sources > > should be minimized. Other networking code and chatter might need be > > reduced, > > just as SMM related thermal management events in the BIOS. > > First tune everthing for maximum performance, then optimize for very > > constant > > write performance. > > > > Mark-Jan > > > > On Sat, Mar 09, 2019 at 12:32:05PM +0100, Paul Boven via USRP-users wrote: > >> Hi, > >> > >> I'm trying to record the full X310 bandwidth, for a few hours, without any > >> missed samples. Which of course is a bit of a challenge - does anyone here > >> already achieve this? > >> > >> We're using a TwinRX, so initially I wanted to record 2x 100MS/s (from both > >> channels), which amounts to 800MB/s, 6.4Gb/s. At first I tried > >> uhd_rx_cfile, > >> but have been unable to get it to a good state without showing an 'O' every > >> few seconds at these speeds. > >> > >> As a recorder I have a SuperMicro 847 chassis with 36 disks (Seagate > >> Ironwolf 8TB T8000VN0022, 7200rpm). In this particular server, the disks > >> are > >> connected through an 'expander' backplane, from a single HBA (LSI 3008). > >> CPU > >> is dual Xeon 4110, 2.1 GHz, 64 GB of ram. > >> > >> At first I tried a 6 disk pool (raidz1), and eventually ended up creating a > >> huge 36 disk ZFS stripe, which in theory should have no trouble with the > >> throughput, but certainly kept dropping packets. > >> > >> Note that recording to /dev/shm/file works perfectly without dropping > >> packets, until the point that the memory is full. > >> > >> Given that ZFS has quite a bit of (good) overhead to safeguard your data, I > >> then switched to creating a mdadm raid-0 with 18 of the disks (Why not 36? > >> I > >> was really running out of time!) > >> > >> At that point I also found 'specrec' from gr-analyze, which seems more > >> suitable. But, even after enlarging its circular buffer to the largest > >> supported values, it would only average a write speed of about 300MB/s. > >> > >> In the end I had to settle for recording at only 50MS/s (200MB/s) from only > >> a single channel, a far cry from the 2x 6.4Gb/s I'm ultimately looking to > >> record. Although I did get more than an hour of perfect data out of it, > >> over > >> time the circular buffer did get fuller in bursts, and within 2 hours it > >> exited due to exhausting the buffers. Restarting the application made it > >> work like fresh again, with the same gradual decline > >> in performance. > >> > >> Specrec, even when tweaking its settings, doesn't really take advantage of > >> the large amount of memory in the server. As a next step, I'm thinking of > >> adapting specrec to use much larger buffers, so that writes are at least in > >> the range of MB to tens of MB. From earlier experiences, it is also > >> important to flush your data to disk often, so the interruptions due to > >> this > >> are more frequent, but short enough to not cause receive buffers to > >> overflow. > >> > >> In terms of network tuning, all recording was done with MTU 9000, with wmem > >> and rmem at the recommended values. All recordings were done as interleaved > >> shorts. > >> > >> Does anyone have hints or experiences to share? > >> > >> Regards, Paul Boven. > >> > >> _______________________________________________ > >> 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