RivenSun created KAFKA-13799:
--------------------------------

             Summary: 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


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.1#820001)

Reply via email to