[ 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)