12
MEDICION DEL RENDIMIENTO DE LA INTERFAZ DE RED EN KVM CON/SIN VIRTIO DIEGO CAIZA

Medición Del Rendimiento Con y Sin Virtio Para La Interfaz de Red Final

Embed Size (px)

DESCRIPTION

El propósito de este trabajo de investigación es comprobar a través de la práctica la superioridad que presenta la paravirtualización con virtio en relación a controladores emulados de interface de red como Intel Pro/1000 (e1000) y Realtek 8139 (rtl8139). Los resultados comparativos de las pruebas que se van a establecer, mostraran las ventajas que en teoría presenta la paravirtualización con virtio.

Citation preview

  • MEDICION DEL RENDIMIENTO DE LA INTERFAZ DE RED EN KVM CON/SIN VIRTIO DIEGO CAIZA

  • 1

    INTRODUCCIN

    Virtio es un estndar Linux para drivers de dispositivos de disco y red donde el driver de

    dispositivo en el host invitado entiende que est ejecutndose en un entorno virtualizado y

    coopera con el hospedero. Esto permite que los invitados obtengan alto rendimiento en las

    operaciones de disco y red y otorga la mayora de los beneficios de rendimiento de la

    paravirtualizacin.

    Cuando las mquinas virtuales en KVM utilicen un SO Linux por defecto se instalaran los drivers

    paravirtuales, mientras que al usar Windows requiere la instalacin de un paquete de drivers

    (virtio-win) ya que no se detectara la tarjeta de red, el disco duro y ram, hasta decirle a KVM que

    estos tres dispositivos sern de tipo virtio.

    El propsito de este trabajo de investigacin es comprobar a travs de la prctica la superioridad

    que presenta la paravirtualizacin con virtio en relacin a controladores emulados de interface de

    red como Intel Pro/1000 (e1000) y Realtek 8139 (rtl8139). Los resultados comparativos de las

    pruebas que se van a establecer, mostraran las ventajas que en teora presenta la

    paravirtualizacin con virtio.

    CONTENIDO

    KVM permite ejecutar mquinas virtuales utilizando imgenes de disco que contienen sistemas

    operativos sin modificar. Cada mquina virtual tiene su propio hardware virtualizado: una tarjeta

    de red, discos duros, tarjeta grfica, etc.

    Existen dos tipos de esquemas de virtualizacin diferentes: la virtualizacin y la paravirtualizacin.

    En la full virtualizacin, el sistema operativo husped se ejecuta sobre un hospedero que se apoya

    en el metal base. El host invitado no sabe que est siendo virtualizado y no necesita realizar

    cambios para trabajar en esta configuracin. Por el contrario, en la paravirtualizacin, el sistema

    operativo husped no slo sabe que se est ejecutando en un hospedero, sino que adems

    incorpora cdigo para mejorar la eficiencia de las transiciones del host invitado al hospedero.

    En el esquema de virtualizacin total, el hospedero debe emular el hardware del dispositivo, es

    decir, realizar la emulacin de por ejemplo la interfaz de red. En pocas palabras emulacin es igual

    a lentitud. Mientras en el esquema de paravirtualizacin, el hosts invitado y el hospedero pueden

    cooperar para lograr una emulacin eficiente.

    La full virtualizacin de KVM le asigna una porcin de tiempo de procesador a la mquina virtual,

    esta mquina usa directamente el procesador durante este periodo y luego a travs de

    herramientas incorporadas en el procesador separa la mquina de este y se devuelve el control al

    hospedero. Entre sus obvias ventajas se puede mencionar que no hace falta emular el procesador,

    no hay que usar llamadas al hospedero por parte de los invitados para acceder a dicho procesador

    y adems tienen acceso directo.

  • 2

    Adems KVM utiliza los controladores virtio que son drivers paravirtualizados disponibles para

    mquinas virtuales invitadas. Como ya se mencion el paquete virtio soporta dispositivos de

    almacenamiento y controladores de interfaz de red.

    Escenario prctico

    El escenario propuesto se va a desarrollar sobre un hospedero CentOS-7.0-1406 en donde se va a

    instalar dos mquinas virtuales que realizaran el papel de servidor (Ubuntu 14.04.1) y cliente

    (CentOS-7.0-1406 bsico).

    Figura 1 Mquina virtual con Ubuntu 14.04.1

  • 3

    Figura 2 Mquina virtual con CentOS-7.0-1406 bsico

    Para empezar a realizar las pruebas del rendimiento de la red entre las mquinas virtuales

    instaladas es necesario establecer una secuencia de pasos que servirn para los tres controladores

    que se van a testear e1000, rtl8139 y virtio.

    El primer paso comn es la instalacin de una herramienta llamada Iperf que va a permitir medir

    el ancho de banda y el rendimiento que se alcanzan entre dos hosts conectados en red local, es

    un programa cliente-servidor muy sencillo y fcil de instalar basta con ejecutar unas lneas de

    instrucciones para poder usarlo.

    Para descargar Iperf en Ubuntu se ejecuta la siguiente lnea:

    Figura 3 Instruccin para descargar Iperf sobre Ubuntu

    Y para descargar Iperf desde la maquina CentOS se debe seguir como sugerencia los pasos que se

    indican en la pgina oficial de esta potente herramienta https://iperf.fr/.

  • 4

    Figura 4 Instrucciones para descargar Iperf en CentOS

    Ahora una vez que completada la instalacin de Iperf en ambas mquinas virtuales es necesario

    especificar el tipo de interfaz de red en la mquina virtual KVM que va a desempear la funcin de

    servidor, en este caso el host con Ubuntu. Para establecer el controlador de red se requiere

    trabajar sobre el hospedero por lo que se debe apagar la maquina con Ubuntu y editar su archivo

    de configuracin de la siguiente manera:

    Figura 5 Edicin de la interfaz de red de la mquina virtual desde el hospedero

    Se localiza la parte interface type=network y en el model type se debe indicar el tipo de

    interfaz que se va a utilizar.

    Figura 6 Seleccin del tipo de interfaz de red sobre la mquina virtual (servidor)

    Una vez especificado el tipo de interfaz a testear se requiere reiniciar el host Ubuntu y configurar

    en modo servidor de Iperf de manera que le permita estar pendiente de las conexiones entrantes,

    este procedimiento se lo realiza compilando la siguiente lnea de instruccin:

    Figura 7 Iperf en modo servidor

  • 5

    Los parmetros anteriores indican:

    o s : modo servidor

    o f G: formato en que se van a expresar las unidades en este caso Gigabytes/segundo

    Estos son los pasos preliminares para poder testear la red lo nico que resta es configurar al host

    CentOS en modo cliente de Iperf para que se conecte al servidor y se enven una serie de paquetes

    para calcular el ancho de banda promedio en cada conexin.

    Pruebas

    Controlador de interfaz de red e1000

    Desde este punto se debe especificar que se va a utilizar en el host Ubuntu el controlador e1000.

    Figura 8 Seleccin del tipo de interfaz de red para la primera prueba

    Para verificar que se realiz el cambio correctamente el cambio del driver se va a utilizar ethtool

    es un comando que permite mostrar la configuracin de la interfaz de red, se lo realiza de la

    siguiente forma:

    Figura 9 Configuracin de la interfaz de red con e1000

    Ahora desde la mquina virtual con CentOS mediante Iperf c 192.168.122.9 f G se conecta

    remotamente con el servidor. Luego del anlisis la herramienta genera un resumen similar al que

    se puede observar justo despus de este prrafo. En este resumen se puede visualizar el tiempo

    transcurrido (Interval) del anlisis (por defecto 10 segundos), la cantidad de GB transferidos

    durante ese tiempo (Transfer) y el mximo ancho de banda alcanzado durante el anlisis

    (Bandwidth), en este caso representada en la unidad Gbytes/sec. Para cada controlador se va a

    realizar tres test de conexin para obtener un resultado promedio.

  • 6

    Figura 10 Resultado de las pruebas realizadas al controlador e1000

    En el servidor Ubuntu tambin se puede observar las tres conexiones que se realizaron desde el

    cliente CentOS.

    Figura 11 Resultados de las pruebas con e1000 visto desde el servidor Ubuntu

    El ancho de banda promedio utilizando el driver e1000 es 0.37 Gbytes/sec

  • 7

    Controlador de interfaz de red rtl8139

    Para la segunda prueba se debe cambiar la interfaz a rtl8139 y se verifica con el comando ethtool.

    Figura 12 Configuracin de la interfaz de red con rtl8139

    Desde la maquina con CentOS se conecta remotamente al servidor Ubuntu para obtener el

    resumen con resultados de calidad de conexin.

    Figura 13 Resultado de las pruebas realizadas al controlador rtl8139

    En el servidor Ubuntu tambin se puede observar las tres conexiones que se realizaron desde el

    cliente CentOS.

  • 8

    Figura 14 Resultados de las pruebas con rtl8139 visto desde el servidor Ubuntu

    El ancho de banda promedio utilizando el driver rtl8139 es 0.18 Gbytes/sec

  • 9

    Controlador de interfaz de red virtio

    Para la tercera prueba se debe cambiar la interfaz a virtio y se verifica con el comando ethtool.

    Figura 15 Configuracin de la interfaz de red con virtio

    Desde la maquina con CentOS se conecta remotamente al servidor Ubuntu para obtener el

    resumen con resultados de calidad de conexin.

    Figura 16 Resultado de las pruebas realizadas al controlador virtio

    En el servidor Ubuntu tambin se puede observar las tres conexiones que se realizaron desde el

    cliente CentOS.

  • 10

    Figura 17 Resultados de las pruebas con virtio visto desde el servidor Ubuntu

    El ancho de banda promedio utilizando el driver virtio es 2.23 Gbytes/sec

    En el siguiente cuadro se puede observar los resultados finales de la prueba realizada.

    Figura 18 Resultados Finales

    CONCLUSIONES

    Al inicio de la investigacin se plante probar y comprobar las ventajas tericas de virtio,

    una vez concluidas las pruebas con cada uno de los controladores propuestos se lleg a la

    conclusin que Virtio es sin lugar a duda la mejor solucin para conectividad de red en

    ambientes virtualizados, ya que supera ampliamente en su rendimiento a los dispositivos

    emulados e1000 en 6 veces y a rtl8139 en 12 veces segn los resultados finales.

    En la paravirtualizacin el invitado est programado para ejecutar llamadas pre-

    establecidas al hospedero para realizar ciertas labores hacia los dispositivos. Por ejemplo,

    no accede directamente a la interfaz de red, sino que invoca a llamadas preestablecidas

    en el hospedero y este efecta la comunicacin de red. Lo mismo sucede con el disco, la

    memoria ram, etc. Entonces no hay que emular hardware simplemente llamadas, y el

    0,00

    0,50

    1,00

    1,50

    2,00

    2,50

    e1000 rtl8139 virtio

    Ancho de Banda(GigaBytes/sec)

    0,37 0,18 2,23

    Pe

    rfo

    rman

    ce d

    e la

    inte

    rfaz

    de

    re

    d e

    n

    KV

    M

    Ancho de Banda (GigaBytes/sec)

  • 11

    hospedero a travs de su sistema operativo y drivers especficos, realiza la labor de

    comunicacin con la red, disco, etc. Es tan rpido como acceder desde el hospedero

    mismo, razn por la cual virtio es ms eficiente y aplasta rotundamente a los drivers

    emulados.

    Virtio es un driver que fue concebido con soporte para virtualizacin desde sus inicios,

    esto proporciona la mayor integracin entre el hardware fsico, software de virtualizacin

    y mquinas virtuales. Este adaptador de red virtual permite a la host invitado obtener la

    mayor velocidad y rendimiento de red asindolo la mejor eleccin en el momento de la

    virtualizacin.

    Virtio adems fue elegida para ser la principal plataforma de virtualizacin de E/S en KVM,

    la idea detrs de esto es tener un framework comn para virtualizacin de dispositivos de

    E/S en el hospedero.

    Virtio abre nuevas oportunidades de eficiencia en entornos de E/S paravirtualizada y se

    basa en trabajos anteriores realizados en Xen. Linux sigue demostrando ser un hospedero

    de produccin y una plataforma de investigacin para nuevas tecnologas de

    virtualizacin, virtio es un ejemplo ms de las fortalezas que posee Linux y de cun abierto

    es.

    REFERENCIAS

    http://www.ibm.com/developerworks/ssa/linux/library/l-virtio/

    http://lists.centos.org/pipermail/centos-es/2014-January/013622.html

    http://www.linuxito.com/gnu-linux-2/nivel-alto/137-kvm-rendimiento-de-red-en-

    maquinas-virtuales-gnu-linux?hitcount=0&jVoteSystemPage=2

    http://wiki.libvirt.org/page/Virtio

    http://www.linux-kvm.org/page/Virtio

    http://www.gonzalonazareno.org/cloud/material/KVM.pdf