Autotrim High Load Average Fix

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
This commit is contained in:
Kevin Jin 2024-01-17 12:03:58 -05:00 committed by Brian Behlendorf
parent 2ecc2dfe42
commit 07cf973fe9
1 changed files with 2 additions and 1 deletions

View File

@ -194,7 +194,8 @@ vdev_autotrim_wait_kick(vdev_t *vd, int num_of_kick)
for (int i = 0; i < num_of_kick; i++) { for (int i = 0; i < num_of_kick; i++) {
if (vd->vdev_autotrim_exit_wanted) if (vd->vdev_autotrim_exit_wanted)
break; 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; boolean_t exit_wanted = vd->vdev_autotrim_exit_wanted;
mutex_exit(&vd->vdev_autotrim_lock); mutex_exit(&vd->vdev_autotrim_lock);