[libvirt] [jenkins-ci PATCH 0/1] jenkins: Start building on Ubuntu
Daniel P. Berrangé
berrange at redhat.com
Tue Dec 10 14:54:36 UTC 2019
On Tue, Dec 10, 2019 at 02:54:22PM +0100, Andrea Bolognani wrote:
> This patch is intended to start a slightly larger discussion about
> our plans for the CentOS CI environment going forward.
>
> At the moment, we have active builders for
>
> CentOS 7
> Debian 9
> Debian 10
> Fedora 30
> Fedora 31
> Fedora Rawhide
> FreeBSD 11
> FreeBSD 12
>
> but we don't have builder for
>
> Debian sid
> FreeBSD -CURRENT
> Ubuntu 16.04
> Ubuntu 18.04
>
> despite them being fully supported in the libvirt-jenkins-ci
> repository.
>
> This makes sense for sid and -CURRENT, since the former covers the
> same "freshest Linux packages" angle that Rawhide already takes care
> of and the latter is often broken and not trivial to keep updated;
> both Ubuntu targets, however, should IMHO be part of the CentOS CI
> environment. Hence this series :)
>
> Moreover, we're in the process of adding
>
> CentOS 8
> openSUSE Leap 15.1
> openSUSE Tumbleweed
>
> as targets, of which the first two should also IMHO be added as they
> would provide useful additional coverage.
>
> The only reason why I'm even questioning whether this should be done
> is capacity for the hypervisor host: the machine we're running all
> builders on has
>
> CPUs: 8
> Memory: 32 GiB
> Storage: 450 GiB
>
> and each of the guests is configured to use
>
> CPUs: 2
> Memory: 2 GiB
> Storage: 20 GiB
>
> So while we're good, and actually have plenty of room to grow, on
> the memory and storage front, we're already overcommitting our CPUs
> pretty significantly, which I guess is at least part of the reason
> why builds take so long.
NB the memory that's free is not really free - it is being usefull
as I/O cache for the VM disks. So more VMs will reduce I/O cache.
Whether that will actually impact us I don't know though.
More importantly though, AFAICT, those are not 8 real CPUs.
virsh nodeinfo reports 8 cores, but virsh capabilities
reports it as a 1 socket, 4 core, 2 thread CPU.
IOW we haven't really got 8 CPUs, more like equivalent of 5 CPUs.
as HT only really gives a x1.3 boost in best case, and I suspect
builds are not likely to be hitting the best case.
> Can we afford to add 50% more load on the machine without making it
> unusable? I don't know. But I think it would be worthwhile to at
> least try and see how it handles an additional 25%, which is exactly
> what this series does.
Giving it a try is ok I guess.
I expect there's probably more we can do to optimize the setup
too.
For example, what actual features of qcow2 are we using ? We're
not snapshotting VMs, we don't need grow-on-demand allocation.
AFACT we're paying the performance cost of qcow2 (l1/l2 table
lookups & metadata caching), for no reason. Switch the VMs to
fully pre-allocated raw files may improve I/O performance.
Raw LVM VGs would be even better but that will be painful
to setup given the host install setup.
I also wonder if we have the optimal aio setting for disks,
as there's nothing in the XML.
We could consider using cache=unsafe for VMs, though for
that I think we'd want to separate off a separate disk
for /home/jenkins so that if there was a host OS crash,
we wouldn't have to rebuild the entire VMs - just throw
away the data disk & recreate.
Since we've got plenty of RAM, another obvious thing would be
to turn on huge pages and use them for all guest RAM. This may
well have a very significant performance boost from reducing
CPU overhead which is our biggest bottleneck.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list