資料介紹
軟件簡介
P4 Fusion 是一個(gè)使用 Perforce Helix Core C++ API 和 Libgit2 用 C++ 編寫的快速 Perforce 到 Git 的轉(zhuǎn)換工具,試圖緩解git-p4.py的性能瓶頸。
這個(gè)項(xiàng)目是作為一個(gè)內(nèi)部項(xiàng)目的概念驗(yàn)證開始的,它需要將P4倉庫轉(zhuǎn)換為Git倉庫。Git內(nèi)部也有一個(gè)類似的解決方案,叫做git-p4.py。然而,它在處理任何超過1GB大小的倉庫時(shí)有性能問題,而且它使用Python2在單線程中運(yùn)行,這給git-p4.py在更大的使用場景中的使用增加了一系列限制。
該工具通過以下方式解決了 git-p4.py 中一些最有影響的擴(kuò)展和性能限制:
- 使用Helix Core C++ API來處理下載 CL,從而更好地控制內(nèi)存以及如何將其提交到 Git 存儲(chǔ)庫,而無需進(jìn)行不必要的內(nèi)存復(fù)制和文件 I/O。
- 使用libgit2將從 Perforce 服務(wù)器接收到的文件內(nèi)容按原樣轉(zhuǎn)發(fā)到 Git 存儲(chǔ)庫,同時(shí)盡可能避免內(nèi)存復(fù)制。該庫允許從內(nèi)存中簡單存在的文件內(nèi)容創(chuàng)建提交。
- 使用在 C++11 中實(shí)現(xiàn)的自定義基于喚醒的線程池,該線程池運(yùn)行 Helix Core C++ API 的線程本地庫上下文,以對(duì)變更列表下載過程進(jìn)行大量多線程處理。
值得注意的是,P4 Fusion?的速度快到足以在你的Perforce服務(wù)器上瞬間產(chǎn)生巨大的負(fù)載(如果以中等數(shù)量的線程運(yùn)行,在幾分鐘內(nèi)超過15萬個(gè)請(qǐng)求)。因此,它需要仔細(xì)監(jiān)測以確保Perforce服務(wù)器不受影響。這個(gè)工具將繼續(xù)產(chǎn)生負(fù)載,沒有任何速率限制(除了這個(gè)工具提供的運(yùn)行時(shí)選項(xiàng)外),直到轉(zhuǎn)換過程完成。然而,沒有速率限制,用幾百個(gè)網(wǎng)絡(luò)線程(如果可能的話,甚至更多)來運(yùn)行這個(gè)工具,是在轉(zhuǎn)換過程中實(shí)現(xiàn)最大速度的理想情況。
網(wǎng)絡(luò)線程的數(shù)量應(yīng)設(shè)置為一般多于邏輯CPU的數(shù)量,因?yàn)樽詈臅r(shí)的步驟是下載CL數(shù)據(jù),這主要是網(wǎng)絡(luò)I/O的限制。
官方研究表明,這個(gè)工具的運(yùn)行速度比 git-p4.py 快 100 倍以上。在一個(gè)包含約3393個(gè)中等規(guī)模變更列表的倉庫路徑內(nèi),使用 200 個(gè)并行連接進(jìn)行歷史轉(zhuǎn)換的平均時(shí)間為 26 秒,而 git-p4.py 轉(zhuǎn)換同一倉庫路徑需要接近 42 分鐘。如果Perforce服務(wù)器有完整的文件緩存,那么這些轉(zhuǎn)換時(shí)間可能是可重復(fù)的,否則如果文件緩存是空的,那么前幾次運(yùn)行預(yù)計(jì)會(huì)花費(fèi)更多時(shí)間。
對(duì)于更大的倉庫(數(shù)百萬個(gè) CL 或更多),這些執(zhí)行時(shí)間預(yù)計(jì)會(huì)按預(yù)期擴(kuò)展。該工具提供了在轉(zhuǎn)換過程中控制內(nèi)存利用率的選項(xiàng),因此這些選項(xiàng)將有助于更大的用例。
? ./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工具簡化數(shù)據(jù)包處理設(shè)計(jì)
- ASCII碼轉(zhuǎn)換工具下載 6次下載
- 音頻格式轉(zhuǎn)換工具
- 視頻格式轉(zhuǎn)換工具
- xgus轉(zhuǎn)換工具
- 梯形圖程序轉(zhuǎn)換工具的操作方法及注意事項(xiàng) 6次下載
- STC單片機(jī)擴(kuò)展P4口應(yīng)用的介紹 13次下載
- protel-pads轉(zhuǎn)換工具 0次下載
- 進(jìn)制轉(zhuǎn)換工具 3次下載
- IPTV版遙控轉(zhuǎn)換工具 0次下載
- pcb單位轉(zhuǎn)換工具下載 47次下載
- PCB圖片轉(zhuǎn)換工具 32次下載
- PROTEL到PADS原理圖,PCB轉(zhuǎn)換工具
- TKStudio 文件捆綁轉(zhuǎn)換工具
- 高質(zhì)量PDF轉(zhuǎn)換工具 0次下載
- P4在SDN中的重要性 523次閱讀
- git命令的基本使用 938次閱讀
- 一文搞懂版本控制與Git 467次閱讀
- 對(duì)象轉(zhuǎn)換工具:MapStruct 庫 1102次閱讀
- Git版本管理工具的使用方法 714次閱讀
- git rebase和git merge的區(qū)別 663次閱讀
- git rebase與相關(guān)git merge命令比較 911次閱讀
- Python漢字拼音轉(zhuǎn)換工具 822次閱讀
- Git的分支管理 1060次閱讀
- 如何設(shè)置Git的SSH秘鑰 1911次閱讀
- 利用Learn Git Branching輕松學(xué)習(xí)Git 1611次閱讀
- git作為代碼工具的實(shí)用小技巧 2180次閱讀
- 如何才能擴(kuò)展STC89系列單片機(jī)P4口的應(yīng)用 4310次閱讀
- 能完整描述openflow功能的P4 2886次閱讀
- 美國邦納推出視覺傳感器P4 GEO1.3,擁有高達(dá)130萬的像素 1352次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論