Re: [PATCH 2/2] index-pack: reduce memory usage when the pack has large blobs
From: Ian Kumlien <hidden>
Date: 2016-06-15 22:53:08
On Fri, Feb 24, 2012 at 07:23:21PM +0700, Nguyễn Thái Ngọc Duy wrote:
This command unpacks every non-delta objects in order to: 1. calculate sha-1 2. do byte-to-byte sha-1 collision test if we happen to have objects with the same sha-1 3. validate object content in strict mode All this requires the entire object to stay in memory, a bad news for giant blobs. This patch lowers memory consumption by not saving the object in memory whenever possible, calculating SHA-1 while unpacking the object. This patch assumes that the collision test is rarely needed. The collision test will be done later in second pass if necessary, which puts the entire object back to memory again (We could even do the collision test without putting the entire object back in memory, by comparing as we unpack it). In strict mode, it always keeps non-blob objects in memory for validation (blobs do not need data validation). "--strict --verify" also keeps blobs in memory. Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Finally, reapplied the patches and so on: remote: Counting objects: 1425, done. remote: Compressing objects: 100% (617/617), done. remote: Total 1425 (delta 790), reused 1425 (delta 790) Receiving objects: 100% (1425/1425), 56.06 MiB | 3.97 MiB/s, done. Resolving deltas: 100% (790/790), done. real 1m57.742s user 0m29.950s sys 0m6.308s *YAY* I wonder how the hell i could have missed several parts of the patch =( But there seems to be some issue in gerrit 2.1.8, will have to check against a newer gerrit to verify if it's still a problem. FYI - it seems to hang doing nothing. As for your patches: Tested-by: Ian Kumlien <redacted> ;)