Aumentando el rendimiento en Net::SSH::Perl

Trasteando con Debian y Net::SSH::Perl se observa que el rendimiento a la hora de conectarse a las máquina en bajísimo, muy muy lento.

Vamos a buscar la solución…

Primero analizamos el script de Perl con una librería de Profiler, en este caso, usamos esta que está en pruebas DProfLB

ejecutamos:

[shell]perl -d:DProfLB test_ssh.pl

# dprofpp
Total Elapsed Time = 31.78279 Seconds
User+System Time = 30.61279 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
62.8 19.25 19.317 3779 0.0051 0.0051 Math::BigInt::Calc::_div_use_div
35.2 10.79 10.861 3721 0.0029 0.0029 Math::BigInt::Calc::_mul_use_div
0.43 0.133 0.133 10678 0.0000 0.0000 Math::BigInt::Calc::__strip_zeros
0.19 0.058 19.366 3688 0.0000 0.0053 Math::BigInt::Calc::_mod
0.13 0.040 0.040 7973 0.0000 0.0000 Math::Pari::DESTROY
0.11 0.033 0.078 10 0.0033 0.0078 Net::SSH::Perl::Util::SSH2MP::mp2bin
0.10 0.030 0.030 7 0.0043 0.0042 Exporter::export
0.08 0.026 0.040 89 0.0003 0.0004 :(eval
0.07 0.020 0.047 1 0.0198 0.0471 :/usr/share/perl5/Crypt/DH.pm:6
0.07 0.020 0.083 11 0.0018 0.0075 :/usr/local/share/perl/5.8.8/Net/SSH/Perl/SSH2.pm:6
0.06 0.019 0.016 70 0.0003 0.0002 Net::SSH::Perl::Buffer::new
0.06 0.018 0.021 5 0.0036 0.0043 Math::BigInt::Calc::_as_bin
0.05 0.016 0.016 1395 0.0000 0.0000 Math::Pari::_gmul
0.05 0.016 0.016 1399 0.0000 0.0000 Math::Pari::_gadd
0.05 0.014 0.048 15 0.0009 0.0032 Net::SSH::Perl::Util::SSH2MP::bin2mp
[/shell]Aquí tenemos el cuello de botella:

[shell] 62.8 19.25 19.317 3779 0.0051 0.0051 Math::BigInt::Calc::_div_use_div
35.2 10.79 10.861 3721 0.0029 0.0029 Math::BigInt::Calc::_mul_use_div
[/shell]Vamos a ver qué paquete tenemos de matematicas

[shell] # dpkg -l | grep math | awk ‘ {print $2} ‘
libmath-gmp-perl
[/shell]y ahora a ver que librerías salen en el repositorio

[shell] # apt-cache search math bigint perl
libmath-bigint-gmp-perl – GMP library for Math::BigInt routines
libmath-gmp-perl – high speed arbitrary size integer math for perl
perl-modules – Core Perl modules
[/shell]Este suena bien libmath-bigint-gmp-perl – GMP library for Math::BigInt routines

lo instalamos :

[shell] apt-get install libmath-bigint-gmp-perl [/shell]y ahora lo probamos

[shell] # dprofpp
Total Elapsed Time = 1.406720 Seconds
User+System Time = 0.336720 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
11.8 0.040 0.040 7978 0.0000 0.0000 Math::Pari::DESTROY
8.91 0.030 0.038 1 0.0298 0.0376 :/usr/share/perl5/Crypt/DH.pm:6
8.61 0.029 0.038 75 0.0004 0.0005 Net::SSH::Perl::Util::import
5.64 0.019 0.019 82 0.0002 0.0002 Exporter::import
5.35 0.018 0.061 80 0.0002 0.0008 :(eval
5.05 0.017 0.017 1282 0.0000 0.0000 Math::Pari::_gdiv
4.75 0.016 0.016 1397 0.0000 0.0000 Math::Pari::_gmul
3.86 0.013 0.058 10 0.0013 0.0058 Net::SSH::Perl::Util::SSH2MP::mp2bin
2.97 0.010 0.010 1 0.0100 0.0100 :/usr/share/perl/5.8/File/Spec/Unix.pm:3
2.97 0.010 0.010 1 0.0100 0.0100 :/usr/local/share/perl/5.8.8/Net/SSH/Perl/Packet.pm:20
2.97 0.010 0.010 1 0.0100 0.0100 :/usr/local/share/perl/5.8.8/Net/SSH/Perl/Packet.pm:5
2.97 0.010 0.010 2 0.0050 0.0050 Crypt::Blowfish::new
2.97 0.010 0.010 1 0.0100 0.0099 :/usr/share/perl5/Digest/HMAC_MD5.pm:6
2.97 0.010 0.010 4 0.0025 0.0025 Math::BigInt::GMP::_modpow
2.97 0.010 0.010 1 0.0099 0.0098 :/usr/local/share/perl/5.8.8/Net/SSH/Perl/ChannelMgr.pm:6
[/shell]Ahora se ha dado la vuelta a la tortilla 😀 y tenemos unos tiempos aceptables

Can’t bind socket to port 1023

Error:

[shell] Net::SSH: Can’t bind socket to port 1023: La dirección ya se está usando at test_ssh.pl line 32 [/shell]Solución:

Agregar priveleged => 0

[shell] my $ssh = Net::SSH::Perl->new( $hostname, privileged => 0 ); [/shell]

búsquedas y reemplazo

Estoy escribiendo un documento en el que te detallo como instalar una aplicación con librerías de perl en Debian. Me interesa obtener de mi fichero tmp todos los nombres de librerias que tienen el formato libxxxx-perl y quiero obtener los nombres de paquetes. He usado este comando:
[shell]grep “lib.*perl” tmp | sed ‘s/.*\(lib.*[^ ]perl\).*/\1/'[/shell]

Dynamic MMap ran out of room

Error en Debian etch ejecutando apt-get o apt-cache

[shell]
E: Dynamic MMap ran out of room
E: Ocurrió un error mientras se procesaba kernel-image-2.6.18.2
(NewVersion1)
E: Problem with MergeList /var/lib/dpkg/status
E: No se pudieron analizar o abrir las listas de paquetes o el archivo
de estado.
[/shell]

editar /etc/apt/apt.conf
agregar :
[shell]
APT::Cache-Limit 25165824;
[/shell]

Borrar modulos de Perl instalados con CPAN

http://www.cpan.org/misc/cpan-faq.html#How_delete_Perl_modules

[shell]
#!/usr/local/bin/perl -w[/shell]

use ExtUtils::Packlist;
use ExtUtils::Installed;

$ARGV[0] or die “Usage: $0 Module::Name\n”;

my $mod = $ARGV[0];

my $inst = ExtUtils::Installed->new();

foreach my $item (sort($inst->files($mod))) {
print “removing $item\n”;
unlink $item;
}

my $packfile = $inst->packlist($mod)->packlist_file();
print “removing $packfile\n”;
unlink $packfile;

Obteniendo la estructura de una base de datos mysql

Cómo obtener el ‘schema’ de una base de datos de mysql.

[shell]
mysqldump -u root -p -d base_de_datos > mysql-schema.sql
[/shell]

Este comando genera un volcado de la base de datos, pero sin datos
lo que nos deja la estructura o schema.

[shell]
-u : usuario
-p : password, si no está especificada la pide en consola
-d : no volcar datos
base_datos: nombre de la base de datos a volcar.
[/shell]

no digas friki, di colgao

¿ te suena friki ? claro que sí, ahora a todo se le llama friki, que si mira que friki del futbol ( el futbol no es friki ), que si que pasa tu tio friki … mallll estamos desprestigiando el uso de esta palabra.

Desde aquí hago un llamamiento a usar la palabra colgao, no useis más la palabra friki.

¡¡¡ Por todas las gafas negras de pasta rotas en los recreos de las escuelas !!!

PARAD ESTA LOCURA

Downgrade a C3

Ahora algunos conductores ahora me dan largas, debe ser por que conducto mi recien extrenado C3 ( negro y brillante por ahora ) y como va limpio se piensan que soy una chica. La verdad que de conducir un León a un C3, va una diferencia bastante grande, pero por ahora estoy bastante contento con mi nuevo coche… diesel :D.

El coche:

C3 Collection HDI 70cv 14400 Negro + Pack Collection ( llantas, control de velocidad, pintura metalizada )

Primeras Impresiones:

Se cala :D, el embrage muy alto, y el freno muy duro y frenada más bien larga. Aceleración en primera y segunda con mucho reprís, tercera , cuarta y quinta aceleración moderada hasta las 3000 revoluciones que comienza a dar un empujón muy wapo. El cambio de la caja de segunda a tercera no es cómodo, no entra bien ( comentar en el taller ).

En cuanto a maniobras, la dirección es blandísima y no cuesta ningún trabajo hacer los giros ni maniobras. Los badenes se pasan bastante bien, aúnque si vas más rápido de lo normal saltas :D.

La visibilidad dentro del coche es muy buena, la luna delantera y trasera son amplias, el retrovisor central bien y los laterales aunque un poco pequeños no están mal, además de ser regulables desde el interior.

Los asientos delanteros son confortables, no así como la parte trasera que es la parte más floja de todo el vehículo. El asiento de atrás son dos partes lisas apenas sin forma con lo que no debe ser muy confortable, ni tampoco es muy amplio. La calefacción comienza a notarse en muy pocos minutos, incluso quizás demasiado calor a 22.5º. El maletero es bastante grande y guarda una rueda de recambio de igual tamaño que las demás, por cierto la puerta del maletero se abre de forma muy cómoda.

Como puntos negativos comentar que cualquier golpe suena chapa, parece que el aislamiento es muy fino. Los acabados un poco sueltos, con holgura y de plástico de baja calidad. Tanto los respejos del parasol como la guantera, carecen de luz. El embrague se engancha con la moqueta. Los pedales están muy encajonados y se hace un tanto incómodo. El cambio de segunda a tercera no entra correctamente. La calidad de audio deja mucho que desear.

En conclusión un coche que es muy agradable en cuanto a conducción, muy buena repuesta en cuanto velocidad en un margen de 0 a 120 km/h tanto por carretera como por ciudad. Estéticamente es discreto, poco agresivo, pero no es para nada feo. Cómodo para conducir y tacto del volante muy suave, no así de la caja de cambios. No válido para usuarios exquisitos que buscan un acabado perfecto, ni gran potencia.