Jukka Zitting created OAK-629:
---------------------------------

             Summary: SegmentMK: Reverse writing of segments
                 Key: OAK-629
                 URL: https://issues.apache.org/jira/browse/OAK-629
             Project: Jackrabbit Oak
          Issue Type: Sub-task
          Components: segmentmk
            Reporter: Jukka Zitting
            Priority: Minor


By design changes to a content tree get written to a segment using a 
depth-first traversal. As a consequence the top-down access pattern used for 
reading content ends up parsing the content from the end to the beginning. This 
is somewhat troublesome as many memory and disk caches are optimized for the 
opposite direction of access.

To better leverage cache prefetching features (like readahead in Linux), it 
would be useful to reverse the order in which segments get written. In other 
words, instead of filling the segment buffer from the beginning to the end as 
the depth-first traversal proceeds, we could fill the buffer from the end to 
the beginning and count segment offsets from the end of a segment instead of 
its beginning.

While at it, it might also make sense to align record offsets at four or eight 
byte boundaries to further (micro-)optimize access. It might also be worth it 
to reduce the segment size limit to something like 512kB so we could squeeze 
record references down from four to three bytes.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to