Chinaunix

标题: 关于printk的输出,丢失消息的问题。 [打印本页]

作者: dzbjet    时间: 2009-06-04 11:39
标题: 关于printk的输出,丢失消息的问题。
大家好,
       目前要对无线网卡每个收到的frame,使用printk打印相关的信息,从而记录的 /var/log/messages中。每个frame要打印的信息大约是100个字节,占一行。系统式powerpc的开发板,400Mhz。

       目前的问题是:使用iperf发送业务时,设置的frame的长度为300bytes,因此,在802.11b,11Mbps的tx rate下,平均每秒中要收到1700个frame,因此要printk 1700次/秒,导致printk把kernel buffer填满,而klogd/syslogd写文件的速度相对较慢,因此造成消息的丢失。
      
       请问有什么解决的办法吗?

       我目前的方法是把log记录到tmpfs文件系统中,因为该系统是基于RAM的虚拟文件系统,读写该系统仅仅是对RAM操作,不过这样还是出现丢失消息的情况,只不过症状减轻。另外已经把printk的log buffer增大到1MB了(默认是16KB)。

       netconsole如何?效率如何?
       另外就是 syslogd ,配置成 remote network log?效率如何?

       还有其他的方法吗?
作者: Godbach    时间: 2009-06-04 13:02
直接申请一块内存,写到内存里,共享给用户空间。
作者: accessory    时间: 2009-06-05 09:19
还可以用RELAY FS, 又叫DEBUG FS
作者: connet    时间: 2009-06-05 09:35
只能按2楼的办, 使用环形缓冲,  什么文件系统也没用。
作者: accessory    时间: 2009-06-05 22:31
TO 4楼: RELAY FS 设计的目的就是大量的内核到用户层的通信. 原理应该也是开辟了一块共享内存. 不知道4楼用过没? 如果用过,或者了解过,那么否定它请说出具体理由来.
作者: Godbach    时间: 2009-06-05 22:49
原帖由 accessory 于 2009-6-5 09:19 发表
还可以用RELAY FS, 又叫DEBUG FS


改天研究一下relay文件。
作者: dzbjet    时间: 2009-06-06 00:14
标题: 回复 #5 accessory 的帖子
你说的对,其实原理都是一样的,不用重复造轮子了,直接用即可。

4楼的,太武断了,tmpfs也是在RAM中的,understand?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2