|
Description
|
O_DSYNC writes over NFS does not lead to having the zp->z_sync_cnt set
and such zfs_write we're observed to be issued with ioflag of FSYNC (not FDSYNC).
zfs_log_write will thus not mark the itx as synchronous.
The write is nevertheless synched at the end of a zfs_write runinng :
if (ioflag & (FSYNC | FDSYNC))
zil_commit(zilog, zp->z_last_itx, zp->z_id);
Large performance degradation (4 to 10X) will be seen for workload that involve
NFS O_DSYNC writes to many different files. Each zil_commit will commit itx
associated with it's own file but not combine with itx from other files.
This will lead to many smaller ZIL transactions with longer global latency.
Over jbod, attached oltp2 benchmark was speed up by 10X.
Over logzilla capable system I saw a 4X increase in performance.
|