首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux内核中存储大量数据

问在Linux内核中存储大量数据
EN

Unix & Linux用户
提问于 2017-09-05 13:06:55
回答 1查看 224关注 0票数 1

我有一个定制的Linux,它将打印到dmesg和syslog (使用printk),其中包含了系统中每个接收到的MP-TCP数据包的一些附加信息。但是,我正在生成大量的数据(使用iperf工具),大约2 Gbps的数据对应于非常多的数据包。由于printk,我的所有CPU都100%加载在我的系统中(我有4个CPU)。我担心这可能会影响我的系统中的数据包处理,并导致更多的问题和迟到。那么,我的问题是,在不增加CPU负载的情况下,是否有其他方法将我的数据存储在Liunx内核中?

为了给出数据大小的示例,在iperf会话的60秒内,`/var/log/syslog的大小约为1.2GBytes。

让我再补充一件事,我不需要在线处理Linux报告的数据。我将在脱机模式下处理它们。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2017-09-05 14:25:45

您可能应该研究ftrace,这是内置的Linux内核跟踪工具。例如,这个稍微过时的LWN文章说

Ftrace引入了一种名为trace_printk()的printk()新形式。它可以像printk()一样使用,也可以在任何上下文中使用(中断代码、NMI代码和调度程序代码)。跟踪_printk()的好处是它没有输出到控制台。相反,它会写入Ftrace环缓冲区,并且可以通过跟踪文件读取。用trace_printk()写入环形缓冲区只需要大约十分之一微秒左右。例如,您可以将类似的内容添加到内核或模块中:trace_printk(“从bar %p\n中读取foo %d”,bar->foo,bar);

内核文档ftrace.txt有详细信息。在目录/sys/kernel/debug/tracing/中,可以在伪文件buffer_size_kb中设置跟踪环缓冲区大小。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/390481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档