- 主题:Re: CH340驱动很占用CPU资源,如何破?
可以在LINUX下测试下,或者有大致的测试条件么?我有空顺手也可以测测。
一般这种情况就是渣DRIVER。Linux下这个问题会好很多,因为Linux下的driver必须开源,这种低级问题应该很快就会被消除。
【 在 feiy 的大作中提到: 】
: 测试发现,CH340的驱动,似乎很消耗CPU资源。
: 测试方法:插上基于CH340的USB串口,通信时会发现,CPU占用率明显会比较高,多插几
: 个基于CH340的USB串口一起访问时,会看到CPU的温度会因为CPU的消耗迅速上升。
: ...................
--
FROM 180.111.50.*
这个就是拍脑袋了。CPU占用率高只有两个原因,一个是驱动写的烂,
另一个是硬件为了cost down少了点啥,用软件模拟。
【 在 jaralist 的大作中提到: 】
: 这个应该和你的数据带宽、ch340的缓冲区大小都有关系。
: cpu占用高不一定是坏处。有可能是这样不容易丢数据
--
FROM 180.111.50.*
不是...串口设备我认为加多少个对现在的CPU来说都是没负担的...
【 在 feiy 的大作中提到: 】
: 和我的测试结果的一致性差异差不多。但我的测试结果CPU占比明显还要高一些,可能与
: 不同的操作系统一起APP软件等配合,也有一定的关系。
: 假设CPU刨去一些本身的系统占用消耗而剩余的负担份额可以有60%,如果按照10%和2%的
: ...................
--
FROM 180.111.50.*
我要能测早就测了...
主要是我现在找不到CH340的USB-TTL,理论上在我桌角的某个地方...但翻了一圈只找到CP210X的...
或者我也可以马上焊一块来测试,但我比较懒,所以直接拍了几只等送到了再测吧...
我还是那句话,现在的电脑带10Gbps的东西才有可能有点压力。usb-ttl这种玩意顶天了2mbps吧,来100个也不应该有任何压力的。
【 在 feiy 的大作中提到: 】
: 你可以自己测试看看CH340打开多个串口同时访问。
: 我之所以提出这个问题,是因为我需要在电脑上带多个CH340的USB串口进行批量化测试
: ,带多了,CPU句满负荷很明显,容易出现问题。 若只有1-2个CH340的USB串口,监控C
: ...................
--
FROM 180.111.50.*
我在linux下基本上没观察到类似现象。
我自己做的usb2.0采集卡,实际带宽基本上要跑到30MBps上下,并且第一版对丢包和时延都非常敏感(因为还没做同步协议,所以丢包了就失去同步了,然后时延是也因为设置的缓冲区太小,延迟一大就必定丢包)。基本上达到usb2.0能的实际上限了。当时用的pc用的还是一台pi like的弱鸡atom X86,cpu是intel的Z8350,大概就相当于现在的RK3399的A72核心的一半速度。上面要跑cv算法的,这cpu太弱基本都被cv算法用掉了,usb这块的cpu占用率估计是1%吧,反正是根本就没引起我的注意,top上根本就看不见的那种...
【 在 rexxie 的大作中提到: 】
: 如果写得好的话,应该没多大影响,
: 实际就是走usb口的设备cpu占用都会大些。
: 比如相机的usb口和网口或者camlink,usb是占cpu最大的。
: ...................
--
FROM 180.111.50.*
所以我比较感兴趣的是linux下的表现嘛。
这个是CH340的LINUX驱动代码,看了下作者应该跟WCH的人没啥关系。
https://github.com/torvalds/linux/blob/master/drivers/usb/serial/ch341.c
【 在 spadger 的大作中提到: 】
: 我觉得你太高估CH340驱动码农的能力了
:
--
FROM 180.111.50.*
内部MCU模拟对外也是表现为一个硬件的样子,不应该在驱动这里耗时间的。
我刚扫了眼LINUX下的CH340驱动,基本上这个代码就没有能耗CPU的地方。唯一一个FOR循环,计数也只有4次。
估计八成是WCH自己的驱动实现里面有忙等待了。
【 在 tom6bj 的大作中提到: 】
: 据说CH340现在里面就是CH55x MCU模拟的
: 这个就是拍脑袋了。CPU占用率高只有两个原因,一个是驱动写的烂,
: 另一个是硬件为了cost down少了点啥,用软件模拟。
: ...................
--
FROM 180.111.50.*
我明天收到了CH340之后来测...
10%的CPU占用率太离谱了,我觉得很不可思议~
【 在 spadger 的大作中提到: 】
: 单USB,自发自收,115200-8-N-1,Linux下FT2232D和CH340没有明显差别。
: 结论很明显了,就是驱动程序的问题。
: Linux下都是开源驱动,FT2232D和CH340差别不大,CPU占用率都比较高。
: ...................
--
FROM 180.111.50.*
先用CP210X测试下,115200-8-N-1
CPU占用率基本上就是0,偶尔会冒一下,大概也就是0.7%的样子。
如果不出意外,我觉得CH340应该也跟这个结果完全一样。
【 在 lvsoft 的大作中提到: 】
: 我明天收到了CH340之后来测...
: 10%的CPU占用率太离谱了,我觉得很不可思议~
:
--
修改:lvsoft FROM 180.111.50.*
FROM 180.111.50.*


今天CH340到了,测试了下和CP210X没任何区别,图就不贴了,连数字都一样。
估计这个偶尔0.7%的CPU占用率可能是用PYTHON写的测试程序偶尔触发的GC的结果。
如果换成C应该是永远0.0%占用率,也即负载过小测不出来。
【 在 lvsoft 的大作中提到: 】
: 先用CP210X测试下,115200-8-N-1
: CPU占用率基本上就是0,偶尔会冒一下,大概也就是0.7%的样子。
: 如果不出意外,我觉得CH340应该也跟这个结果完全一样。
--
修改:lvsoft FROM 180.111.50.*
FROM 180.111.50.*