我想编写一个模块,它的任务是捕获传入的数据包,而不将它们发送到用户空间应用程序&对捕获的数据包进行一些修改。然后,此模块将发送此数据包以传输到NIC。
但是主要的问题是我的模块非常大&它也做了很多处理。因此,在内核模块中进行此处理是好的,还是应该将信息和包传递到用户空间进行处理,以避免复杂性。
我这样做只是为了让数据包处理得非常快。
因此,linux内核模块可以分配的最大内存量。
发布于 2012-11-07 21:18:03
当在内核空间运行而不是在用户空间运行时,网络包总是更快。请记住,必须将其复制到用户空间,这是一个开销很大的操作。然而,并不是所有的东西都应该在内核空间中运行,因为这会使系统非常不稳定,因为每一个bug都是潜在的内核崩溃。因此,如果您想使用内核或用户空间来编写应用程序,这在很大程度上取决于您的规范。
相比之下,要分配的内存量根本无关紧要。在linux模块中使用kmalloc(),您可以分配系统中物理上可用的尽可能多的内存,所以应该没问题。
https://stackoverflow.com/questions/13268824
复制相似问题