[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-4714?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17743717#comment-17743717
 ] 

Zili Chen commented on ZOOKEEPER-4714:
--------------------------------------

[~andor] in case of you don't cut 3.9.0, this patch will be included now.

> Improve syncRequestProcessor performance
> ----------------------------------------
>
>                 Key: ZOOKEEPER-4714
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4714
>             Project: ZooKeeper
>          Issue Type: Wish
>          Components: server
>    Affects Versions: 3.8.1
>            Reporter: Yan Zhao
>            Assignee: Zili Chen
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 3.9.0
>
>         Attachments: 761688051587_.pic.jpg
>
>          Time Spent: 3h 10m
>  Remaining Estimate: 0h
>
> In the SyncRequestProcessor, a write operation is performed for each write 
> request. Two methods are relatively time-consuming.
> 1. Within SyncRequestProcessor#shouldSnapshot, the current size of the 
> current file is retrieved, which involves a system call.
> Call stack:
> java.io.File.length(File.java)
> org.apache.zookeeper.server.persistence.FileTxnLog.getCurrentLogSize(FileTxnLog.java:211)
> org.apache.zookeeper.server.persistence.FileTxnLog.getTotalLogSize(FileTxnLog.java:221)
> org.apache.zookeeper.server.persistence.FileTxnSnapLog.getTotalLogSize(FileTxnSnapLog.java:671)
> org.apache.zookeeper.server.ZKDatabase.getTxnSize(ZKDatabase.java:790)
> org.apache.zookeeper.server.SyncRequestProcessor.shouldSnapshot(SyncRequestProcessor.java:145)
> org.apache.zookeeper.server.SyncRequestProcessor.run(SyncRequestProcessor.java:182)
> 2. Within ZKDatabase#append, the current position of the current file is 
> retrieved, which also involves a system call.
> Call stack:
> sun.nio.ch.FileDispatcherImpl.seek(FileDispatcherImpl.java)
> sun.nio.ch.FileChannelImpl.position(FileChannelImpl.java:264)
> org.apache.zookeeper.server.persistence.FilePadding.padFile(FilePadding.java:76)
> org.apache.zookeeper.server.persistence.FileTxnLog.append(FileTxnLog.java:298)
> org.apache.zookeeper.server.persistence.FileTxnSnapLog.append(FileTxnSnapLog.java:592)
> org.apache.zookeeper.server.ZKDatabase.append(ZKDatabase.java:678)
> org.apache.zookeeper.server.SyncRequestProcessor.run(SyncRequestProcessor.java:181)
> Therefore, it is best to maintain the current size and position of the 
> current file ourselves, as this can greatly improve performance.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to