mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
L2ARC: Restrict write size to 1/4 of the device
PR #15457 exposed weird logic in L2ARC write sizing. If it appeared bigger than device size, instead of liming write it reset all the system-wide tunables to their default. Aside of being excessive, it did not actually help with the problem, still allowing infinite loop to happen. This patch removes the tunables reverting logic, but instead limits L2ARC writes (or at least eviction/trim) to 1/4 of the capacity. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: George Amanakis <gamanakis@gmail.com> Signed-off-by: Alexander Motin <mav@FreeBSD.org> Sponsored by: iXsystems, Inc. Closes #15519
This commit is contained in:
committed by
Brian Behlendorf
parent
a8c29a79df
commit
2e259c6f00
+6
-14
@@ -31,15 +31,13 @@
|
||||
# 2. Set l2arc_write_max to a value larger than the cache device.
|
||||
# 3. Create a file larger than the cache device and random read
|
||||
# for 10 sec.
|
||||
# 4. Verify that l2arc_write_max is set back to the default.
|
||||
# 5. Set l2arc_write_max to a value less than the cache device size but
|
||||
# 4. Set l2arc_write_max to a value less than the cache device size but
|
||||
# larger than the default (256MB).
|
||||
# 6. Record the l2_size.
|
||||
# 7. Random read for 1 sec.
|
||||
# 8. Record the l2_size again.
|
||||
# 9. If (6) <= (8) then we have not looped around yet.
|
||||
# 10. If (6) > (8) then we looped around. Break out of the loop and test.
|
||||
# 11. Destroy pool.
|
||||
# 5. Record the l2_size.
|
||||
# 6. Random read for 1 sec.
|
||||
# 7. Record the l2_size again.
|
||||
# 8. If (5) <= (7) then we have not looped around yet.
|
||||
# 9. Destroy pool.
|
||||
#
|
||||
|
||||
verify_runnable "global"
|
||||
@@ -93,10 +91,6 @@ log_must zfs set relatime=off $TESTPOOL
|
||||
log_must fio $FIO_SCRIPTS/mkfiles.fio
|
||||
log_must fio $FIO_SCRIPTS/random_reads.fio
|
||||
|
||||
typeset write_max2=$(get_tunable L2ARC_WRITE_MAX)
|
||||
|
||||
log_must test $write_max2 -eq $write_max
|
||||
|
||||
log_must set_tunable32 L2ARC_WRITE_MAX $(( 256 * 1024 * 1024 ))
|
||||
export RUNTIME=1
|
||||
|
||||
@@ -108,8 +102,6 @@ while $do_once || [[ $l2_size1 -le $l2_size2 ]]; do
|
||||
do_once=false
|
||||
done
|
||||
|
||||
log_must test $l2_size1 -gt $l2_size2
|
||||
|
||||
log_must zpool destroy $TESTPOOL
|
||||
|
||||
log_pass "Looping around a cache device succeeds."
|
||||
|
||||
Reference in New Issue
Block a user