Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的内核旁路网络_Java_Sockets_Networking_Tcp_Real Time - Fatal编程技术网

Java中的内核旁路网络

Java中的内核旁路网络,java,sockets,networking,tcp,real-time,Java,Sockets,Networking,Tcp,Real Time,有人知道如何在Java中绕过内核吗?任何地方有hello world或这是rocket science吗?搜索“Java零拷贝缓冲区”或“Java NIO”或“Java Netty” 这是一个关于和零拷贝的幻灯片:。下面是一个Netty的示例项目 或者,您可以转到较低的级别并使用这些类,您可以在这里阅读这些类如果您使用的是solarflare,您可以使用它们的API进行内核绕过(我不是直接使用它,因此无法提供更多细节)。您还可以使用诸如29West LBM或IBM LLM之类的消息传递代理,它们

有人知道如何在Java中绕过内核吗?任何地方有hello world或这是rocket science吗?

搜索“Java零拷贝缓冲区”或“Java NIO”或“Java Netty”

这是一个关于和零拷贝的幻灯片:。下面是一个Netty的示例项目


或者,您可以转到较低的级别并使用这些类,您可以在这里阅读这些类

如果您使用的是solarflare,您可以使用它们的API进行内核绕过(我不是直接使用它,因此无法提供更多细节)。您还可以使用诸如29West LBM或IBM LLM之类的消息传递代理,它们支持各种硬件上的丰富功能


正如@eSniff所提到的,JRE具有
transferFrom()
/
transferTo()
API,目前用于为支持它的系统公开
sendfile(2)
等效文件。API的语义已经定义,因此可以透明地实现,以支持任意2个通道之间的DMA传输。

这太棒了。我使用的是Java NIO,但这并没有绕过内核。我已经多年没有用Java编程了,所以我不确定答案的相关性。但是为什么最近的投票被否决了呢?嘿,但是transferFrom和transferTo都与FileChannel有关!我在这里谈论的是用于联网的SocketChannel和DatagramChannel:(@chrisapotek a SocketChannel既是可写的ByTechannel,也是可读的ByTechannel,所以…someFileChannel.transferFrom(someSocketChannel,pos,count)/someFileChannel.transferTo(pos,count,someSocketChannel)我自己只使用过Netty包装器,但这应该可以工作。transferXxx是用于公开DMA风格功能的标准API。在Oracle HotSpot JRE中,从版本7开始,它只针对文件和套接字实现。我认为它不会在用户空间内存缓冲区和套接字(即RDMA)之间工作也就是说,代码有扩展点,如果我没有弄错的话,第三方的提供者库可以添加新的通道类型。关闭此代码的人对网络一无所知。干得好!这个问题存在的原因很好。内核没有给我们与用户API相同的数据包吞吐量。我诚实地说我会向@Makoto,John Palmer,Don Roby,rene,Ben求助。