有沒有人想過如何在Java中做內核旁路?任何地方的世界你好,還是火箭科學?在Java中使用內核旁路的網絡
回答
搜索「Java Zero-Copy Buffers」或「Java NIO」或「Java Netty」。
這裏是一個關於Netty的幻燈片放映和零拷貝:http://www.slideshare.net/danbim/zerocopy-eventdriven-servers-with-netty。這是Netty的一個示例項目。
或者你可以去低級別,並使用java.nio.channels類,你可以讀到這裏http://www.ibm.com/developerworks/linux/library/j-zerocopy/
這是很棒的信息eSniff。我正在使用Java NIO,但不能繞過內核。 – chrisapotek
我在java中沒有編寫程序,所以我不確定這個答案有多相關。但爲什麼最近降價呢? – eSniff
如果使用的是Solarflare的,你可以使用他們的API來完成的內核旁路(我並沒有直接使用它,所以不能提供更多細節)。您還可以使用像29West LBM或IBM LLM這樣的消息傳送產品,它們支持各種硬件的豐富功能。
作爲@eSniff提到的,JRE有transferFrom()
/transferTo()
API,它現在被用來公開支持它的系統的等價物sendfile(2)
。 API的語義被定義爲可以透明地實現以支持任何2個通道之間的DMA傳輸。
嘿,但transferFrom和transferTo與FileChannel有關!我在這裏談論SocketChannel和DatagramChannel: – chrisapotek
@chrisapotek一個socketChannel既是一個WritableByteChannel也是一個ReadableByteChannel,所以.... someFileChannel.transferFrom(someSocketChannel,pos,count)/ someFileChannel.transferTo(pos,count,someSocketChannel )我自己只使用了Netty包裝器,但這應該起作用 – eSniff
transferXxx是暴露DMA樣式功能的標準API在Oracle HotSpot JRE中,從版本7開始,它僅用於文件和套接字。我認爲它不會在用戶空間內存緩衝區和套接字(即RDMA)之間起作用。也就是說,代碼具有擴展點,如果我沒有弄錯,新的通道類型可以由第三方的提供程序庫添加。 – ddimitrov
- 1. Linux網絡內核
- 2. 網絡鏈路套接字使用3.X linux內核
- 3. 如何實施tcp(內核)旁路?
- 4. asp.net核心網絡API中心路由
- 5. 如何在網絡內核擴展中使用OpenSSL?
- 6. 在java中繪製道路網絡?
- 7. 網絡使用Java
- 8. Asp網絡核心與路由混淆
- 9. 在java網絡中使用DataInputStream和DataOutputStream
- 10. 發送從內核結構通過網絡鏈路
- 11. 如何使用具有神經網絡的內核PCA
- 12. 旁路STP登錄屏幕使用硬編碼的憑據 - 從網絡
- 13. 什麼內核線程負責在Linux內核中發送網絡包
- 14. 使用Java的文件/目錄的網絡路徑
- 15. 解決asp網絡核心mvc中的路由段
- 16. 刪除網絡的內部環路
- 17. 訪問的網絡路徑,它coverting使用Java
- 18. 最適合在網絡應用中使用的路徑類型?
- 19. 如何在內核模塊中捕獲網絡幀
- 20. 使用Java查找範圍內的所有可用無線網絡使用Java
- 21. 網絡應用中的絕對路徑
- 22. 內核中傳輸層和網絡層之間的通信
- 23. 獲取Linux內核中的網絡設備列表
- 24. 在Java中使用閃存式網絡攝像頭網站
- 25. 如何在網絡核心的Web API
- 26. 使用Java的cuda設備內核?
- 27. 在Java中在使用網絡攝像頭的Linux
- 28. 網絡路徑使絕對路徑 - asp.net
- 29. 使用kill命令與網絡路徑
- 30. Java:網絡中的EOFException
關閉此事的人對網絡無能爲力。幹得好! – chrisapotek
這個問題存在很好的理由。內核不會像用戶API那樣爲我們提供相同數量的數據包吞吐量。老實說,我會對@Makoto,John Palmer,Don Roby,rene,Ben提出這個問題。 –