2013-03-25 69 views
1

我的要求是将数据存储在内核中..数据是来自网络的输入数据包..它可能在大小上不同,并且必须存储例如250ms的持续时间。并且应该有5个这样的候选对象哪些内核级别的内存管理是必需的..因为数据包来的速度非常快..我的做法是分配一个大内存,每个这样的候选人说2MB内存..bez kmalloc和kfree的定时开销..任何帮助吗?内核级内存处理编码

+0

对不起,我没有关注..你的问题是..“使用内核内存池有问题吗?”? – Mike 2013-03-25 13:43:10

+0

我的需求如下..我需要处理在Linux内核级别..在哪里来自网络的数据包(TCP/IP)的速度为1mbps ..我需要存储的数据包,例如250ms..and数据包大小可能不同..由于kmalloc和kfree需要一些时间来做..我需要一个大的内存块,例如2mb ..这将被分配一次,永远不会释放,直到我需要..在Linux内核中可以做到的 – kernelCoder 2013-03-25 13:51:25

+0

这些通常由'skbufs' afaik支持的** scatter-gather **处理。 – 2013-03-25 13:57:51

回答

1

sk_buffs是一个通用的答案是与网络相关的或作为Mike指出一个kernel memory cache是更通用的回答你的问题。不过,我相信你可能有put a solution before the question

带有LTE/HSDPA/GSM的瓶颈是驱动程序,以及如何从设备获取数据到CPU。这取决于硬件连接的方式。您是否使用SPI,UART,SDHC,USB,PCI?

此外,至少与HSDPA,您需要一个ppp连接。 LTE不一样吗?以太网不是在这种情况下使用的模型。通常你需要模拟一个高速的tty。另外,n_gsm提供网络接口;我不完全熟悉这个界面,但我怀疑这是为了支持LTE。这不好documented。此外,还有Option USB串行驱动程序,如果这是您正在使用的硬件。 An example patch使用n_gsm来处理LTE;我相信这个补丁已被重新编入当前的n_gsm网络支持。

您需要告诉我们更多关于您的硬件的信息。