ZFS write stalls (starving reads) and tuning zfs_write_limit_override

Nikolay Denev ndenev at gmail.com
Thu Feb 25 12:02:00 UTC 2010


On Feb 25, 2010, at 1:58 PM, Sam Fourman Jr. wrote:

>> Hi,
>> 
>> What I posted was not a patch, but just the lines need to be added to dsl_pool.c and it should work for either 8 or CURRENT.
>> Here is a patch for 8-STABLE that I just generated, can you try that one (pasting in the email in case the email eats the attachment
>> ):
>> 
>> --- .zfs/snapshot/orig/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c        2009-08-24 07:30:23.677549074 +0300
>> +++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c   2010-02-19 09:17:50.058020997 +0200
>> @@ -47,6 +47,11 @@
>>  uint64_t zfs_write_limit_override = 0;
>>  extern uint64_t zfs_write_limit_min;
>> 
>> +SYSCTL_DECL(_vfs_zfs);
>> +TUNABLE_ULONG("vfs.zfs.write_limit_override", &zfs_write_limit_override);
>> +SYSCTL_ULONG(_vfs_zfs, OID_AUTO, zfs_write_limit_override, CTLFLAG_RW, &zfs_write_limit_override, 0,
>> +    "Override maximum TXG size");
>> +
>>  kmutex_t zfs_write_limit_lock;
>> 
>>  static pgcnt_t old_physmem = 0;
>> 
> 
> 
> what setting have you found to be the best for zfs_write_limit_override ?
> 
> Sam Fourman Jr.
> Fourman Networks


Hi,

I think you should experiment. Here I have 2G of ram, and have found 256M for the zfs_write_limit_override to provide
smooth writes without the stalls. 
I started one console with zpool iostat -v 1 and started writing to one iSCSI exported zvol, and played with the sysctl until
the writes were steady.

Regards,
Niki Denev



More information about the freebsd-fs mailing list