"R. Tyler Ballance" <tyler@xxxxxxxxx> wrote: > "Works" insofar that it will alter the packed_git_window_size variable in environment.c > when the environment is set up. It /doesn't/ work when commands like git-diff(1) and git-log(1) > call get_revision() which seems to disregard the setting if the packed_window_size is set to something > low (i.e. ulimit -v 32768) I think you are tweaking the wrong variable here. Its more than just the window size that matters to how much of the ulimit we use. Its also packed_git_limit, which on a 64 bit system is 8 GB. That's probably why get_revision doesn't seem to honor this as a setting. Yea, its down to 0.85% of your ulimit per window, but we'll still try to open a new window because we have space left before the 8 GB limit. I think this is a good idea, trying to fit within the ulimit rather than assuming we can take whatever we please. But you also need to drop the packed_git_limit down. My suggestion is this: packed_git_limit = as->rlim_cur * 0.85; packed_git_window_size = packed_git_limit / 4; or maybe / 2. You really want at least 2 windows available within your limit. > @@ -75,6 +78,13 @@ static void setup_git_env(void) > git_graft_file = getenv(GRAFT_ENVIRONMENT); > if (!git_graft_file) > git_graft_file = git_pathdup("info/grafts"); > + > + if (DYNAMIC_WINDOW_SIZE) { > + struct rlimit *as = malloc(sizeof(struct rlimit)); > + if ( (getrlimit(RLIMIT_AS, as) == 0) && ((int)(as->rlim_cur) > 0) ) > + packed_git_window_size = (unsigned int)(as->rlim_cur * DYNAMIC_WINDOW_SIZE_PERCENTAGE); > + free(as); > + } > } -- Shawn. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html