git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Linus Torvalds <torvalds@osdl.org>
To: Shawn Pearce <spearce@spearce.org>
Cc: Junio C Hamano <junkio@cox.net>, git@vger.kernel.org
Subject: Re: [PATCH 2/2] git reflog expire
Date: Tue, 19 Dec 2006 15:29:54 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.64.0612191524180.6766@woody.osdl.org> (raw)
In-Reply-To: <20061219102741.GA21324@spearce.org>



On Tue, 19 Dec 2006, Shawn Pearce wrote:
> 
> Smaller mmap units may help on some larger projects. For example
> 'git whatchanged' shouldn't need to setup page table entries for
> the entire pack file when only the front and middle are needed to
> obtain the data for the most recent 25 commits, before the user
> kills the pager.

At least on Linux, we do NOT set up page table entries unnecessarily. The 
cost of a mmap() is largely independent of the size of the mmap, and the 
costs will be on page fault time (which is obviously O(n) in number of 
pages you need).

The same is _largely_ true of munmap() too. There's a small cost to large 
mmaps that were only sparsely accessed being unmapped (we have to look at 
the page tables closely, even if they end up being empty), but quite 
frankly, it's not going to be all that noticeable.

So mmap() costs end up largely being one (fairly small) fixed cost, plus a 
(fairly small) cost for each page beign demand-mapped in. 

Of course, Linux is just _better_ than the competition, so things that 
don't help Linux might still help other systems. Linux does both page 
faults and the mmap system call well, other systems will generally be an 
order of magnitude worse in both. And as we've seen, it can be more.

(Things that are really fast on Linux: VM manipulation, and filename path 
lookup. Those are both ops that Linux _really_ shines on. It may not sound 
like much, but when you do millions of them, it's the difference between 
seconds and hours).


  reply	other threads:[~2006-12-19 23:30 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-16 23:10 What's cooking in git.git (topics) Junio C Hamano
2006-12-16 23:29 ` Jakub Narebski
2006-12-17  0:19   ` Junio C Hamano
2006-12-17 17:35   ` Yann Dirson
2006-12-17 23:38     ` Josef Weidendorfer
2006-12-17  4:35 ` Brian Gernhardt
2006-12-17  4:42   ` Shawn Pearce
2006-12-17  6:46   ` [PATCH] revision: introduce ref@{N..M} syntax Junio C Hamano
2006-12-17 18:14     ` Linus Torvalds
2006-12-17 19:38       ` Junio C Hamano
2006-12-17 23:41 ` What's cooking in git.git (topics) Andy Parkins
2006-12-18  8:09   ` Junio C Hamano
2006-12-18  9:17     ` Andy Parkins
2006-12-18  9:33       ` Shawn Pearce
2006-12-18  9:40 ` [PATCH 1/2] add for_each_reflog_ent() iterator Junio C Hamano
2006-12-18  9:42 ` [PATCH 2/2] Protect commits recorded in reflog from pruning Junio C Hamano
2006-12-18 14:08   ` Shawn Pearce
2006-12-19  1:22     ` Junio C Hamano
2006-12-19  8:25       ` [PATCH 1/2] Move in_merge_bases() to commit.c Junio C Hamano
2006-12-19  8:25       ` [PATCH 2/2] git reflog expire Junio C Hamano
2006-12-19  9:08         ` Shawn Pearce
2006-12-19 10:15           ` Junio C Hamano
2006-12-19 10:27             ` Shawn Pearce
2006-12-19 23:29               ` Linus Torvalds [this message]
2006-12-20  0:34                 ` Junio C Hamano
2006-12-20  0:58                   ` Linus Torvalds
2006-12-19 10:40             ` Shawn Pearce
2006-12-19 11:08               ` Junio C Hamano

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.64.0612191524180.6766@woody.osdl.org \
    --to=torvalds@osdl.org \
    --cc=git@vger.kernel.org \
    --cc=junkio@cox.net \
    --cc=spearce@spearce.org \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).