我在共享主机上托管一个git repo。我的回购未必有几个它非常大的文件,每次我尝试现在运行在回购“混帐气相色谱法”的时候,我被任务共享托管服务提供商使用了太多的内存杀害。有没有办法限制git gc可以消耗的内存量?我的希望是,它可以交换内存使用的速度,只需要更长的时间来完成工作。有没有办法限制“git gc”使用的内存量?
回答
是的,看看在帮助页面git config
,并期待在pack.*
选项,具体pack.depth
,pack.window
,pack.windowMemory
和pack.deltaCacheSize
。
为git的需要映射每个对象到内存中,因此一个非常大的对象会导致大量的内存使用,而不考虑窗口和三角洲缓存设置这不是一个完全精确的尺寸。
你可能有更好的运气打包本地和“手动”传输包文件到远程端,添加一个.keep
文件,以便远程git永远不会尝试彻底重新包装一切。
你可以使用关闭三角洲属性禁用增量压缩那些路径名的只是斑点:
在foo/.git/info/attributes
(或foo.git/info/attributes
如果它是一个纯仓库)(见gitattributes三角洲条目,以gitignore对于模式语法):
/large_file_dir/* -delta
*.psd -delta
/data/*.iso -delta
/some/big/file -delta
another/file/that/is/large -delta
这不会影响存储库的克隆。影响其它储存库(即克隆),放属性中一个.gitattributes
文件,而不是(或者除了)info/attributes
文件。
这是迄今为止关于大型文件最有用的答案。谢谢。我有一些PSD的回购,并且它曾经需要千兆字节的内存来做一个git gc,现在它需要100MB的内存。凉。 – 2016-10-29 14:14:49
我从这次link指令。建议与Charles Baileys一样的想法。
命令的副本是在这里:
git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m"
git config --global pack.threads "1"
这与共享的托管帐户为我工作的HostGator的。
Git的重新包装的内存使用量是:(pack.deltaCacheSize + pack.windowMemory) × pack.threads
。相应的默认值是256MiB,无限制,nproc。
增量缓存没有用:大部分时间花费在滑动窗口上计算增量,其中大部分都被丢弃;缓存幸存者以便它们可以重复使用一次(写入时)不会改进运行时。该缓存也不在线程之间共享。
默认情况下,窗口存储器通过pack.window
(gc.aggressiveWindow
)的限制。限制包装的方式是一个坏主意,因为工作集的大小和效率会有很大差异。最好将两者都提高到更高的值,并依靠pack.windowMemory
来限制窗口大小。
最后,线程有分裂工作集的缺点。降低pack.threads
并增加pack.windowMemory
,这样总数保持不变应该会延长运行时间。
重新包装有其他有用的可调参数(pack.depth
,pack.compression
,位图选项),但它们不影响内存使用。
似乎并不完全真相?你有一个主意:http://stackoverflow.com/questions/42175296/git-gc-uses-a-lot-of-memory-even-i-limited-it – Alex 2017-02-11 14:01:04
- 1. 有没有办法控制Chrome GC?
- 2. 有没有办法限制Dart Editor使用的RAM数量?
- 3. 有没有办法将Git限制在稀疏结账?
- 4. git merge:有没有办法强制--squash?
- 5. 有没有办法查看变量使用多少内存?
- 6. 有没有办法限制NSNotification?
- 7. 有没有办法让Calendar Extender限制?
- 8. 有没有办法限制运行的R进程的数量
- 9. 有没有办法增加API的V4的度量限制?
- 10. 有没有办法*真的*强制pydev使用强制内建?
- 11. 有没有办法限制MapReduce程序的节点数量?
- 12. 有没有办法限制Hibernate envers的审计日志数量?
- 13. Cassandra - 有没有办法限制异步查询的数量?
- 14. 有没有办法限制进程的输出文件数量?
- 15. Webkit被允许使用的内存数量没有限制吗?
- 16. 有没有办法减少小批量kmeans的内存使用量?
- 17. 有没有办法限制运行bash命令的时间和内存资源?
- 18. 有没有办法限制ASP.NET 3.5进程的最大内存大小?
- 19. 有没有办法限制启动时进程消耗的内存
- 20. 有没有办法限制对本地git仓库用户的推送访问?
- 21. ASP.MVC权限:有没有办法控制部分内容?
- 22. 有没有办法控制MySQL.MyISAM中每个用户的内存使用情况?
- 23. 在巨大的“回购克隆”期间,有没有办法限制git bandwith?
- 24. 有没有办法只限制mysql中的下限?
- 25. 有没有办法控制python进程的内存使用情况?
- 26. 限制内存使用量?
- 27. 有没有办法知道会话使用多少内存?
- 28. 有没有办法限制UIDocumentInteractionController中显示的应用程序?
- 29. 有没有办法用Laravel的ELOQUENT ORM“限制”结果?
- 30. 有没有办法强制JavaFX发布视频内存?
postimum相关:http://stackoverflow.com/a/10293304/274502 – cregox 2012-08-29 21:00:59
是的,有一个类似的问题在Dreamhost(这个问题被标记)。没有那么多的情况下,当'git'死亡,但'darcs'(另一个VCS)总是被杀死,所以它在http://Dreamhost.com上无法使用。 – 2015-02-25 20:26:40