[DRBD-user] Performance Problem with Informix Database Server

Lars Ellenberg lars.ellenberg at linbit.com
Sat Sep 4 11:30:37 CEST 2004

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


/ 2004-07-23 10:54:18 +0200
\ Thomas Dingermann:
>>>I am using drbd-0.7 with ext3-Filesystem (data=journal). Samba, NFS and
>>>Sybase SQL-Anywhere are running fine and fast. There are no lost
>>>(commited) Transactions of Sybase SQL when resetting the primary node.
>>>
>>>I have a performance problem with DRBD and Informix Dynamic Server 9.40.
>>>
>>>Informix Server opens its database files with O_SYNC in case of normal
>>>files, so writes a very slow. Is it possible to use /dev/nbX as
>>>RAW-Device? Then Informix will open without O_SYNC.

yes, you can. (depending what you consider a "raw" device).
you can use drbd without a filesystem.


>>of course, if every submitted bio is waited for first, then the
>>increased latency will hit performance very hard...
>>
>>but are you sure it is DRBD?
>>I mean what do the figures look like
>>without drbd,
>>with unconnected drbd,
>>and with connected drbd?
>>
>>
>local file usage isas expected (50 MB/sec) dd if=/dev/zero of=/tmp/x
>bs=2048 count=1000000
>
>Protocol      drbd connected      Rate(blocks/sec from vmstat)
>C                     yes                           200 - 300
>C                     no                             3500
>B                     yes                            70 - 230
>B                     no                              3500
>A                     yes                           3200
>A                     no                              3500
>
>-                        -                               15000
>(test-prog on local filesstem, see below)
>
>Network: Crossovercable with Gigabit-Ethernet
>Machine A (with Databases working) Athlon64 3200+
>Machine B (Secondary) Athlon XP 2800+
>Harddisk: 120GB IDE
>
>
>Test Network-Performance:
>
>Machine A: nc -l  -p 49999
>Machine B: dd if=/dev/zero bs=2048 count=1000000 | nc machinea 49999
>2048000000 bytes transferred in 40,572747 seconds (50477233 bytes/sec)
>
>are 50Mbytes/sec normal between Gigabit-NICs (just one Patchcable)?
>
>Ping-Time: 0.05 ms
>
>Test-Prog is doing the same as INFORMIX-DYNAMIC-SERVER (Block-size 2048
>Bytes)
>
> if ( ( fd = open( "x", O_WRONLY | O_SYNC ) ) == -1 )
>	...
>	for ( i = 0; i < 100000; i++ )
>		...
>     		if ( write( fd, ptr_pc, 2048 ) < 0 )
> ...
>
>What do think about using Informix with drbd?

you DO NOT WANT to use Protocol A or B with a database.
in case of failover, you will lose some of the most recent commits.
A and B are asynchronous protocols.
The only protocol with true transactional semantics is proto C.

using A or B trades data integrity for reduced latency.
you do NOT want to do that with databases.

in typical installations I know about DRBD performes really well, with
db2 or oracle or other applications. so something with your setup is
"special". it may be the Informix, it may be some configuration, it may
be some usage pattern in which drbd simply does not perform currently,
but needs to be tuned in different ways.  I cannot say.

if for some reason informix on drbd does not provide enough performance,
pay someone (linbit?) to analyse why, and fix it. or go for some other
shared storage solution. but I think the latter is the less efficient way :)

	Lars Ellenberg



More information about the drbd-user mailing list