git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC 0/3] dumb HTTP transport speedups

From
EWEric Wong <e@80x24.org>
Date
Jul 11, 2016, 20:51 UTC
Message-ID
<20160711205131.1291-1-e@80x24.org>

TL;DR: dumb HTTP clone from a certain badly-packed repo goes from ~2 hours to ~30 min memory usage drops from 2G to 360M

I hadn't packed the public repo at https://public-inbox.org/git for a few weeks. As an admin of a small server limited memory and CPU resources but fairly good bandwidth, I prefer clients use dumb HTTP for initial clones.

Unfortunately, I noticed my dinky netbook runs out-of-memory when using GIT_SMART_HTTP=0 to clone this giant repo; and a machine with more memory still takes over two hours depending on network conditions (and uses around 2GB RSS!).

Anyways, https://public-inbox.org/git is better packed, now; but I've kept https://80x24.org/git-i-forgot-to-pack available with over 7K loose objects to illustrate the problem:

	(this is dumb HTTP-only)
	git clone --mirror https://80x24.org/git-i-forgot-to-pack

The primary problem is fixed by PATCH 3/3 in this series, and I can now clone the above in around 30 minutes and "only" seems to use around 360M memory.

I'll leave git-i-forgot-to-pack up for a few months/year so others can test and hammer away at it.

The following changes since commit 5c589a73de4394ad125a4effac227b3aec856fa1:
  Third batch of topics for 2.10 (2016-07-06 13:42:58 -0700)
are available in the git repository at:
  git://bogomips.org/git-svn.git dumb-speedups
for you to fetch changes up to b9d5aca4b8e6c9f7fb5ee4e0ce33bb42c4ea2992:
  http-walker: reduce O(n) ops with doubly-linked list (2016-07-11 20:25:51 +0000)
----------------------------------------------------------------
Eric Wong (3):
      http-walker: remove unused parameter from fetch_object
      http: avoid disconnecting on 404s for loose objects
      http-walker: reduce O(n) ops with doubly-linked list
 http-walker.c |  55 ++++++++++----------
 http.c        |  16 +++++-
 list.h        | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 204 insertions(+), 31 deletions(-)
 create mode 100644 list.h
Next: Eric Wong
Message 1 of 7 in “[RFC 0/3] dumb HTTP transport speedups”
  1. Eric WongJul 11, 2016
  2. 1/3 http-walker: remove unused parameter from fetch_objectEric Wong, Jul 11, 2016
  3. 2/3 http: avoid disconnecting on 404s for loose objectsEric Wong, Jul 11, 2016
  4. 3/3 http-walker: reduce O(n) ops with doubly-linked listEric Wong, Jul 11, 2016
  5. 4/3 http-walker: use hashmap to reduce list scanEric Wong, Jul 11, 2016
  6. Jakub NarębskiJul 24, 2016
  7. Eric WongJul 24, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.