Ver Mensaje Individual
  #28  
Antiguo 11-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Reputación: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, amigo jachguate, es cierto que windows usa la memoria virtual (fichero en el disco duro) para "ampliar" aunque tenga mucha RAM instalada, incluso le sobre, pero eso es un problema de windows, como has dicho.
En linux, no es así, linux usa toda la memoria ram disponible y sólo cuando ya no le queda más remedio, entonces usará la memoria virtual, por lo que siempre está sacando el máximo rendimiento a la ram instalada, y cuanto más tenga, mejor.
En los apartados de memoria y cpus, no estoy nada de acuerdo contigo, mejor dicho, o te has confundido o no te he entendido, pero aquí dices:

Cita:
Empezado por jachguate Ver Mensaje
  • Procesador. Puede que tengas 16 nucleos, pero que la base de datos solo pueda sacar provecho de uno (especialmente cierto con firebird).
  • RAM. En el servidor de base de datos, es bueno tener mucha RAM, y es mejor sacarle provecho. He visto casos donde el dueño del negocio se ve obligado a comprar un servidor con 8, 16 o más GB de RAM, pero cuando revisas Firebird está tirando solamente de un par de ellos. (especialmente cierto con Firebird).
Eso que mencionas puede ocurrir con windows, con la versión superserver, y si además no has configurado cpuaffinitymsak en firebird.conf
Pero no es así en linux con las versiones classicserver ni superclassic, firebird hace uso de todas las cpus instaladas, perfectamente, transparente al usuario, y además lo hace muy bien, aprovechando cada cpu, según su nivel de utilización, si está muy ocupada entonces lanza la consulta por otra cpu.
Lo tengo más que probado en mis clientes, observando con 'top' los procesos del servidor según van trabajando los usuarios, y cómo firebird va haciendo peticiones a cpus más ociosas para repartir el trabajo entre todas las cpus.
Además no sólo lo digo yo, lo dice la propia documentación de firebird:

Cita:
Why doesn't Classic have CPUAffinity setting in firebird.conf?
Because CPUAffinity only applies to SuperServer. Classic can work on multiple CPUs without problems, while SuperServer needs that option to aviod context switching between processors with degrades performance dramatically.
Cita:
Multiprocessor/multicore

ClassicServer // SuperClassic
SMP (symmetrical multi-processing) is supported out of the box. The CpuAffinityMask parameter in firebird.conf is ignored.
Unlike Superserver, Classic and SuperClassic can also assign multiple connections to the same database to different processors.

SuperServer

Windows SuperServer defaults to using the first logical processor only, because prior to 2.5 it performed badly on SMP systems. To make use of all your processors, set the CpuAffinityMask parameter in firebird.conf to: 3 for 2 CPUs/cores; 15 for 4 CPUs/cores; 255 for 8 CPUs/cores.
Linux SuperServer ignores CpuAffinityMask.
Ya digo, que cuando un cliente ha ido aumentado sus conexiones al servidor y vemos que todos los procesadores están casi siempre a un alto nivel de uso, le cambiamos el servidor por uno de más cpus y problema solucionado. Firebird reparte las peticiones entre ellos y se acabó el problema, es una "gozada" ver varias cpus a tope de rendimiento, abres una nueva conexión, haces un select complicado y ves en la pantalla de monitorización como la consulta se lanza contra otra cpu que está ociosa y no notas nada de retraso.
El único problema es ahí los discos duros, pero ya digo que hay que montar los más rápidos que se pueda permitir económicamente.
En un par de clientes también tenemos instalado red de fibra óptica, por lo que los "cuellos de botella" que mencionas se quedan prácticamente en la eficiencia de las SQLs que hayamos hecho nosotros

En cuanto a la memoria, la verdad es que firebird consume muy poco, otra gran ventaja, pero sí necesita un poco por cada conexión abierta, obviamente, no recuerdo la cantidad, pero también es poco, el lunes lo puedo confirmar preguntando a un cliente, pero juraría haber visto en algunas ocasiones más de 6 Gb de ram usadas, eso sí, con varias decenas de conexiones activas.

En fin, que al igual que afirmas que con servidores linux la diferencia de rendimiento con windows es bastante grande, también creo que esos "limitantes" que has puesto de cpus y ram, se dan sólo en windows, donde se usa la versión superserver. Y no tiene nada que ver con las versiones classic de firebird, menos todavía en linux.

Última edición por Casimiro Notevi fecha: 11-11-2011 a las 19:32:08.
Responder Con Cita