martes, 18 de marzo de 2014

The importance of caching

Having a great bandwidth connection is really useful when you need to retrieve different pieces from the Internet, but having a local mirror can really improve your build times.

As an example, building and deploying a full TripleO stack (seed, undercloud and overcloud vms) without any local mirrors and proxy takes (in my server) about 73 minutes, while using a local pypy mirror, apt mirror and a squid proxy takes only 41 minutes. That is roughly a 40% improvement! (Although a lot of this time is spent in booting and configuring the OpenStack vm's ad services.

In a smaller case, just to build the seed vm (no vm ever booted), the times are the following:

1.- No cache/proxy = 12m 31s
2.- Squid proxy = 10.54
3.- Pypi mirror = 9m 56 s
4.- Pypi mirror + Squid Proxy = 8m 31 s
5.- Pypi mirror + Squid Proxy + Apt mirror = 6m 57s

Obviously, the worst your bandwidth if, the most time you will save!

You can also use the pypi mirror for other tasks, like updating your venv of your project for testing. Let's take for example, ironic . Keeping in mind that the test suite takes ~ 25s, the times are:

- Without pypi mirror # tox -r -epy27 = 7m 58s
- With pypi mirror # tox -r -e epy27 = 7m 08s

So, hurray for local mirrors and proxys!


http://apt-mirror.github.io/
https://github.com/openstack-infra/pypi-mirror
http://www.squid-cache.org/
https://pypi.python.org/pypi/bandersnatch

miércoles, 4 de septiembre de 2013

pxe, e1000 and qemu-kvm 1.6 workaround

With the last update in Debian of qemu-kvm to version 1.6, booting vms via pxe with the e1000 (and ne2k_pci) network cards is no working anymore. I didn't take a deep look of the issue yet, but there is an easy solution (actually 2) for that.

Easiest one:
    wget https://github.com/qemu/qemu/raw/master/pc-bios/pxe-e1000.rom -O /usr/lib/ipxe/e1000_82540.rom 

Another one:
    git clone http://git.ipxe.org/ipxe.git 
    cd ipxe/src 
    make bin/8086100e.rom 
    cp bin/8086100e.rom /usr/lib/ipxe/e1000_82540.rom 

viernes, 25 de enero de 2013

OpenVSwitch and kvm

#virsh edit domain
<interface type='bridge'>
    <mac address='52:54:00:43:1f:f4'/>
    <source bridge='br0'/>
    <virtualport type='openvswitch'>
    </virtualport>
</interface>

OpenVswitch and kvm

#virsh edit domain
<interface type='bridge'>
<mac address='52:54:00:43:1f:f4'/>
<source bridge='br0'/>
<virtualport type='openvswitch'/>
</virtualport>
</interface>

Long live to openvswtich-brcomptt



Now that openvswitch-brcompat is not officially supported with recent kernels (Ubuntu 12.10 with kernel 3.5), the alternative to configure the bridges directly in the interfaces file has change a bit... but is still pretty forward!
Simple case with 1 bridge and 1 attached interface:

allow-ovs br99
iface br99 inet dhcp
    ovs_type OVSBridge
ovs_ports eth0
allow-br99 eth0
iface eth0 inet manual
ovs_bridge br0
ovs_type OVSPort


And to bring it up and down:

ifup --allow=ovs $list_of_bridges
ifdown --allow=ovs $list_of_bridges


Et voilà!

More info at: openvswitch-switch.README.Debian

martes, 22 de enero de 2013

Long live to openvswitch-brcompat

Now that openvswitch-brcompat is not officially supported with recent kernels (Ubuntu 12.10 with kernel 3.5), the alternative to configure the bridges directly in the interfaces file has change a bit... but is still pretty forward!
Simple case with 1 bridge and 1 attached interface:

allow-ovs br99
iface br99 inet dhcp
    ovs_type OVSBridge
    ovs_ports eth0
allow-br99 eth0
iface eth0 inet manual
    ovs_bridge br0
    ovs_type OVSPort

And to bring it up and down:

ifup --allow=ovs $list_of_bridges
ifdown --allow=ovs $list_of_bridges

Et voilà! 

More info at:  openvswitch-switch.README.Debian

viernes, 27 de julio de 2012

Tip: Debugging tests in OpenStack

One easy way to debug tests in openstack using pdb, is to include the sentence:

import pdb; pbd.set_trace()

at the begining of the test is failing, and re-run it with the --nocapture option:

ghe@debian:glance(master)$ ./run_tests.sh -N glance.tests.functional.v1.test_api --nocapture

We test the following: ... > /home/ghe/github/openstack/glance/glance/tests/functional/v1/test_api.py(1170)test_delete_not_existing()
-> self.cleanup()
(Pdb) 


Happy sysadmin day!