You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ratis.apache.org by "Yaolong Liu (Jira)" <ji...@apache.org> on 2022/11/01 02:03:00 UTC

[jira] [Resolved] (RATIS-1730) Optimize RaftLog cache eviction time

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

Yaolong Liu resolved RATIS-1730.
--------------------------------
    Fix Version/s: 2.4.1
         Assignee: Tsz-wo Sze  (was: Song Ziyang)
       Resolution: Fixed

> Optimize RaftLog cache eviction time
> ------------------------------------
>
>                 Key: RATIS-1730
>                 URL: https://issues.apache.org/jira/browse/RATIS-1730
>             Project: Ratis
>          Issue Type: Improvement
>          Components: server
>            Reporter: Song Ziyang
>            Assignee: Tsz-wo Sze
>            Priority: Major
>             Fix For: 2.4.1
>
>         Attachments: RATIS-1730.patch, image-20221026020057385.png, new_result.png
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> 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)