[Starlingx-discuss] Slow repo sync times and the yocto kernel
Scott Little
scott.little at windriver.com
Tue Jun 29 18:59:11 UTC 2021
Concerns have been raised with the security implications of the git
protocol. We really should return to https if at all possible.
Options:
1) Use no-clone-bundle, as in
repo sync -j20 --no-clone-bundle
However this hurts performance and transfers a significant load onto the
git servers.
Slightly better would be ...
repo sync -j20 || repo sync -j20 --no-clone-bundle
Where the first commands is efficient, but fails on yocto, followed by
the second that handles yocto.
2) Return to downloading the full history of linux-yocto. It eats an
hour on the initial clone, but after that it's not too bad.
3) Set up a mirror of linux-yocto on a more powerful hosting site. git
hub?
4) Switch to tarball snapshots of linux-yocto.
Scott
On 2021-06-28 10:54 a.m., Scott Little wrote:
> I have posted a better fix for review ...
>
> https://review.opendev.org/c/starlingx/manifest/+/798340
>
> Scott
>
>
> On 2021-06-28 10:51 a.m., Scott Little wrote:
>> The manifest change to implement option 2 has been merged. However a
>> lot of folks are now having 'repo sync' issues with linux-yocto.
>> Strangely it doesn't hit the first repo sync, but all subsequent repo
>> sync's are affected.
>>
>> If you are seeing an error from repo sync, please use this work
>> around ...
>>
>> repo init ...
>> rm -rf .repo/project-objects/linux-yocto.git*
>> .repo/projects/cgcs-root/stx/git/linux-yocto-*
>> repo sync ...
>>
>> I've reported the bug upsteam...
>> https://bugs.chromium.org/p/gerrit/issues/detail?id=14700&q=tyranscooter&can=2
>> ... if you have a gmail account and are willing to do so, add a star
>> to increase visibility of this strange error.
>>
>> I'll also be looking for a better fix on our end.
>>
>> Scott
>>
>>
>>
>> On 2021-06-21 4:10 p.m., Scott Little wrote:
>>> Hi all
>>>
>>> The yocto kernel git was added to the StarlingX manifests late last
>>> week. Since then I've heard a lot of grumbling about slow 'repo
>>> sync' times. It affects folks setting up a new distro or monolithic
>>> workspace for the first time. The repo-sync time can exceed an hour
>>> as the entire history of the linux kernel is downloaded. You will
>>> also notice an additional 5.5 GB of storage consumed to hold all
>>> this history. Subsequent repo sync's should be fast.
>>>
>>> So the question is... what if anything do we do about it?
>>>
>>> Our options...
>>>
>>> 1) Leave it as is.
>>>
>>> Hope that folks are mostly working in the 'flock' or 'container'
>>> layers, and NOT using monolithic builds, and so the number of folk
>>> impacted is low. Folk working at the distro layer or using
>>> monolithic can work on something else, or go to lunch, while they
>>> wait for the initial repo sync to complete.
>>>
>>>
>>> 2) Try to minimize the amount of kernel history we download through
>>> a manifest change. Limiting the git history depth does the trick ...
>>>
>>> <!-- linux-yocto Upstream -->
>>> <project remote="linux-yocto" sync-c="true" sync-tags="false"
>>> clone-depth="100" upstream="v5.10/standard/intel-x86"
>>> revision="refs/tags/v5.10.30" name="linux-yocto"
>>> path="cgcs-root/stx/git/linux-yocto-std"/>
>>> <project remote="linux-yocto" sync-c="true" sync-tags="false"
>>> clone-depth="100" upstream="v5.10/standard/preempt-rt/intel-x86"
>>> revision="2112f10d3d0b558c9ece3ab562c41b7f6d89cff4"
>>> name="linux-yocto.git" path="cgcs-root/stx/git/linux-yocto-rt"/>
>>>
>>> The good ...
>>>
>>> - repo sync time drops from ~1 hr to ~5 min
>>>
>>> - storage drops from ~5.5 GB to ~ 5GB
>>>
>>> The bad ...
>>>
>>> - This is fragile. It assumes that the desired rt sha can be
>>> reached from 100 commits from head of branch. However, the
>>> connection to the upstream git server drops if we ask for much more
>>> than that. e.g. depth=500 is a guaranteed fail. So upstream adds a
>>> few patches and we might start failing our repo-sync.
>>>
>>> - The history is incomplete, this may hinder kernel developers. A
>>> 'git fetch linux-yocto' should pull in the rest of the history, so
>>> probably not a blocker.
>>>
>>>
>>> 3) We could double the number of manifests at each layer. One would
>>> only pull in the minimal kernel history, and other the full history.
>>>
>>>
>>> 4) Create a mirror an a larger git server, like github, and hope
>>> that significantly improves the download speed.
>>>
>>>
>>> 5) Download a tarball of the yocto kernel, rather than pulling in
>>> it's git tree. Yocto's git server doesn't seem to be set up to
>>> serve custom tarballs based on a requested sha. We would have to
>>> set it all up manually, and it's not remotely convenient to kernel
>>> developers.
>>>
>>>
>>> Of these options, I'm leaning toward option 2, but look forward to
>>> hearing from the community.
>>>
>>>
>>> Scott
>>>
>>>
>>> _______________________________________________
>>> Starlingx-discuss mailing list
>>> Starlingx-discuss at lists.starlingx.io
>>> http://lists.starlingx.io/cgi-bin/mailman/listinfo/starlingx-discuss
>>
>>
>>
>> _______________________________________________
>> Starlingx-discuss mailing list
>> Starlingx-discuss at lists.starlingx.io
>> http://lists.starlingx.io/cgi-bin/mailman/listinfo/starlingx-discuss
>
>
>
> _______________________________________________
> Starlingx-discuss mailing list
> Starlingx-discuss at lists.starlingx.io
> http://lists.starlingx.io/cgi-bin/mailman/listinfo/starlingx-discuss
More information about the Starlingx-discuss
mailing list