Virtual machine 使用GnuRadio的虚拟机中的USRP N210溢出

Virtual machine 使用GnuRadio的虚拟机中的USRP N210溢出,virtual-machine,gnuradio,gnuradio-companion,usrp,software-defined-radio,Virtual Machine,Gnuradio,Gnuradio Companion,Usrp,Software Defined Radio,我通过Debian(4.19.0-6-amd64#1 SMP Debian 4.19.67-2+deb10u1)虚拟机使用USRP N210,运行速度非常快,导致处理溢出。当一个CPU负载达到100%时,GnuRadio Companion正在打印字母“D”。通过增加低通滤波器的抽头数进行测试,如图所示,采样率为6.25 MHz 我已经完成了所有的指令,除了CPU调控器。这是因为我无法这样做,因为cpufreq info报告了一个丢失的驱动程序。确切的输出是 此CPU上没有或未知的cpufreq

我通过Debian(4.19.0-6-amd64#1 SMP Debian 4.19.67-2+deb10u1)虚拟机使用USRP N210,运行速度非常快,导致处理溢出。当一个CPU负载达到100%时,GnuRadio Companion正在打印字母“D”。通过增加低通滤波器的抽头数进行测试,如图所示,采样率为6.25 MHz

我已经完成了所有的指令,除了CPU调控器。这是因为我无法这样做,因为cpufreq info报告了一个丢失的驱动程序。确切的输出是

此CPU上没有或未知的cpufreq驱动程序处于活动状态

lscpu命令的输出也显示在图片中

有人知道我如何解决这个问题吗?或者GnuRadio只是不完全支持虚拟机


当您的CPU无法跟上时,需要丢弃数据包。这是它的直接影响

问题很可能不在虚拟机中,而是在虚拟机中

虚拟化增加了一些开销,虽然现代虚拟机在这方面做得相当好,但您正要求这样做

  • 具有硬实时要求的应用程序可以运行
  • 在高网络负载下
这可能会减少虚拟机甚至不知道的主机端的CPU周期—您的100%比看起来要少

所以,首先,确保您的虚拟机尽可能少地处理网络流量。特别是,没有NAT,但最好是硬件桥接

那么,频移FIR肯定不是性能最高的块。尝试使用旋转器,然后是FFT FIR。在你的例子中,让FIR抽取2倍——你已经做了足够的低通滤波来降低采样率,而不会产生锯齿


最后,使用更新版本的GNU收音机可能是个好主意。在Debian测试中,apt将为您提供3.8版本系列GNU收音机。

感谢您的支持。我只使用了freq-xlating FIR作为示例来演示我遇到丢包的速度有多快。主处理,即QPSK解调器+编码器尚未发生。因此,我考虑将滤波和解调器移到FPGA上。假设我迁移到一个本地Linux操作系统,你认为采样率>10 MHz的滤波+QPSK解调是可行的,还是我仍然遇到类似的问题?迁移到一个FPGA将是完全过度的,需要数周到数月的时间,不是吗。这些速率在现代PC上完全没有问题。Mathworks支持HDL编码器和AD3971包等工具,AD3971用于E310/E320等SDR。它们不应该有利于快速发展吗?你对“现代PC”的定义是什么,例如CPU和内存,你认为它的局限性在哪里?我在2019年在商用笔记本电脑上做过这样的定义。所以,有点现代的电脑。老实说,你的电脑应该可以工作。