bonding y balanceo de carga (no balancea)

2009-07-07 Thread Felipe Román Márquez


Hola a todos, trataré de ser corto y preciso.

datos:
- 2x intel nehalem quadcore
- 36gb ram
- centos 5.3 64bits
- actualizado a la fecha con repos oficiales
(son dos máquinas iguales instaladas iguales)

el problema:
tengo un problema armando un bonding para balanceo de carga, tengo 2  
tarjetas de red intel 82576 gigabit y 2 tarjetas de red intel 82574L  
gigabit (4 por cada servidor)


funciona impecable en modo alta disponibilidad en modo 0 , en modo 2 y  
en modo 6 (que son los que me interesan)
pero bajo ninguna circunstancia suman las velocidades (como si lo  
hacen un par de tarjetas de red muy viejas que tengo)


probé con las 4 nic en un solo bonding.
con 2 iguales en cada server.
con 2 mezcladas.
y no hay caso

#
mi modprobe.conf

alias eth0 e1000e
alias eth1 e1000e
alias eth2 igb
alias eth3 igb
alias bond0 bonding
#

options bonding mode=0 miimon=100

dado que con la misma config funciona en las tarjetas antiguas, que me  
falta para que funcione en estas que son mucho más nuevas?


o que otra opción de conexión de alta velocidad (barata) se puede hacer?

de antemano gracias.


Re: bonding y balanceo de carga (no balancea)

2009-07-08 Thread Jorge Palma
2009/7/7 Felipe Román Márquez :
>
> Hola a todos, trataré de ser corto y preciso.
>
> datos:
> de antemano gracias.
>
Como estas midiendo para saber que no balancean??

Probaste en modo 4??

Aqui va una referencia...http://kbase.redhat.com/faq/docs/DOC-16008

Atte

-- 
Jorge Palma Escobar
Ingeniero de Sistemas
Red Hat Linux Certified Engineer
Certificate Nº 804005089418233



Re: bonding y balanceo de carga (no balancea)

2009-07-08 Thread Felipe Román Márquez
por traspaso de archivos con scp, rsync y por como sincroniza los  
discos drbd.


con las tarjetas viejas de 100mbps al usar un bonding  el traspaso de  
archivos se hace a aproximadamente 20mbps a 25mbps, al desconectar una  
tarjeta mientras se copia el archivo la velocidad baja a 10mbps a  
12mbps que es lo normal de 1 tarjeta funcionando a 100 full duplex.


con las tarjetas nuevas funcionando a 1000full duplex, usando 4  
tarjetas en 1 bonding, 3 tarjetas, 2 tarjetas o una sola la velocidad  
es constante entre 35mbps a 40mbps, no sube ni baja de eso.



estoy usando un raid de discos sas de 15.000rpm que en hdparm da  
680mbps si que no tengo cuello de botella ahí.


si probé en modo 4 y el resultado es el mismo.
instalé los modulos igb de intel a mano y el resultado es el mismo,  
para las otras tarjetas (e1000e) no hay módulos disponibles en la  
pagina de intel.


gracias por responder :D


El 08-07-2009, a las 18:16, Jorge Palma escribió:


2009/7/7 Felipe Román Márquez :


Hola a todos, trataré de ser corto y preciso.

datos:
de antemano gracias.


Como estas midiendo para saber que no balancean??

Probaste en modo 4??

Aqui va una referencia...http://kbase.redhat.com/faq/docs/DOC-16008

Atte

--
Jorge Palma Escobar
Ingeniero de Sistemas
Red Hat Linux Certified Engineer
Certificate Nº 804005089418233






Re: bonding y balanceo de carga (no balancea)

2009-07-10 Thread Aldrin Martoq
2009/7/8 Felipe Román Márquez :
> por traspaso de archivos con scp, rsync y por como sincroniza los discos
> drbd.

Haz otra prueba para medir, probablemente estas midiendo tu
performance en disco y/o en cpu.


> con las tarjetas viejas de 100mbps al usar un bonding  el traspaso de
> archivos se hace a aproximadamente 20mbps a 25mbps, al desconectar una
> tarjeta mientras se copia el archivo la velocidad baja a 10mbps a 12mbps que
> es lo normal de 1 tarjeta funcionando a 100 full duplex.
> con las tarjetas nuevas funcionando a 1000full duplex, usando 4 tarjetas en
> 1 bonding, 3 tarjetas, 2 tarjetas o una sola la velocidad es constante entre
> 35mbps a 40mbps, no sube ni baja de eso.
> estoy usando un raid de discos sas de 15.000rpm que en hdparm da 680mbps si
> que no tengo cuello de botella ahí.


