Ir al contenido


Foto

[RESUELTO] Firebird 1.5 soporta phenom 4 nucleos ????


  • Por favor identifícate para responder
7 respuestas en este tema

#1 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 28 octubre 2009 - 10:38

Uso firebird 1.5, tengo una pc con procesador AMD Phenom 9650 X4 64 Quad-Core, quiero haber si puedo echarla andar como servidor, y que jalen los 4 nucleos con firebird, leyendo un poco, me doy cuenta que dentro de Firebird.conf viene una variable que se llama #CpuAffinityMask, le quite el signo # para habilitarla y le cambie el 1 por el 15, indicandole que son 4 procesadores, al hacer pruebas el sistema empieza a comportarse raro, tarda en consultar información, ó al mandar a grabar una factura queda pausada unos 30 segs, lo que hice es deshabilitar la misma variable agregandole el signo #, después de eso, ya se estabilizo el sistema, pero veo que solo 1 nucleo tiene actividad.

Tendría que cambiarme a firebird 2.0 ????
  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 28 octubre 2009 - 11:42

Hola agag4,

No se si el paso a Firebird 2.0.x sea la solución ya que sobre la versión 2 no estoy muy documentado. De lo poco que tengo entendido... creo que se debe a que empleas la versión SuperServer. Creo recordar haber leído que la versión Classic está diseñada para trabajar mejor en equipos con más de un núcleo/procesador.

Mucho no te sabría decir.

Saludos,
  • 0

#3 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 28 octubre 2009 - 12:38

Gracias delphius, voy a probar con la classic haber que tal anda....
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 05 diciembre 2009 - 08:54

Se que ya ha pasado tiempo, y seguramente si hubieras tenido problemas ya nos abrías dicho pero me gustaría preguntar de todos modos. ¿Alguna novedad? ¿Te funcionó con el cambio? Te fijaste si hiciste bien los cálculos?

Esto es lo que se lee sobre CpuAffinityMask en el Release Notes de 1.5.3:

CpuAffinityMask   
(Era cpu_affinity en isc_config/ibconfig). Con Firebird SuperServer en Windows, hay un problema con el sistema operativo, que intercambia continuamente el proceso entero de SuperServer de un lado a otro entre los procesadores en las máquinas SMP. Esto es-tropea el rendimiento. Este parámetro puede usarse en los sistemas SMP en Windows para establecer la afinidad del procesador de Firebird SuperServer a un solo CPU.

Precaución

Firebird Superservers, hasta incluyendo la versión 1.5, no puede apoyar la función Hyperthrea-ding de algunos modelos anteriores de placas base en Windows. Para evitar problemas de equili-brio, es posible que tenga que desactivar el hyperthreading en el nivel BIOS del sistema.

CpuAffinityMask toma un entero, la máscara CPU. 

Ejemplo

CpuAffinityMask = 1 

Sólo se ejecuta en el primer CPU (CPU 0). 
CpuAffinityMask = 2 

Sólo se ejecuta en el segundo CPU (CPU 1). 

CpuAffinityMask = 3 

Funciona en ambos, en el primer y segundo CPU.

Calculando el valor de afinidad de la máscara
 
Puede utilizar este indicador para establecer la afinidad de Firebird a un solo procesador o (en Classic Server) cualquier combinación de los procesadores instalados en el sistema.
 
Considere las CPUs como un array numerado de 0 a n-1, donde n es el número de procesadores instalados e i es el número del array de una CPU. M es otro array, que contiene el MaskValue seleccionado de cada CPU. El valor A es la suma de los valores en M.
 
Utilice la siguiente fórmula para llegar a M, y calcular el MaskValue A:

Mi = 2^I
A = M1 + M2 + M3. . .

Por ejemplo, para seleccionar el primer y cuarto procesador (procesador 0 y procesador 3) cal-cule como sigue:

A = 2^0 + 2^3 = 1 + 8 = 9


No encontré en donde había leído que Classic está mejor diseñado para multiples procedadores :(.

EDITO:
Ya encontré:

There has not been a Classic server on Windows for nearly eight years. This one can utilize multiple
processors, something which still eludes the Windows Superserver. Though usable, Classic
should be regarded as experimental.

Extraído del Release Notes 1.5.3 (versión 153.05 - 9/12/05), Capítulo 2: NewFeatures in Firebird 1.5, título Architecture, página 10.

Y en Firebird 1.5 Quick Start Guide (versión 2.2 - 2/12/05) en la página 4 se lee bajo el título Classic o Superserver? una tabla que resume lo dicho:

SMP (symmetrical multi-processor) support.
Better performance in case of a small number of
multiple connections that do not influence each
other.


Saludos,

  • 0

#5 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 05 diciembre 2009 - 09:26

No me funciono con el classic, y ya no le quise continuar, estoy viendo como actualizarme al firebird 2.0 ese si soporta varios nucleos a como he leido, pero he tenido broncas con trigger's que se ejecutan en el AFTER, tengo que cambiarlos al BEFORE, la version 2.0 ya no le gusto que usemos el AFTER, quien sabe porque ahora lo hicieron asi, pero en fin....
  • 0

#6 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 05 diciembre 2009 - 10:24

No me funciono con el classic, y ya no le quise continuar, estoy viendo como actualizarme al firebird 2.0 ese si soporta varios nucleos a como he leido, pero he tenido broncas con trigger's que se ejecutan en el AFTER, tengo que cambiarlos al BEFORE, la version 2.0 ya no le gusto que usemos el AFTER, quien sabe porque ahora lo hicieron asi, pero en fin....

Pues, no te sabría decir a que se deba a que no te funcionara... Como no tengo equipo con dos o más núcleos/procesadores.
De la misma forma, sobre la 2.x no puedo opinar mucho.

¿El error que dices sobre los trigger's se debe al uso de las variables OLD y NEW? Si es así... Déjame decirte que es algo obvio, y está documentado.
Muchos se extrañaron pero lo cierto es que son cambios que debían hacerse para respetar el estándar. Uno de ellos, si no me falla la memoria, fue de impedir la variable OLD en el trigger BEFORE INSERT. Si te preguntas el porqué... he aquí la respuesta en modo pregunta: ¿Cómo es posible esperar viejos datos (OLD) cuando en realidad no se han insertado? ¡Es ilógico!

Aquí se habla algo del tema.

Si no es eso, te sugiero que nos brindes mayores detalles. Como se trata de una pregunta diferente a lo que se vino tratando en el hilo te sugiero que comiences uno nuevo.

Saludos,
  • 0

#7 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 05 diciembre 2009 - 11:21

Los triggers donde tengo esos problemas son en los After UPDATE, nunca use el OLD en el Before ó After INSERT.
  • 0

#8 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 05 diciembre 2009 - 11:29

Saludos.

En Firebird 2.x en adelante no se permite modificaciones a los valores de los campos mediante sus correspondientes variables OLD y NEW,  dependiendo del trigger que sea Before o After.

OLD Context Variables Now Read-only
D. Yemanov
The set of OLD context variables available in trigger modules is now read-only. An attempt to assign a value
to OLD.something will be rejected.

Note
NEW context variables are now read-only in AFTER-triggers as well.


  • 0




IP.Board spam blocked by CleanTalk.