git: e76c0108990b - main - Fix inverse sleep logic in buf_daemon().
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 16 Jan 2022 00:36:23 UTC
The branch main has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=e76c0108990b52a25f548cba4c0f1b8db59c6b8b commit e76c0108990b52a25f548cba4c0f1b8db59c6b8b Author: Alexander Motin <mav@FreeBSD.org> AuthorDate: 2022-01-16 00:32:36 +0000 Commit: Alexander Motin <mav@FreeBSD.org> CommitDate: 2022-01-16 00:32:36 +0000 Fix inverse sleep logic in buf_daemon(). Before commit 3cec5c77d617 buf_daemon() went to longer 1s sleep if numdirtybuffers <= lodirtybuffers. After that commit new condition !BIT_EMPTY(BUF_DOMAINS, &bdlodirty) got opposite -- true when one or more more domains is above lodirtybuffers. As result, on freshly booted system with no dirty buffers buf_daemon() wakes up 10 times per second and probably only 1 time per second when there is actual work to do. MFC after: 1 week Reviewed by: kib, markj Tested by: pho Differential revision: https://reviews.freebsd.org/D33890 --- sys/kern/vfs_bio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index acd16ecdf3fe..8e79943e3fee 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -3464,7 +3464,7 @@ buf_daemon() * to avoid endless loops on unlockable buffers. */ mtx_lock(&bdlock); - if (!BIT_EMPTY(BUF_DOMAINS, &bdlodirty)) { + if (BIT_EMPTY(BUF_DOMAINS, &bdlodirty)) { /* * We reached our low water mark, reset the * request and sleep until we are needed again.