19 jun 2014

Volver YUM 50% mas rápido :: Make YUM 50% faster :: YUM Multithread | Hacer que yum use mas de una conexion por servidor

Solo EL6, dado que F19 en adelante y EL7 ya usan descarga en paralelo para yum

El sueño de todos.... no se porque este plugin no prosperó y no esta en los repos oficiales, pero bueno... no importa. Se trata de un plugin en python, gracias a la modularidad de yum, criticada por los debianitas, que permite a yum usar una cantidad determinada de mirrors por server, de conexiones por mirror y de hilos al mismo tiempo al instalar. Funciona en Fedora y EL6
La verdad es que me cruce con este plugin por sugerencia de un amigo, si no estaría bueno que yum usara multi hilo para la instalacion, yo entendi multi hilo en la bajada, en fin, buscando me topé con un plugin de hace 3 años que en CentOS funciona a la perfeccion, usando mi maximo ancho de banda y mi maximo CPU al instalar. Paso a explicar como instalarlo paso a paso:

1.- su -
2.- cd /usr/lib/yum-plugins/
3.- wget https://dl.dropboxusercontent.com/u/85827164/multithread.py
4.- vim /etc/yum.conf -set plugins=1, save and exit (better vim than nano)-
5.- vim /etc/yum/pluginconf.d/multithread.conf and put:

[main]
enabled=1
verbose=1
dl_timeout=300
socket_timeout=10
max_threads=8
threads_per_server=2
servers_per_repo=4

Save and exit, now, yum works with multi thread CPU and connection!!

The test:

synflag]# time yum install --disableplugin=multithread httpd gnome-user-share php -y

Complete!

real    0m46.808s
user    0m10.253s
sys    0m1.158s


synflag]# time yum install httpd gnome-user-share php -y

Complete!

real    0m30.371s
user    0m9.912s
sys    0m1.315s

16 segundos menos no es poca cosa.

NOTA: No funciona para instalaciones locales, el plugin toma TODO como un mirror, si alguien se anima a reparar el mismo, lo subo asi de paso podria incluirse en los repos de EL6 oficiales. Para instalaciones locales, usar yum --disableplugin=multitheread install o usa rpm directamente.

NOTE: Does not work with local .rpm files, because the plugins search a mirror (/home/rpms/ is not a mirror), so, for local rpm installations, use: yum --disableplugin=multitheread install, or use rpm directly :)

Command suggested: Put in /usr/bin/ as yumlocal name the following code and chmod +x /usr/bin/yumlocal for local installations / Comando sugerido: Poner en /usr/bin/ con el nombre yumlocal el siguiente codigo, hacer chmod +x /usr/bin/yumlocal y usarlo para instalaciones locales:

#!/bin/bash
yum "$1" --disableplugin=multithread "$2"


PD: Lo de reparar el fallo y empaquetar para EL6 fue un guiño para Skytux :)

Source: https://github.com/mjschultz/yum-multithread

2 comentarios:

Germán Racca (skytux) dijo...

Te devuelvo el guiño ;) jaja!

SynFlag dijo...

Entonces lo tomo como un si, ya quiero verlo empaquetado para el6 en EPEL