zero-copy

    9熱度

    1回答

    我想知道爲什麼Linux內核(或任何其他主流操作系統)沒有零拷貝網絡功能的原因?通過零拷貝,我的意思是說,一個數據包/數據流不會被複制傳遞給用戶空間中的應用程序,使用內存池類型的分配器來共享內核和用戶空間之間的內存。我自己想出了3個理論: a)我猜測存在安全問題。但是,當用戶空間和內核僅用作緩衝區時,是否真的沒有辦法使內存在用戶空間和內核之間共享? b)我想有穩定性問題。但是,我們不能假設誰使用零

    1熱度

    1回答

    我試圖實現零拷貝機制,即與TransmitFile() API相反的功能。 但我不知道如何在內核中註冊緩衝區。下面是我想要做的實行零拷貝的細節: 我們將在我們的客戶端緩存服務器接收大量的數據,我這裏有一個疑問,也是氣象數據將來到socket緩衝區(客戶端)或首先它會進入NIC緩衝區,請清除此疑問。 現在來自套接字緩衝區,我希望將數據直接複製到內核緩衝區,然後將文件複製到光盤中,而無需進行讀寫系統調

    3熱度

    1回答

    我正在使用OpenCL來做一些圖像處理,並且想用它將RGBA圖像直接寫入framebuffer。工作流程如下所示: 1)將framebuffer映射到用戶空間。 2)創建使用clCreateBuffer用 「CL_MEM_ALLOC_HOST_PTR」 3)的標誌的OpenCL緩衝器使用clEnqueueMapBuffer映射結果的幀緩衝器。 但是,它不起作用。屏幕上沒有任何東西。然後我發現來自幀

    3熱度

    1回答

    我想在兩個進程本地/網絡之間共享/傳輸數據。通用IPC機制 共享內存和消息隊列可用於傳輸數據。但是這些機制 涉及多個副本。 我遇到了零複製機制,這減少了CPU上的複製開銷 。 Linux支持使用sendfile和splice。這些API不在POSIX中。 如何僅使用POSIX API實現零拷貝?

    0熱度

    1回答

    根據OpenOnload Extensions API文檔,零拷貝API不包括UDP發送和TCP接收場景。爲什麼?

    0熱度

    1回答

    public class Response{ public int packetLength; public int cmd; public int seqId; public FileRegion fileRegion; //file content public String filename; public int begin;

    0熱度

    1回答

    當使用Google的FlatBuffer時,最終使用的類型是ByteBuffer(它可以包裝byte[])。我用這個與HttpServletResponse。問題變成Servlets PrintWriter不提供byte[]或ByteBuffer寫作。 任何能夠從HttpServletResponse輸出而不必將ByteBuffer/byte[]複製到另一個類型的提示?

    2熱度

    3回答

    我發現Netty documentation表示他們在內置的ByteBuffer中有「透明零拷貝」功能。但是在閱讀之後,我注意到它沒有提到任何內核空間和用戶空間切換,只是重用緩衝區。 所以我不知道Netty的「零拷貝」功能與操作系統級別「零拷貝」(這意味着從用戶空間內存複製到內核空間內存)不同嗎?

    5熱度

    1回答

    我在使用Java中的零拷貝將大文件從文件傳輸到套接字時看到一些奇怪的行爲。我的環境: Windows 7 64位JDK 1.6.0_45和1.7.0_79。 的Centos 6.6 64位JDK 1.6.0_35 該程序的功能:客戶端拷貝輸入文件插入插座,和服務器副本插座使用零拷貝的方法輸出文件:transferFrom和的transferTo。如果文件大小相對較大,並非所有字節都到達服務器,在W

    0熱度

    1回答

    我需要通過tcpip套接字高效地將相同的消息發送/扇出到主機列表。邏輯需要循環遍歷每個套接字來寫出消息。如果此邏輯運行在Linux用戶模式下,則底層操作系統將調用系統調用的次數與主機數量相同。這是昂貴的,因爲每個系統調用都需要用戶模式到內核模式的上下文切換。 如果可以在採用主機列表(文件描述符)的系統調用中移動循環,效率會更高。這種系統調用是否存在於linux中? 如果這樣的系統調用存在,我們有一