bonding y balanceo de carga (no balancea)

Felipe Román Márquez fromanm en gmail.com
Dom Jul 19 20:37:16 CLT 2009


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(('', 55555), 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], 55555))
>    sock.send("test %s" % sys.argv[2])
> except IndexError:
>    sys.stderr.write("""Uso: %s <IP servidor> <# 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 <amartoq en dcc.uchile.cl>
> http://aldrin.martoq.cl/
>




Más información sobre la lista de distribución Linux