Are you setting the FileStoreSync option? If not, it should default to false
(asynchronous writes).
I haven't benchmarked the synchronous writes, so I can't comment on the 75
ms time.
Your assumption #2 is correct. But you don't have to change the
constructors. The default
behavior is to use asynchronous writes. If you see otherwise, let me know or
post a bug
report in JIRA.
_____
From: qui...@li...
[mailto:qui...@li...] On Behalf Of bmazlish
Sent: Thursday, March 22, 2007 6:03 PM
To: qui...@li...
Subject: [Quickfixj-users] FileStore performance
I am trying to understand the performance hit I get by using a FileLogStore.
In reading through the archives of quickfix, the filelogstore appears to add
a marginal performance hit (message by Oren Miller dated 8-8-2006).
However, this is not my experience with quickfix/j. In order to test this
out, I turn off all logging so that the only i/o is the messagestore. When
I run 5000 new order singles through my test program, each call to
Session.sendToTarget takes under a millisecond when using a MemoryStore.
However, when I replace the MemoryStore with a FileStore my performance
drops and each call takes ~75 milliseconds for each call. In digging
through the code, it appears that the randomaccessfiles are being
initialized with the "rwd" mode -- thus requiring every message to get
written to disk.
I have two questions:
1- Is 75 ms reasonable? It seems far greater than the stats I have seen
from the quickfix archive list-- is this a java vs C issue?
2- If i were to change the constructors of the RandomAccessFiles to just use
"rw" mode, I believe I would be safe as long as the OS doesn't crash. Is
this correct?
Thanks for your help.
I am running this on an HP DL145 server class machine running fc4 with
hardware raid scsi drives and JVM 1.5.11.
|