As the builders tend to be slow from time to time and also the queue might be long if some rather large build batches are submitted, the copr scheduler tends to be not very flexible. We discussed with Miro that it would be very useful if we could plug-in project-dedicated workers, maintained by the project administrators (not by copr maintainers). Also, if we should be able to prioritize some projects (current policy is that we have at-most-N-workers, while M-workers might be allocated for one user - while M < N).
Making this ticket a bit more general. So far we have a set of 7 dynamically allocated builders (all are exactly the same, builders in OS1 private). It would be nice to pick, if possible, less demanding builders (e.g. in OpenShift?), or (as original report says) project dedicated builders. This requires making the builder machine a bit more independent from backend package - bug 1357562 (fixing the bug dependency graph a bit).
First step towards this; PoC for 'copr-builder' approach: https://pagure.io/copr/copr/pull-request/50
FTR: At the time of this comment - OS1 cloud is KO, we moved to different OpenStack + dedicated hardware solution. The 'copr-builder' was reimplemented as 'copr-rpmbuild' in python, and there's a plan to make that package available on EL7, and potentially to EL6 too (so builds for el4 could be possible one day, bug 1299368). Michal/Mirek in for the info. Internal copr now uses 'resalloc-server' package; that's responsible for allocating heterogeneous farm of builders even now (we have two sets of x86_64 builders). In 'resalloc-server', each builder has set of labels, which could e.g. describe what the builder can do ... so it's pretty trivial to add builders with label "x86_64_powerful" for demanding tasks (bug 1586167). The missing part is to implement "tagging" for builds in copr upstream; so we could pair "build tasks" with "builders" appropriately. There goes the issue https://pagure.io/copr/copr/issue/333
Putting this on hold, seems we have enough power currentls. Feel free to reopen if this is needed.