2011-06-30 11:47, Sašo Kiselkov пишет:
On 06/30/2011 02:49 AM, Jim Klimov wrote:
2011-06-30 2:21, Sašo Kiselkov пишет:
On 06/29/2011 02:33 PM, Sašo Kiselkov wrote:
Also there is a buffer-size limit, like this (384Mb):
set zfs:zfs_write_limit_override = 0x18000000

or on command-line like this:
# echo zfs_write_limit_override/W0t402653184 | mdb -kw
Currently my value for this is 0. How should I set it? I'm writing
~15MB/s and would like txg flushes to occur at most once every 10
seconds. Should I set it to 150MB then?

We had similar spikes with big writes to a Thumper with SXCE in the
pre-90's
builds, when the system would stall for seconds while flushing a
30-second TXG
full of data. Adding a reasonable megabyte limit solved the
unresponsiveness
problem for us, by making these flush-writes rather small and quick.
I need to do the opposite - I don't need to shorten the interval of
writes, I need to increase it. Can I do that using
zfs_write_limit_override?
Just as a folloup, I've had a look at the tunables in dsl_pool.c and
found that I could potentially influence the write pressure calculation
by tuning zfs_txg_synctime_ms - do you think increasing this value from
its default (1000ms) help me lower the write scheduling frequency? (I
don't mind if a txg write takes even twice as long, my application
buffers are on average 6 seconds long.)

Regards,
--
Saso
It might help. In my limited testing on oi_148a,
it seems that zfs_txg_synctime_ms and zfs_txg_timeout
are linked somehow (i.e. changing one value changed the
other accordingly). So in effect they may be two names
for the same tunable (one in single units of secs, another
in thousands of msecs).
Well, to my understanding, zfs_txg_timeout is the timer limit on
flushing pending txgs to disk - if the timer fires the current txg is
written to disk regardless of its size. Otherwise the txg scheduling
algorithm should take into account I/O pressure on the pool, estimate
the remaining write bandwidth and fire when it estimates that a txg
commit would overflow zfs_txg_synctime[_ms]. I tried increasing this
value to 2000 or 3000, but without an effect - prehaps I need to set it
at pool mount time or in /etc/system. Could somebody with more knowledge
of these internals please chime in?


Somewhere in our discussion the "Reply-to-all" was lost.
Back to the list :)

Saso: Did you try setting both the timeout limit and the
megabyte limit values, and did you see system IO patterns
correlate with these values?

My understanding was lke yours above, so if things are
different in reality - I'm interested to know too.

PS: I don't think you wrote: which OS version do you use?

//Jim


_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to