linux-kernel模块最大分配内存

我想编写一个模块,其任务是捕获传入的数据包,而不将它们发送到用户空间应用程序并对捕获的数据包进行一些修改。 然后该模块将发送此数据包以传输到NIC。

但主要的问题是我的模块尺寸非常大而且还进行了大量的处理。 因此,在内核模块内部进行此处理是好的,还是应该将信息和数据包传递给用户空间进行处理以避免复杂性。

&我这样做只是为了快速获取数据包处理。
所以最大化linux内核模块可以分配多少内存。

在内核空间而不是用户空间中运行时,网络数据包总是更快。 请记住,必须将其复制到用户空间,这是一项昂贵的操作。 但是,并非一切都应该在内核空间中运行,因为这会使系统非常不稳定,因为每个错误都是潜在的内核崩溃。 因此,如果您想使用内核或用户空间对应用程序进行编程,则严重依赖于您的规范。

相反,要分配的内存量根本不重要。 在linux模块中使用kmalloc() ,您可以分配与系统中物理可用内存一样多的内存,因此您应该没问题。