Search for annotated tag reuse first
Annotated tags are relatively rare and currently are scheduled in a pack file near the commits, decreasing the time it takes to resolve client requests reading tags as part of a history traversal. Putting them first before the commits allows the storage system to page in the tag area, and have it relatively hot in the LRU when the nearby commit area gets examined too. Later looking at the tree and blob data will pollute the cache, making it more likely the tags are not loaded and would require file IO. Change-Id: I425f1f63ef937b8447c396939222ea20fdda290f
This commit is contained in:
parent
29997ab084
commit
41a18d57bc
|
@ -968,10 +968,10 @@ private void searchForReuse(ProgressMonitor monitor) throws IOException {
|
|||
if (cnt <= 4096) {
|
||||
// For small object counts, do everything as one list.
|
||||
BlockList<ObjectToPack> tmp = new BlockList<ObjectToPack>(cnt);
|
||||
tmp.addAll(objectsLists[Constants.OBJ_TAG]);
|
||||
tmp.addAll(objectsLists[Constants.OBJ_COMMIT]);
|
||||
tmp.addAll(objectsLists[Constants.OBJ_TREE]);
|
||||
tmp.addAll(objectsLists[Constants.OBJ_BLOB]);
|
||||
tmp.addAll(objectsLists[Constants.OBJ_TAG]);
|
||||
searchForReuse(monitor, tmp);
|
||||
if (pruneCurrentObjectList) {
|
||||
// If the list was pruned, we need to re-prune the main lists.
|
||||
|
@ -982,10 +982,10 @@ private void searchForReuse(ProgressMonitor monitor) throws IOException {
|
|||
}
|
||||
|
||||
} else {
|
||||
searchForReuse(monitor, objectsLists[Constants.OBJ_TAG]);
|
||||
searchForReuse(monitor, objectsLists[Constants.OBJ_COMMIT]);
|
||||
searchForReuse(monitor, objectsLists[Constants.OBJ_TREE]);
|
||||
searchForReuse(monitor, objectsLists[Constants.OBJ_BLOB]);
|
||||
searchForReuse(monitor, objectsLists[Constants.OBJ_TAG]);
|
||||
}
|
||||
|
||||
endPhase(monitor);
|
||||
|
|
Loading…
Reference in New Issue