From: Michael Haggerty <mhagger@alum.mit.edu>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Jeff King <peff@peff.net>,
Drew Northup <drew.northup@maine.edu>,
Jakub Narebski <jnareb@gmail.com>
Subject: Re: [PATCH 6/6] Retain caches of submodule refs
Date: Wed, 24 Aug 2011 13:33:28 +0200 [thread overview]
Message-ID: <4E54E188.10802@alum.mit.edu> (raw)
In-Reply-To: <7v4o1hgemp.fsf@alter.siamese.dyndns.org>
On 08/17/2011 12:45 AM, Junio C Hamano wrote:
> All the changes except for this one made sense to me, but I am not sure
> about this one. How often do we look into different submodule refs in the
> same process over and over again?
As I've mentioned, I am not very familiar with submodules and I don't
know what actions in submodules can be triggered from the top-level
project. Here is the only code path that I can find in the current git
code that causes submodule refs to be read at all:
setup_revisions() with opt->submodule is set,
which can only happen when called via merge_submodule(),
which is called from merge_file() in merge-recursive.c,
which is called by process_renames() and merge_content(),
which are both ultimately called from merge_trees().
I don't know how often this can happen during the lifetime of one process.
The cost of retaining the submodule ref caches is roughly 100 bytes per
reference of memory. Another side effect is that the submodule caches
never have to be cleaned up; this saves a list walk and one free() per
cached reference if the refs for more than one submodule are accessed.
Michael
--
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/
next prev parent reply other threads:[~2011-08-24 11:33 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-12 22:36 [PATCH 0/6] Retain caches of submodule refs Michael Haggerty
2011-08-12 22:36 ` [PATCH 1/6] Extract a function clear_cached_refs() Michael Haggerty
2011-08-12 22:36 ` [PATCH 2/6] Access reference caches only through new function get_cached_refs() Michael Haggerty
2011-08-14 22:12 ` Junio C Hamano
2011-08-23 4:21 ` Michael Haggerty
2011-08-12 22:36 ` [PATCH 3/6] Change the signature of read_packed_refs() Michael Haggerty
2011-08-12 22:36 ` [PATCH 4/6] Allocate cached_refs objects dynamically Michael Haggerty
2011-08-14 22:21 ` Junio C Hamano
2011-08-12 22:36 ` [PATCH 5/6] Store the submodule name in struct cached_refs Michael Haggerty
2011-08-12 22:36 ` [PATCH 6/6] Retain caches of submodule refs Michael Haggerty
2011-08-13 12:54 ` Heiko Voigt
2011-08-24 8:17 ` Michael Haggerty
2011-08-24 20:05 ` Heiko Voigt
2011-08-16 22:45 ` Junio C Hamano
2011-08-24 11:33 ` Michael Haggerty [this message]
2011-10-09 11:12 ` Michael Haggerty
2011-10-09 20:10 ` Junio C Hamano
2011-10-10 5:46 ` [PATCH 0/2] Provide API to invalidate refs cache Michael Haggerty
2011-10-10 5:46 ` [PATCH 1/2] invalidate_cached_refs(): take the submodule as parameter Michael Haggerty
2011-10-10 5:46 ` [PATCH 2/2] invalidate_cached_refs(): expose this function in refs API Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 0/7] Provide API to invalidate refs cache Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 1/7] invalidate_ref_cache(): rename function from invalidate_cached_refs() Michael Haggerty
2011-10-11 0:00 ` Junio C Hamano
2011-10-11 5:53 ` Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 2/7] invalidate_ref_cache(): take the submodule as parameter Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 3/7] invalidate_ref_cache(): expose this function in refs API Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 4/7] clear_cached_refs(): rename parameter Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 5/7] clear_cached_refs(): extract two new functions Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 6/7] write_ref_sha1(): only invalidate the loose ref cache Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 7/7] clear_cached_refs(): inline function Michael Haggerty
2011-10-11 0:02 ` [PATCH v2 0/7] Provide API to invalidate refs cache Junio C Hamano
2011-10-11 5:50 ` Michael Haggerty
2011-10-11 8:09 ` Julian Phillips
2011-10-11 17:26 ` Junio C Hamano
2011-10-12 18:44 ` [PATCH v3 " Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 1/7] invalidate_ref_cache(): rename function from invalidate_cached_refs() Michael Haggerty
2011-10-12 19:14 ` Junio C Hamano
2011-10-12 22:12 ` Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 2/7] invalidate_ref_cache(): take the submodule as parameter Michael Haggerty
2011-10-12 19:19 ` Junio C Hamano
2011-10-12 22:07 ` Michael Haggerty
2011-10-17 18:00 ` Junio C Hamano
2011-11-03 10:23 ` Michael Haggerty
2011-11-03 18:57 ` Junio C Hamano
2011-10-12 18:44 ` [PATCH v3 3/7] invalidate_ref_cache(): expose this function in refs API Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 4/7] clear_cached_refs(): rename parameter Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 5/7] clear_cached_refs(): extract two new functions Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 6/7] write_ref_sha1(): only invalidate the loose ref cache Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 7/7] clear_cached_refs(): inline function Michael Haggerty
2011-10-12 19:28 ` [PATCH v3 0/7] Provide API to invalidate refs cache Junio C Hamano
2011-10-10 19:53 ` Re: [PATCH 6/6] Retain caches of submodule refs Heiko Voigt
2011-10-11 4:12 ` Michael Haggerty
2011-10-11 17:41 ` Heiko Voigt
2011-08-13 12:34 ` [PATCH 0/6] " Heiko Voigt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E54E188.10802@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=drew.northup@maine.edu \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).