Hi Danilo,

You should avoid using Sequoia 3, it is not supported anymore. Use the latest 2.10 branch code until 2.10.10 is released.
What is the workload generated by JDBCBench?
How many reads? How many writes? How much concurrency (how many clients in parallel)? Given the throughput you obtain with a single database (3500/sec), I guess the queries are extremely simple. The fact that your backends are not doing much with Sequoia is probably because you have a lot of writes that need to be serialized and it is expected that writes don't scale with Sequoia (we have to eliminate the indeterminism of the workload by total ordering). The high cpu load on the controller is likely due to a bad group communication configuration. Other possibilities are a bug or another misconfiguration (avoid caching if you have a lot of writes). Also if a single node is not saturated by the workload you won't see any improvement by adding nodes. Using dedicated nodes add network latency so that can also have a significant impact especially if you workload has a limited parallelism.

Don't hesitate to give us more details about your JDBCBench workload.
Thanks for your feedback,
Emmanuel


I am trying a RAIDb-1 Sequoia cluster. My configuration consists of:
- one or two dedicated controllers
- each controller supported by 2 PostgreSQL or MySQL hosts as backends
Each controller was tested with different operating systems:
- Slackware 12.0 (with kernel 2.6.21.5-smp SMP)
- Debian 4 (2.6.18-4-686 SMP)
- Gentoo (2.6.24)
- RedHat Enterprise 4 (2.6.9-5.ELsmp  SMP)
- Windows XP Professional SP 2
with different Java VMs:
- J2RE 1.4.2
- JDK 1.5.0_15
- JDK 1.6
and with different hardware:
- 2 [EMAIL PROTECTED],  2Gb Ram
- Pentium 4 [EMAIL PROTECTED], 2 Gb Ram
- Pentium 4 @3GHz, 512 Mb Ram
- Virtual Machine

With all the configurations, using the tool JDBCBench (executed from a dedicated host), I noticed a big cpu load on the controller and very poor performance. For example, with a direct access to a single PostgreSQL node I can reach 3500 transactions/sec, instead of a 800txn/s obtained by a controller with 2 PostgreSQL hosts. In the latter case, the DB hosts are not overloaded: PostgreSQL (and MySql) uses about 5% CPU and generate only 150Kbyte/s network traffic.

I tried to use both JGroups and Appia (both SEQ and TOKEN, UDP and TCP) with the same results (only few differences, but always with high cpu load).

I also tried Sequoia 2.10.9, 3.0-beta2 and 3.0-beta3 (I can't use cvs version because I get a null pointer exception in Controller.java:185, in function sendJmxNotification(), with respect to notificationBroadcasterSupport).

I used the last available JDBC drivers for PostgreSQL (postgresql-8.2-508.jdbc3.jar) and for MySQL (mysql-connector-java-5.1.5-bin.jar).

I also enabled cache and disabled SQL monitoring, without big improvements.
Also tried different schedulers (RoundRobin and LeastPendingRequestsFirst), with both WaitForCompletion policy "all" and "first".

>From the published presentations, I can read that the performance with Sequoia should increase, whereas in my case they decrease (I need about 3 controllers, each one with 2 backends, to reach the same performance of a single PostgreSQL host). Searching in the mailing list I read some users with the same problems, but I could not find a solution.

Any help is very appreciated.

Yours faithfully, Danilo Levantesi

_______________________________________________
Sequoia mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/sequoia



--
Emmanuel Cecchet - Research scientist
EPFL - LABOS/DSLAB - IN.N 317
Phone: +41-21-693-7558

_______________________________________________
Sequoia mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/sequoia

Reply via email to