git: 7738118e9a29 - main - vm.objects_swap: disable reporting some information
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 25 Oct 2021 17:34:09 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=7738118e9a298a205b37c256245fd8449acccb0c
commit 7738118e9a298a205b37c256245fd8449acccb0c
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2021-07-13 10:34:31 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2021-10-25 17:34:01 +0000
vm.objects_swap: disable reporting some information
For making the call faster, do not count active/inactive object queues,
and do not report vnode info if any (for tmpfs).
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D31163
---
sys/vm/vm_object.c | 33 ++++++++++++++++++---------------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
index addcf5f2c686..9462e8753afb 100644
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -2526,20 +2526,22 @@ vm_object_list_handler(struct sysctl_req *req, bool swap_only)
kvo->kvo_memattr = obj->memattr;
kvo->kvo_active = 0;
kvo->kvo_inactive = 0;
- TAILQ_FOREACH(m, &obj->memq, listq) {
- /*
- * A page may belong to the object but be
- * dequeued and set to PQ_NONE while the
- * object lock is not held. This makes the
- * reads of m->queue below racy, and we do not
- * count pages set to PQ_NONE. However, this
- * sysctl is only meant to give an
- * approximation of the system anyway.
- */
- if (m->a.queue == PQ_ACTIVE)
- kvo->kvo_active++;
- else if (m->a.queue == PQ_INACTIVE)
- kvo->kvo_inactive++;
+ if (!swap_only) {
+ TAILQ_FOREACH(m, &obj->memq, listq) {
+ /*
+ * A page may belong to the object but be
+ * dequeued and set to PQ_NONE while the
+ * object lock is not held. This makes the
+ * reads of m->queue below racy, and we do not
+ * count pages set to PQ_NONE. However, this
+ * sysctl is only meant to give an
+ * approximation of the system anyway.
+ */
+ if (m->a.queue == PQ_ACTIVE)
+ kvo->kvo_active++;
+ else if (m->a.queue == PQ_INACTIVE)
+ kvo->kvo_inactive++;
+ }
}
kvo->kvo_vn_fileid = 0;
@@ -2547,7 +2549,8 @@ vm_object_list_handler(struct sysctl_req *req, bool swap_only)
kvo->kvo_vn_fsid_freebsd11 = 0;
freepath = NULL;
fullpath = "";
- kvo->kvo_type = vm_object_kvme_type(obj, &vp);
+ vp = NULL;
+ kvo->kvo_type = vm_object_kvme_type(obj, swap_only ? NULL : &vp);
if (vp != NULL) {
vref(vp);
} else if ((obj->flags & OBJ_ANON) != 0) {