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

Song Ziyang updated RATIS-1730:
-------------------------------
    Description: 
Using JProfiler, I found almost 50% of AppendEntriesAsync execution time is 
spent on checkAndEvictCache, see the attached pic. There's also a TODO[1] 
suggesting to use a daemon thread to perform checkAndEvictCache. 

The time are mainly spent on getTotalCacheSize() and countCached(). These two 
methods will visit every segments. When there are lots of closed segments, 
visiting them all is indeed a very consuming operation, not to mention that 
they are performed on every appendEntriesAsync.

[1][https://github.com/apache/ratis/blob/b8117f41481f5f5861566a68bb1ea4dc7c60320c/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java#L402]
 

  was:
Using JProfiler, I found almost 50% of AppendEntriesAsync execution time is 
spent on checkAndEvictCache, see the attached pic. There's also a TODO[1] 
suggesting to use a daemon thread to perform checkAndEvictCache. 

Here are my configurations:

RaftLog SegmentSize: 96MB

RaftLogCache Segment Num Max: 2

RaftLogCache Size Max: 200MB

 

Am I setting the configurations improperly? If not, we shall use a daemon 
thread.

 

[1][https://github.com/apache/ratis/blob/b8117f41481f5f5861566a68bb1ea4dc7c60320c/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java#L402]
 


> Use Daemon thread to evict RaftLogCache
> ---------------------------------------
>
>                 Key: RATIS-1730
>                 URL: https://issues.apache.org/jira/browse/RATIS-1730
>             Project: Ratis
>          Issue Type: Improvement
>            Reporter: Song Ziyang
>            Assignee: Song Ziyang
>            Priority: Major
>         Attachments: image-20221026020057385.png
>
>
> Using JProfiler, I found almost 50% of AppendEntriesAsync execution time is 
> spent on checkAndEvictCache, see the attached pic. There's also a TODO[1] 
> suggesting to use a daemon thread to perform checkAndEvictCache. 
> The time are mainly spent on getTotalCacheSize() and countCached(). These two 
> methods will visit every segments. When there are lots of closed segments, 
> visiting them all is indeed a very consuming operation, not to mention that 
> they are performed on every appendEntriesAsync.
> [1][https://github.com/apache/ratis/blob/b8117f41481f5f5861566a68bb1ea4dc7c60320c/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java#L402]
>  



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

Reply via email to