-- 
Aldrin Martoq
http://aldrin.martoq.cl/



Re: bonding y balanceo de carga (no balancea)

2009-07-10 Thread Felipe Román Márquez
tiene 6 discos sas de 15.000rpm en raid0 (cada server) en velocidad  
peak da casi 800mbps, y no baja de 480mbps en velocidad sostenida.
y en cpu, tiene 2 x quadcore nehalem (no hay nada más potente en el  
mercado hasta ahora) son 8 cores por máquina y 16 theads en total ya  
que tienen HT.


imposible que haya cuello de botella por procesador ni por discos,  
además las máquinas no tienen carga, están recién instaladas y no  
puedo seguir avanzando hasta que la performance de red suba  
considerablemente.


PD: probé SLES11, la red funciona bastante más rápido (sigue sin  
funcionar el bonding en todo caso). pero no es estable, los bridges  
que genera para xen hacen que se caiga la red cada vez que se reinicia  
la máquina y además misteriosamente los archivos de configuración de  
las interfaces de red se borran, sin mencionar que no encontré soporte  
ni para heartbeat ni para drbd en los repos oficiales, al instalarlos  
de los no oficiales tengo problemas de dependencias imposibles de  
resolver con los repos oficiales :P



ya no se que más hacer, no hay presupuesto para más tarjetas de red u  
otra tecnología que sea de alta velocidad.


como estoy desesperado estoy tirando palos de ciego, probaré fedora11,  
sles10, etc.


si alguien tiene una idea (cualquier cosa) será bienvenida.

saludos a todos.



El 10-07-2009, a las 16:49, Aldrin Martoq escribió:


2009/7/8 Felipe Román Márquez :
por traspaso de archivos con scp, rsync y por como sincroniza los  
discos

drbd.


Haz otra prueba para medir, probablemente estas midiendo tu
performance en disco y/o en cpu.



con las tarjetas viejas de 100mbps al usar un bonding  el traspaso de
archivos se hace a aproximadamente 20mbps a 25mbps, al desconectar  
una
tarjeta mientras se copia el archivo la velocidad baja a 10mbps a  
12mbps que

es lo normal de 1 tarjeta funcionando a 100 full duplex.
con las tarjetas nuevas funcionando a 1000full duplex, usando 4  
tarjetas en
1 bonding, 3 tarjetas, 2 tarjetas o una sola la velocidad es  
constante entre

35mbps a 40mbps, no sube ni baja de eso.
estoy usando un raid de discos sas de 15.000rpm que en hdparm da  
680mbps si

que no tengo cuello de botella ahí.



--
Aldrin Martoq
http://aldrin.martoq.cl/






Re: bonding y balanceo de carga (no balancea)

2009-07-10 Thread Aldrin Martoq
On Fri, 2009-07-10 at 17:13 -0400, Felipe Román Márquez wrote:
> tiene 6 discos sas de 15.000rpm en raid0 (cada server) en velocidad  
> peak da casi 800mbps, y no baja de 480mbps en velocidad sostenida.
> y en cpu, tiene 2 x quadcore nehalem (no hay nada más potente en el  
> mercado hasta ahora) son 8 cores por máquina y 16 theads en total ya  
> que tienen HT.

Lei tus specs (por eso los puse bajo mi comentario), y aun asi los
procesos que hablamos son todos UNI-THREAD (no te sirven los 8 cores),
son pesados en CPU y 800mbps es poco para tus discos (cuidado con las
unidades!). Como referencia en mi laptop:
- hdparm -T /dev/sda
1128.20 MiB/s
- hdparm -t /dev/sda
61.03 MiB/s
- dd if=archivo2gigas of=/dev/null (no esta en cache obvimente!)
38.1 MiB/s

> imposible que haya cuello de botella por procesador ni por discos,  
> además las máquinas no tienen carga, están recién instaladas y no  
> puedo seguir avanzando hasta que la performance de red suba  
> considerablemente.

Pero *hiciste la prueba*? Miraste el uso con top (presiona "1" para
separar por CPU) mientras corrias ssh por ejemplo? Hiciste scp o rsync a
localhost?

