我有一个板与旋风V SE,其中包含ARM CortexTM-A9 MPCore (单核)。在这个板上,我运行使用Buildroot构建的Linux4.1.15。在对USB进行测试时发现,当批量传输以20 USB/S的速度运行时,大容量的IN传输运行在10 USB/S左右,为此,我在设备上使用了g_zero,并在主机上使用了一个简单的libusb程序。
第二次测量用g_mass_storage在设备侧进行,dd在主机侧进行。同样的结果。
最后一次测试是使用ConfigFS、FunctionFS和我的用户空间应用程序的组合完成的,该应用程序从/向RAM读取/写入数据。我有10 IN /S在里面,但多达40 IN/S出去了。我期望速度大致相等(至少在使用RAM时是如此)。
我在简单地说通用串行总线中检查了大容量的in协议,没有任何明显的理由说明为什么in比OUT慢得多。
现在我知道有太多的事情会导致这种情况,我不认为“慢是由……引起的。”回答。但是我应该在哪里挖掘,我应该使用什么工具来追踪它呢?
发布于 2016-11-21 12:57:38
我相信较慢的速度是你所使用的设备固有的。
假设您使用use (我将使用=D),由于任何闪存设备的特定需求,对设备的任何写入都会比读取慢(据我所知,use只是闪存,上面有一个“转换硬件”,使它看起来像一个简单的块设备)。该设备需要擦除整个内存块,然后才能写一位,因此速度慢。另外,在USB设备的具体情况下,似乎是速度变化很大。
现在,要回答您的问题:首先,我将检查我正在使用的设备的预期写入速度。其次,我将查看处理器的用户指南和内核选项,检查是否有任何可用于USB通信的DMA选项。
https://unix.stackexchange.com/questions/301324
复制相似问题