--On 13 October 2006 11:46:51 AM +1000 David Chinner <dgc@xxxxxxx> wrote:
Now, I am trying to ease the degradation.
Do you have any idea for resolving the degradation?
Did you see a degradation with your original fix? I suspect
not.
I think that the lsn based flush is tripping over a sync
transaction "optimisation" - if the previous log buffer needs
syncing or is currently being synced, then we don't try to flush the
active log buffer straight away - we wait for the previous log
buffer to complete it's I/O in the hope that we get more
transactions into the current log buffer.
You're referring to the code in xlog_state_sync() for the
XLOG_STATE_ACTIVE case with the big header comment.
It looks to be the one place where we sleep (sv_wait) even
when we haven't got XFS_LOG_SYNC set (which we don't have here AFAICT).
In this case, waiting for the previous iclog to the given
lsn's iclog.
--Tim
|