有没有任何提示或方法可以避免内核日志丢失或日志缓冲区溢出?如何避免在Linux内核中的printk日志丢失
我已将日志缓冲区大小增加到最大值,并且代码更改如下。我只在高端设备上运行。但是,当我想从我的驱动程序(写入大量日志)中获取完整日志时,我发现printk日志有时会丢失。我用KERN_INFO使用printk,通过动态调试(dprintk)启用。
更改我做的:
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -55,7 +55,7 @@ void asmlinkage __attribute__((weak)) early_printk(const char *fmt, ...)
{
}
-#define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
+#define __LOG_BUF_LEN (1 << 17)
命令我使用写入文件:
cat "/proc/kmsg">/sdcard/klog.txt
仅在调试时,我没事,如果性能处于降级我但是,我不想丢弃任何日志。我知道我们不能让工作队列/线程等到打印完成。但是,还有什么方法可以保证,日志不会丢失。
'#tail -f/var/log/messages> /tmp/tmplog.txt&'是解决此问题的一种简单方法。 – 2014-10-16 21:58:10