Subject | RE: [firebird-support] performance issue with firebird 3.0 embedded on linux |
---|---|
Author | chen hsu |
Post date | 2016-06-16T22:40:24Z |
yes, one connection per database, any thread needs to access this database would create its own transaction.
To: firebird-support@yahoogroups.com
From: firebird-support@yahoogroups.com
Date: Wed, 15 Jun 2016 21:38:48 +0200
Subject: Re: [firebird-support] performance issue with firebird 3.0 embedded on linux
To: firebird-support@yahoogroups.com
From: firebird-support@yahoogroups.com
Date: Wed, 15 Jun 2016 21:38:48 +0200
Subject: Re: [firebird-support] performance issue with firebird 3.0 embedded on linux
Hi,
do you mean that you share one connection between multiple threads?
regards,
Karol Bieniaszewski
Sent: Wednesday, June 15, 2016 5:55 PM
Subject: RE: [firebird-support] performance issue with firebird 3.0
embedded on linux
Thanks, Helen. Please see my replies inline.
To: firebird-support@yahoogroups.com
From: firebird-support@yahoogroups.com
Date: Wed, 15 Jun 2016 19:04:33 +1200
Subject: Re: [firebird-support] performance issue with firebird 3.0 embedded on linux
I am sure it is not 3.0 specific, 2.5 is the same. and the main issue is
scalability, sequential transaction performance is actually pretty good,
comparable to ESE store on windows I was comparing firebird against. but
when running multiple transactions in parallel, ESE perf increased from 4 tx/sec
to 26 tx/sec (128 byte/record, 200 records per transaction, 6 transaction
threads on 6 cores, which I expect the best, logical cpu/ht is not very useful
performance-wise), while firebird decreased. These transactions do not
write-conflict with each other.
The basic flow of our code is like, first the main function creates a
database connection, and spawns multiple threads, passing in the database
connection. Each thread does this: create a transaction using the db connection,
do insertion of data, and commit the transaction. Each thread measures its own
elapsed time.&nb sp;
To: firebird-support@yahoogroups.com
From: firebird-support@yahoogroups.com
Date: Wed, 15 Jun 2016 19:04:33 +1200
Subject: Re: [firebird-support] performance issue with firebird 3.0 embedded on linux
Wednesday, June 15, 2016, 5:58:39 PM, Karol B.
wrote:
My project migrated from FB2.5 to FB3.0. I am pretty sure it is not 3.0 specific.
SSD. 512GB Samsung EVO 850. The file system is ext4, block size 4096.
Yes, Turbo boost and hyper threading are enabled.
Could you give me some details about how to use GLOBAL TEMPORARY TABLE?
I used the monolithic time in code i.e. clock_gettime(CLOCK_MONOTONIC, &ts) on each thread to calculate the elapsed time. should be high resolution.
Firebird-3.0.0.32483-0
and 7. If on Windows, how did you go about configuring CpuAffinityMask?
- which processors did you intend to set it for and what was the value you configured?
It's on Linux, I read from document that multiple processors are by default enabled. but I anyway set CpuAffinityMask to 4095, but it seems no change to performance.
- did you try to do this configuration whilst an engine instance was running, without restarting?
No. each time I change configuration, I restart the program.
HB
> test without details say nothing to mecompare results with e.g. FB2.5 in on the same maschine with same configuration (FBConfig)
> 1. Did you
My project migrated from FB2.5 to FB3.0. I am pretty sure it is not 3.0 specific.
> 2. What is your page size and type ofHDD?
SSD. 512GB Samsung EVO 850. The file system is ext4, block size 4096.
> 3. Do you have BOST feature enabled on CPU and HT? --Boost?
Yes, Turbo boost and hyper threading are enabled.
> 4. Didyou compare results on GLOBAL TEMPORARY TABLE - i know this is not the same but can show some info?
Could you give me some details about how to use GLOBAL TEMPORARY TABLE?
> 5. How do you test this times about yourthreads and how do you start them?
I used the monolithic time in code i.e. clock_gettime(CLOCK_MONOTONIC, &ts) on each thread to calculate the elapsed time. should be high resolution.
> 6. Exact version ofFB
Firebird-3.0.0.32483-0
and 7. If on Windows, how did you go about configuring CpuAffinityMask?
- which processors did you intend to set it for and what was the value you configured?
It's on Linux, I read from document that multiple processors are by default enabled. but I anyway set CpuAffinityMask to 4095, but it seems no change to performance.
- did you try to do this configuration whilst an engine instance was running, without restarting?
No. each time I change configuration, I restart the program.
HB