Aca un scp a localhost me da penosos 13 MiB/s y entre dos laptops por
gigabit me da 24.9 MiB/s, asi que 50MiB/s no me parece malo para tus
servidores: fijate que con scp entre 2 tarros (24 MiB/s) obtengo menos
que leer directamente el disco (38 MiB/s). SCP no es gratis y rsync anda
por ahi...

Puedes intentar con el par de programas que pongo abajo, los cuales solo
involucran CPU y red... con ellos obtengo:

- a localhost: 750 MiB/s
- entre 2 laptops conectados entre ellos por gigabit: 111 MiB/s

--servidor.py--
#!/usr/bin/env python

import SocketServer,sys

class MyServer(SocketServer.ThreadingTCPServer):
  allow_reuse_address = True

class EchoRequestHandler(SocketServer.BaseRequestHandler):
  def handle(self):
mega = "A"*1024*1024
data = self.request.recv(1024)
if data.startswith('test'):
  try:
sys.stdout.write('%s: ' % str(self.client_address))
numero = int(data[5:])
for i in range(numero):
  if i % 10 == 0:
sys.stdout.write('.')
sys.stdout.flush()
  self.request.send(mega)
sys.stdout.write('\n')
return
  except Exception, e: print e

server = MyServer(('', 5), EchoRequestHandler)
try:
  server.serve_forever()
except:
  server.server_close()
-fin-servidor.py--

-cliente.py
#!/usr/bin/env python

import socket,sys,time

try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((sys.argv[1], 5))
sock.send("test %s" % sys.argv[2])
except IndexError:
sys.stderr.write("""Uso: %s  <# MegaBytes>
Ejemplo: %s 127.0.0.1 10
""" % (sys.argv[0], sys.argv[0]))
sys.exit(2)
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(2)

recv = 1024*8
t1 = time.time()
data = sock.recv(recv)
l = 0
while len(data):
l += len(data)
data = sock.recv(recv)
t2 = time.time()
sock.close()

delta=t2-t1
KiB=l/1024
MiB=l/1024/1024
KiBps=KiB/delta
MiBps=MiB/delta
print """Largo: %d MiB
tiempo: %f segundos
ancho banda:
  %f MiB/s
  %f KiB/s""" % (MiB, delta, MiBps, KiBps)
fin-cliente.py





-- 
Aldrin Martoq 
http://aldrin.martoq.cl/



Re: bonding y balanceo de carga (no balancea)

2009-07-19 Thread Felipe Román Márquez
probé en fedora 11 y funciona sin problemas, con 3 tarjetas da 90mbps  
en promedio.
pero no hay xen en fedora 11, solo kvm y necesito xen si o si.  (y es  
casi 100% necesario usar centos)


