You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Guozhang Wang (Jira)" <ji...@apache.org> on 2022/04/20 17:33:00 UTC

[jira] [Resolved] (KAFKA-13799) Improve documentation for Kafka zero-copy

     [ https://issues.apache.org/jira/browse/KAFKA-13799?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Guozhang Wang resolved KAFKA-13799.
-----------------------------------
    Fix Version/s: 3.3.0
         Assignee: RivenSun
       Resolution: Fixed

> Improve documentation for Kafka zero-copy
> -----------------------------------------
>
>                 Key: KAFKA-13799
>                 URL: https://issues.apache.org/jira/browse/KAFKA-13799
>             Project: Kafka
>          Issue Type: Improvement
>          Components: documentation
>            Reporter: RivenSun
>            Assignee: RivenSun
>            Priority: Major
>             Fix For: 3.3.0
>
>
> Via documentation https://kafka.apache.org/documentation/#maximizingefficiency
> and [https://kafka.apache.org/documentation/#networklayer] ,
> We can know that Kafka combines pagecache and zero-copy when reading messages in files on disk, which greatly improves the consumption rate of messages.
> But after browsing the source code:
> Look directly at the *FileRecords.writeTo(...)* method,
> 1. Only PlaintextTransportLayer.transferFrom() uses fileChannel.transferTo(), and the bottom layer calls the sendfile method to implement zero-copy data transfer.
> 2. The logic of the SslTransportLayer.transferFrom() method: 
> {code:java}
> fileChannel.read(fileChannelBuffer, pos) 
> -> 
> sslEngine.wrap(src, netWriteBuffer) 
> -> 
> flush(ByteBuffer buf) && socketChannel.write(buf){code}
> That is, first read the data on the disk or directly from the page cache, then encrypt the data, and finally send the encrypted data to the network. {*}FileChannel.transferTo() is not used in the whole process{*}.
>  
> Conclusion: 
> PlaintextTransportLayer and SslTransportLayer both use pagecache, but SslTransportLayer does not implement zero-copy.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)