我正在研究如何分析和评估Linux的TCP/IP协议(protocol)栈。我的目标是研究tcp/ip协议(protocol)栈整体的性能,研究每一层的时间成本以及tcp/p协议(protocol)层与ip层queuinf之间的交互。
为了执行上述操作:我使用基于探测节点的模式来研究 Linux TCP/IP 协议(protocol)的内部行为。探测节点是添加到内核中的一段代码,用于记录时间戳、排队长度和数据包大小等信息。
我的问题:如何将探测节点添加到内核中?
最佳答案
您可以使用(例如)SystemTap ,该工具背后的主要思想是将探测节点放置在某个位置:内核或用户空间程序。
如果你没有时间学习SystemTap,你可以在内核中放入一些printk
并从dmesg
中读取它们。
在这两种情况下,由于打印,您都会在网络堆栈中引入很大的延迟。为了减少探测带来的延迟,我建议您使用 SystemTap,将所有时间样本存储在某处并仅在采集结束时打印。
关于c - 如何向linux内核添加代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22935234/