]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Autotrim High Load Average Fix
authorKevin Jin <33590050+jxdking@users.noreply.github.com>
Wed, 17 Jan 2024 17:03:58 +0000 (12:03 -0500)
committerGitHub <noreply@github.com>
Wed, 17 Jan 2024 17:03:58 +0000 (09:03 -0800)
Switch from cv_wait() to cv_wait_idle() in vdev_autotrim_wait_kick(),
which should mitigate the high load average while waiting.

Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: jxdking <lostking2008@hotmail.com>
Closes #15781

module/zfs/vdev_trim.c

index 1c54eae40355e51bcea9d306c3386e9b77bdbc7d..7e3c5f684703da162d0289d39a2ceded6b2537b7 100644 (file)
@@ -196,7 +196,8 @@ vdev_autotrim_wait_kick(vdev_t *vd, int num_of_kick)
        for (int i = 0; i < num_of_kick; i++) {
                if (vd->vdev_autotrim_exit_wanted)
                        break;
-               cv_wait(&vd->vdev_autotrim_kick_cv, &vd->vdev_autotrim_lock);
+               cv_wait_idle(&vd->vdev_autotrim_kick_cv,
+                   &vd->vdev_autotrim_lock);
        }
        boolean_t exit_wanted = vd->vdev_autotrim_exit_wanted;
        mutex_exit(&vd->vdev_autotrim_lock);