資料介紹
軟件簡介
P4 Fusion 是一個使用 Perforce Helix Core C++ API 和 Libgit2 用 C++ 編寫的快速 Perforce 到 Git 的轉換工具,試圖緩解git-p4.py的性能瓶頸。
這個項目是作為一個內部項目的概念驗證開始的,它需要將P4倉庫轉換為Git倉庫。Git內部也有一個類似的解決方案,叫做git-p4.py。然而,它在處理任何超過1GB大小的倉庫時有性能問題,而且它使用Python2在單線程中運行,這給git-p4.py在更大的使用場景中的使用增加了一系列限制。
該工具通過以下方式解決了 git-p4.py 中一些最有影響的擴展和性能限制:
- 使用Helix Core C++ API來處理下載 CL,從而更好地控制內存以及如何將其提交到 Git 存儲庫,而無需進行不必要的內存復制和文件 I/O。
- 使用libgit2將從 Perforce 服務器接收到的文件內容按原樣轉發到 Git 存儲庫,同時盡可能避免內存復制。該庫允許從內存中簡單存在的文件內容創建提交。
- 使用在 C++11 中實現的自定義基于喚醒的線程池,該線程池運行 Helix Core C++ API 的線程本地庫上下文,以對變更列表下載過程進行大量多線程處理。
值得注意的是,P4 Fusion?的速度快到足以在你的Perforce服務器上瞬間產生巨大的負載(如果以中等數量的線程運行,在幾分鐘內超過15萬個請求)。因此,它需要仔細監測以確保Perforce服務器不受影響。這個工具將繼續產生負載,沒有任何速率限制(除了這個工具提供的運行時選項外),直到轉換過程完成。然而,沒有速率限制,用幾百個網絡線程(如果可能的話,甚至更多)來運行這個工具,是在轉換過程中實現最大速度的理想情況。
網絡線程的數量應設置為一般多于邏輯CPU的數量,因為最耗時的步驟是下載CL數據,這主要是網絡I/O的限制。
官方研究表明,這個工具的運行速度比 git-p4.py 快 100 倍以上。在一個包含約3393個中等規模變更列表的倉庫路徑內,使用 200 個并行連接進行歷史轉換的平均時間為 26 秒,而 git-p4.py 轉換同一倉庫路徑需要接近 42 分鐘。如果Perforce服務器有完整的文件緩存,那么這些轉換時間可能是可重復的,否則如果文件緩存是空的,那么前幾次運行預計會花費更多時間。
對于更大的倉庫(數百萬個 CL 或更多),這些執行時間預計會按預期擴展。該工具提供了在轉換過程中控制內存利用率的選項,因此這些選項將有助于更大的用例。
? ./build/p4-fusion/p4-fusion
[ PRINT @ Main:24 ] Running p4-fusion from: ./build/p4-fusion/p4-fusion
[ PRINT @ Main:43 ] Usage:
[Required] --port
Specify which P4PORT to use.
[Required] --path
P4 depot path to convert to a Git repo
[Required] --lookAhead
How many CLs in the future, at most, shall we keep downloaded by the time it is to commit them?
[Required] --src
Local relative source path with P4 code. Git repo will be created at this path. This path should be empty before running p4-fusion.
[Required] --client
Name/path of the client workspace specification.
[Required] --user
Specify which P4USER to use. Please ensure that the user is logged in.
[Optional, Default is false] --includeBinaries
Do not discard binary files while downloading changelists.
[Optional, Default is false] --fsyncEnable
Enable fsync() while writing objects to disk to ensure they get written to permanent storage immediately instead of being cached. This is to mitigate data loss in events of hardware failure.
[Optional, Default is 10] --retries
Specify how many times a command should be retried before the process exits in a failure.
[Optional, Default is 16] --networkThreads
Specify the number of threads in the threadpool for running network calls. Defaults to the number of logical CPUs.
[Optional, Default is -1] --maxChanges
Specify the max number of changelists which should be processed in a single run. -1 signifies unlimited range.
[Optional, Default is 1] --printBatch
Specify the p4 print batch size.
[Optional, Default is 100] --refresh
Specify how many times a connection should be reused before it is refreshed.
- 使用P4和Vivado工具簡化數據包處理設計
- ASCII碼轉換工具下載 6次下載
- 音頻格式轉換工具
- 視頻格式轉換工具
- xgus轉換工具
- 梯形圖程序轉換工具的操作方法及注意事項 6次下載
- STC單片機擴展P4口應用的介紹 13次下載
- protel-pads轉換工具 0次下載
- 進制轉換工具 3次下載
- IPTV版遙控轉換工具 0次下載
- pcb單位轉換工具下載 47次下載
- PCB圖片轉換工具 32次下載
- PROTEL到PADS原理圖,PCB轉換工具
- TKStudio 文件捆綁轉換工具
- 高質量PDF轉換工具 0次下載
- 什么是CVE?如何通過SAST/靜態分析工具Perforce QAC 和 Klocwork應對CVE? 359次閱讀
- 汽車軟件團隊必看:基于靜態代碼分析工具Perforce QAC的ISO 26262合規實踐 989次閱讀
- 【版本控制教程】如何使用Unreal Engine 5 + UE源代碼控制(Perforce P4) 1.3k次閱讀
- 主流版本控制工具Git vs Perforce P4:架構模式、性能、大文件管理及分支管理對比詳解 659次閱讀
- 直觀易用的版本控制客戶端:Perforce P4 One簡介及常見問題解答 859次閱讀
- P4在SDN中的重要性 2.1k次閱讀
- 對象轉換工具:MapStruct 庫 1.8k次閱讀
- git rebase與相關git merge命令比較 2k次閱讀
- Python漢字拼音轉換工具 1.6k次閱讀
- Git的分支管理 1.8k次閱讀
- 利用Learn Git Branching輕松學習Git 2.3k次閱讀
- git作為代碼工具的實用小技巧 2.7k次閱讀
- 如何才能擴展STC89系列單片機P4口的應用 5.1k次閱讀
- 能完整描述openflow功能的P4 3.3k次閱讀
- 美國邦納推出視覺傳感器P4 GEO1.3,擁有高達130萬的像素 1.6k次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
電子發燒友App





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論