我在共享主機上託管一個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