:( creo que tendré que comprar unas infiniband

gracias.

El 10-07-2009, a las 19:29, Aldrin Martoq escribió:


On Fri, 2009-07-10 at 17:13 -0400, Felipe Román Márquez wrote:

tiene 6 discos sas de 15.000rpm en raid0 (cada server) en velocidad
peak da casi 800mbps, y no baja de 480mbps en velocidad sostenida.
y en cpu, tiene 2 x quadcore nehalem (no hay nada más potente en el
mercado hasta ahora) son 8 cores por máquina y 16 theads en total ya
que tienen HT.


Lei tus specs (por eso los puse bajo mi comentario), y aun asi los
procesos que hablamos son todos UNI-THREAD (no te sirven los 8 cores),
son pesados en CPU y 800mbps es poco para tus discos (cuidado con las
unidades!). Como referencia en mi laptop:
- hdparm -T /dev/sda
   1128.20 MiB/s
- hdparm -t /dev/sda
   61.03 MiB/s
- dd if=archivo2gigas of=/dev/null (no esta en cache obvimente!)
   38.1 MiB/s


imposible que haya cuello de botella por procesador ni por discos,
además las máquinas no tienen carga, están recién instaladas y no
puedo seguir avanzando hasta que la performance de red suba
considerablemente.


Pero *hiciste la prueba*? Miraste el uso con top (presiona "1" para
separar por CPU) mientras corrias ssh por ejemplo? Hiciste scp o  
rsync a

localhost?

Aca un scp a localhost me da penosos 13 MiB/s y entre dos laptops por
gigabit me da 24.9 MiB/s, asi que 50MiB/s no me parece malo para tus
servidores: fijate que con scp entre 2 tarros (24 MiB/s) obtengo menos
que leer directamente el disco (38 MiB/s). SCP no es gratis y rsync  
anda

por ahi...

Puedes intentar con el par de programas que pongo abajo, los cuales  
solo

involucran CPU y red... con ellos obtengo:

- a localhost: 750 MiB/s
- entre 2 laptops conectados entre ellos por gigabit: 111 MiB/s

--servidor.py--
#!/usr/bin/env python

import SocketServer,sys

class MyServer(SocketServer.ThreadingTCPServer):
 allow_reuse_address = True

class EchoRequestHandler(SocketServer.BaseRequestHandler):
 def handle(self):
   mega = "A"*1024*1024
   data = self.request.recv(1024)
   if data.startswith('test'):
 try:
   sys.stdout.write('%s: ' % str(self.client_address))
   numero = int(data[5:])
   for i in range(numero):
 if i % 10 == 0:
   sys.stdout.write('.')
   sys.stdout.flush()
 self.request.send(mega)
   sys.stdout.write('\n')
   return
 except Exception, e: print e

server = MyServer(('', 5), EchoRequestHandler)
try:
 server.serve_forever()
except:
 server.server_close()
-fin-servidor.py--

-cliente.py
#!/usr/bin/env python

import socket,sys,time

try:
   sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   sock.connect((sys.argv[1], 5))
   sock.send("test %s" % sys.argv[2])
except IndexError:
   sys.stderr.write("""Uso: %s  <# MegaBytes>
Ejemplo: %s 127.0.0.1 10
""" % (sys.argv[0], sys.argv[0]))
   sys.exit(2)
except socket.error, msg:
   sys.stderr.write("[ERROR] %s\n" % msg[1])
   sys.exit(2)

recv = 1024*8
t1 = time.time()
data = sock.recv(recv)
l = 0
while len(data):
   l += len(data)
   data = sock.recv(recv)
t2 = time.time()
sock.close()

delta=t2-t1
KiB=l/1024
MiB=l/1024/1024
KiBps=KiB/delta
MiBps=MiB/delta
print """Largo: %d MiB
tiempo: %f segundos
ancho banda:
 %f MiB/s
 %f KiB/s""" % (MiB, delta, MiBps, KiBps)
fin-cliente.py





--
Aldrin Martoq 
http://aldrin.martoq.cl/






Re: bonding y balanceo de carga (no balancea)

2009-07-19 Thread Aldrin Martoq
On Sun, 2009-07-19 at 20:37 -0400, Felipe Román Márquez wrote:
> probé en fedora 11 y funciona sin problemas, con 3 tarjetas da 90mbps  
> en promedio.

Que probaste? rsync, scp, mi programa? Comparaste con localhost?

Que unidades son esas? b con minusculas es bit, B con mayusculas es
Byte. 90mbps esta LEJOS de gigabit.
http://en.wikipedia.org/wiki/Data_rate_units

Si te refires a 90MiB/s quizas estas topando con otra limitante como
algun switch entremedio? Como estan conectados los tarros?

> pero no hay xen en fedora 11, solo kvm y necesito xen si o si.  (y es  
> casi 100% necesario usar centos)

Tu prueba es entre maquinas virtuales?


> :( creo que tendré que comprar unas infiniband

Yo creo que te volveria a pasar el mismo problema que con gigabit porque
te falta la rigurosidad para determinar donde esta el cuello de botella.
Tienes que dejar el minimo de piezas y asegurarte que por lo menos algo
anda a gigabit, ni siquiera has medido cual es la velocidad de leer o
escribir un archivo...

[]


-- 
Aldrin Martoq 
http://aldrin.martoq.cl/



Re: bonding y balanceo de carga (no balancea)

2009-07-19 Thread Felipe Román Márquez




Que probaste? rsync, scp, mi programa? Comparaste con localhost?


si, probé de todo y tengo 3 veces mejor performance en fedora con el  
bonding funcionando que en centos.




Que unidades son esas? b con minusculas es bit, B con mayusculas es
Byte. 90mbps esta LEJOS de gigabit.
http://en.wikipedia.org/wiki/Data_rate_units

Si te refires a 90MiB/s quizas estas topando con otra limitante como
algun switch entremedio? Como estan conectados los tarros?




son 90MiB/s y comprueba que el cuello de botella es la red. 


Re: bonding y balanceo de carga (no balancea)

2009-07-19 Thread Juan C. Olivares
2009/7/19 Felipe Román Márquez 

>
>
>> Que probaste? rsync, scp, mi programa? Comparaste con localhost?
>>
>
> si, probé de todo y tengo 3 veces mejor performance en fedora con el
> bonding funcionando que en centos.


¿Qué protocolo exactamente estás probando?

Atte,
JCO


Re: bonding y balanceo de carga (no balancea)

2009-07-19 Thread Felipe Román Márquez

un poco más detallado.
es para un cluster activo/pasivo que usa drbd y es vital para el  
rendimiento de esto el performance de la red.
ya hice pruebas  a los discos, locales y remotas, y todo lo sugerido  
en los post anteriores.


con las mismas pruebas usando fedora 11 con un bonding modo 6 el  
performance es 3 veces lo que da en centos.

si le sacaba un cable de una tarjeta de red bajaba a 60MB/ss aprox
con 1 daba 30MB/s y con las 3 cercano a los 90-100MB/s

en centos con 1, 2, 3 o 4 tarjetas en bonding con la misma confing no  
da más que 30MB/s (en las mismas pruebas)
bajé los modulos actualizados de intel y los instalé funciona la red  
pero el bonding sigue sin balancear carga. (cosa que como dije si  
funciona en fedora)
el modulo igb y e1000e en fedora tiene una versión completamente  
distinta a las oficiales de intel y a las que vienen con centos 5.3,  
no pude portear los modulos de fedora a centos.



El 20-07-2009, a las 0:16, Juan C. Olivares escribió:


2009/7/19 Felipe Román Márquez 





Que probaste? rsync, scp, mi programa? Comparaste con localhost?



si, probé de todo y tengo 3 veces mejor performance en fedora con el
bonding funcionando que en centos.



¿Qué protocolo exactamente estás probando?

Atte,
JCO





Re: bonding y balanceo de carga (no balancea)

2009-07-20 Thread Aldrin Martoq
2009/7/20 Felipe Román Márquez :
> un poco más detallado.
> es para un cluster activo/pasivo que usa drbd y es vital para el rendimiento
> de esto el performance de la red.
> ya hice pruebas  a los discos, locales y remotas, y todo lo sugerido en los
> post anteriores.
> con las mismas pruebas usando fedora 11 con un bonding modo 6 el performance
> es 3 veces lo que da en centos.
> si le sacaba un cable de una tarjeta de red bajaba a 60MB/ss aprox
> con 1 daba 30MB/s y con las 3 cercano a los 90-100MB/s

Nones! tu problema no es que el balanceo no funciona, sino que no
obtienes la velocidad esperada con 1 solo cable! Como referencia, una
conexión gigabit da cerca de 100MiB/s; con 3 debieras obtener en
teoría 300MiB/s.

Insisto: aisla el problema asegurando que al menos ALGO funciona a la
velocidad que esperas: conecta los servidores con un solo cable (sin
bonding!) entre dos tarros (sin switchs!) con un programa que
involucre solo cpu y red (el programa python que publiqué por
ejemplo). Tienes los números de referencia: a si mismo, eran 750MiB/s;
entre dos computadores conectados directamente via gigabit: 111MiB/s.

Si no obtienes al menos 100MiB/s con esta configuración, es que algo
anda mal y es lo primero que debes resolver. Si obtienes menos de
750MiB/s a localhost, es que algo peor esta pasando y también deberás
resolver. Publica tus números acá.

> en centos con 1, 2, 3 o 4 tarjetas en bonding con la misma confing no da más
> que 30MB/s (en las mismas pruebas)
> bajé los modulos actualizados de intel y los instalé funciona la red pero el
> bonding sigue sin balancear carga. (cosa que como dije si funciona en
> fedora)
> el modulo igb y e1000e en fedora tiene una versión completamente distinta a
> las oficiales de intel y a las que vienen con centos 5.3, no pude portear
> los modulos de fedora a centos.

Mi prueba fue entre un dell d820 (broadcom) y un macbook1,1 (marvell)
... Veamos como te va primero...

-- 
Aldrin Martoq
http://aldrin.martoq.cl/