On Tue, Jun 19, 2018 at 10:27 PM Ivan Kanis <expire-by-2010-08-14@xxxxxxxx> wrote: > > Dmitry Potapov <dpotapov@xxxxxxxxx> wrote: > > > On Fri, Aug 06, 2010 at 07:23:17PM +0200, Ivan Kanis wrote: > >> > >> I expected the malloc to take 4G but was surprised it didn't. It seems > >> to be mmap taking all the memory. I am not familiar with that function, > >> it looks like it's mapping memory to a file... Is it reasonable to mmap > >> so much memory? > > > > AFAIK, Git does not need to mmap the whole pack to memory, but it > > is more efficient to mmap the whole pack wherever possible, because > > it has a completely random access, so if you store only one sliding > > window, you will have to re-read it many times. Besides, mmap size > > does not mean that so much physical memory is used. Pages should > > be loaded when they are necessary, and if you have more than one > > client cloning the same repo, this memory should be shared by them. > > I have clone identical repositories and the system starts to swap. I > think it shows that cloning two repository doesn't share mmap. I doubt it (assuming you're on linux). If you suspect this, configure core.packedGitWindowSize to reduce the mmap size. There are lots of other things in a cloning process that do not share (is this client or server btw?) and things could add up. -- Duy