为什么内核空间与用户空间得数据交换消耗如此巨大?
月吻长河 2006-05-09 08:56:25 为什么内核空间与用户空间的数据交换消耗如此巨大的系统资源???
我发现在内核空间与用户空间交换数据(copy_to_user), 比在内核空间与内核空间memcpy相同量的数据远远耗费系统资源(主要是处理器时间)? 甚至,我怀疑,比在用户空间与用户空间memcpy相同量的数据都远耗费更多系统资源!
我在调试中发现, 内核空间内的memcpy(240字节)优化了很多个为0 拷贝,结果对系统性能似乎毫无影响. 但是我把内核空间与用户空间的数据交换量减少一点(16字节), 发现系统性能明显提高!!
由此,我们来探讨怎样提高内核空间与用户空间得数据交换的性能?
最容易想到的是mmap
这里有一个疑问就是使用mmap后,用户空间进程从映射的内核空间内存中拷贝数据所消耗的资源为什么就比直接copy_to_user的少呢(未进行实验证明)???