USRP N210 在使用 GnuRadio 的虚拟机中溢出
USRP N210 overflows in virtual machine using GnuRadio
我通过 Debian (4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1) VM 使用 USRP N210,运行 很快进入处理溢出。 GnuRadio-Companion 在其中一个 CPU 负载达到 100% 时打印字母 "D"。这是通过增加低通滤波器的抽头数来测试的,如图所示,采样率为 6.25 MHz。
我已经完成了 How to tune an USRP 的所有说明,除了 CPU 州长。这是因为 cpufreq-info 报告缺少驱动程序,我无法执行此操作。确切的输出是
No or unknown cpufreq driver is active on this CPU.
lscpu 命令的输出也如图所示。
有谁知道我该如何解决这个问题?或者 GnuRadio 只是不完全支持 VM?
当您的 CPU 跟不上时丢弃数据包是预料之中的。这是它的直接影响。
问题很可能不在您的 VM 中,而在虚拟器中。
虚拟化会增加一些开销,虽然现代虚拟化程序已经非常擅长,但您要求的是
- 有硬实时要求的应用程序运行
- 在高网络负载下。
这可能会减少 CPU 主机端的周期,而您的 VM 甚至都不知道 - 您的 100% 比看起来要少!
因此,首先,请确保您的虚拟器尽可能少地处理网络流量。特别是,没有 NAT,但最好是硬件桥接。
然后,freq-xlating FIR 绝对不是性能最高的块。尝试使用旋转器,然后使用 FFT FIR。在您的情况下,让 FIR 减少 2 倍——您已经进行了足够多的低通滤波以降低采样率而不会出现混叠。
最后,使用更新版本的 GNU Radio 可能是个好主意。在 Debian 测试中,apt 将为您提供 3.8 版本系列的 GNU Radio。
我通过 Debian (4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1) VM 使用 USRP N210,运行 很快进入处理溢出。 GnuRadio-Companion 在其中一个 CPU 负载达到 100% 时打印字母 "D"。这是通过增加低通滤波器的抽头数来测试的,如图所示,采样率为 6.25 MHz。
我已经完成了 How to tune an USRP 的所有说明,除了 CPU 州长。这是因为 cpufreq-info 报告缺少驱动程序,我无法执行此操作。确切的输出是
No or unknown cpufreq driver is active on this CPU.
lscpu 命令的输出也如图所示。
有谁知道我该如何解决这个问题?或者 GnuRadio 只是不完全支持 VM?
当您的 CPU 跟不上时丢弃数据包是预料之中的。这是它的直接影响。
问题很可能不在您的 VM 中,而在虚拟器中。
虚拟化会增加一些开销,虽然现代虚拟化程序已经非常擅长,但您要求的是
- 有硬实时要求的应用程序运行
- 在高网络负载下。
这可能会减少 CPU 主机端的周期,而您的 VM 甚至都不知道 - 您的 100% 比看起来要少!
因此,首先,请确保您的虚拟器尽可能少地处理网络流量。特别是,没有 NAT,但最好是硬件桥接。
然后,freq-xlating FIR 绝对不是性能最高的块。尝试使用旋转器,然后使用 FFT FIR。在您的情况下,让 FIR 减少 2 倍——您已经进行了足够多的低通滤波以降低采样率而不会出现混叠。
最后,使用更新版本的 GNU Radio 可能是个好主意。在 Debian 测试中,apt 将为您提供 3.8 版本系列的 GNU Radio。