There were a couple of issues you asked about, and I didn't address
fully during the talk, so here we go:
Q: How do you detect a PCIe peripheral?
A: The answer is embarrassingly simple: lspci -vv gives you everything
you wanted to know (and a lot you didn't). In particular, in the
Capabilities section, if there's a capability name with "Express" in it
appearing, it's a PCIe device.
Q: What about speed and performance?
A: lspci -vv again. It supplies both the (maximal) lane number and lane
speed. As for packet overhead and squeezing every drop of bandwidth from
the hardware, I talk about that in a recent post:
As for the connection between my calculated upper limit (219 MB/sec) and
reality, I consistently get 205 MB/sec with long dd transfers from
hardware to PC (/dev/null, that is). Assuming I did nothing stupid,
that's most likely the real-life limit. The CPU was at about 50% usage,
and hardware writes way ahead of the read cursor, so I believe in this
Haifux mailing list