Distributed poudriere

Grzegorz Junka list1 at gjunka.com
Sat Dec 1 17:43:39 UTC 2018


On 30/11/2018 19:31, Pete Wright wrote:
> On 11/30/18 9:08 AM, Grzegorz Junka wrote:
>> On 29/11/2018 19:12, Grzegorz Junka wrote:
>>> Hello,
>>>
>>> Is it possible to run poudriere in an agent/server setup? Where one 
>>> central server maintains a distfiles folder for already compiled 
>>> packages and agents compile packages fetching and installing from 
>>> the central server dependencies?
>>>
>> Just to make it more clear, I am asking about the build process. 
>> Poudriere starts the specified amount of jails to build packages in 
>> parallel. In each jail it then install dependencies by fetching them 
>> from the distfiles folder. After the build is done a new package is 
>> created and uploaded to the distfiles folder to be used by builds 
>> that require it.
>>
>> This process is CPU-core-bound, i.e. with 32/64 threads cores it 
>> can't really build more than 64 packages in parallel. And systems 
>> with so many cores are really expensive. But the whole process is 
>> inherently distributed (as long as the amount of packages is big 
>> enough so that they can be build in parallel).
>>
>> Being able to build on multiple cheaper systems with less CPU cores 
>> per system over the network seems like a good idea, no?
>>
>
> haven't fully thought this idea through, but couldn't you achieve this 
> by mounting the Poudriere 'data' directories as an NFS mountpoint?  
> This way each jail would view currently available package metadata and 
> hopefully avoid doing duplicate work?
>
> I'm sure there will be racing condition edge cases though which will 
> bite you since I don't think there is a build job dispatcher/scheduler 
> available in Poudriere.  So for example you may find yourself in a 
> situation where multiple jails try building LLVM as it's first package 
> which wouldn't really be helpful.
>
I believe poudriere plans what needs to be build before it starts the 
build in order to detect circular dependencies. I don't think a shared 
NFS mountpoint would be of any use. There ought to be a single scheduler 
which deletes the outdated packages and plans what needs to be build, 
but then instead distributing the build across jails on the same system, 
it would have to be able to distribute the workload across multiple systems.

Thanks for confirming it's not available yet. Would be a nice and useful 
addition. I should start learning poudriere code perhaps to see if this 
is something I could do.

Regards

GrzegorzJ



More information about the freebsd-ports mailing list