Subject AW: [firebird-support] One Transaction can PEG XEON cpu @ 100% starving others
Author Steffen Heil
Hi

> Our application pegs the Firebird XEON CPU at 100% under high
> load, rendering the application unresponsive. Is it possible to:

This is a known problem and others will answer more precisely.
However some first answers from me:

Xean CPUs have Hyperthreading enabled by default, which acts as two cpus.
As current firebird superserver builds are not SMP compilant and tend to
switch between then over and back all the time.

(BTW, which server model are you using and which os ?)

Classic server is said to work a litte better with SMP.

> a) run multiple instances of Firebird on the same machine on
> a seperate CPU

Yes.
And even with one firebird, you should set affinity to one virtual cpu only.
This will make firebird superserver way faster.

> b) have both instances updating the same database file. What
> are the contention/corruption issues?

No. Never.
You may never access a database file with anything else while it is using
the database, not even another firebird instance.
Anyway, this is the way classis server handles connections. One process
each.

> c) how can we prevent one database connection from
> monopolizing Firebird. One transaction from a single
> connection can peg Firebird 's CPU utilization at 100%
> causing other connections to be starved to the point they are
> dropped, and new ones are denied.

That should never happen.
Try setting affinity.

Regards,
Steffen


[Non-text portions of this message have been removed]