Deleted Added
full compact
vm_meter.c (77582) vm_meter.c (79224)
1/*
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 17 unchanged lines hidden (view full) ---

26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)vm_meter.c 8.4 (Berkeley) 1/4/94
1/*
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 17 unchanged lines hidden (view full) ---

26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)vm_meter.c 8.4 (Berkeley) 1/4/94
34 * $FreeBSD: head/sys/vm/vm_meter.c 77582 2001-06-01 13:23:28Z tmm $
34 * $FreeBSD: head/sys/vm/vm_meter.c 79224 2001-07-04 16:20:28Z dillon $
35 */
36
37#include <sys/param.h>
38#include <sys/systm.h>
39#include <sys/kernel.h>
40#include <sys/lock.h>
41#include <sys/mutex.h>
42#include <sys/proc.h>

--- 97 unchanged lines hidden (view full) ---

140 vm_map_t map;
141 int paging;
142
143 totalp = &total;
144 bzero(totalp, sizeof *totalp);
145 /*
146 * Mark all objects as inactive.
147 */
35 */
36
37#include <sys/param.h>
38#include <sys/systm.h>
39#include <sys/kernel.h>
40#include <sys/lock.h>
41#include <sys/mutex.h>
42#include <sys/proc.h>

--- 97 unchanged lines hidden (view full) ---

140 vm_map_t map;
141 int paging;
142
143 totalp = &total;
144 bzero(totalp, sizeof *totalp);
145 /*
146 * Mark all objects as inactive.
147 */
148 mtx_lock(&vm_mtx);
148 GIANT_REQUIRED;
149 TAILQ_FOREACH(object, &vm_object_list, object_list)
150 vm_object_clear_flag(object, OBJ_ACTIVE);
149 TAILQ_FOREACH(object, &vm_object_list, object_list)
150 vm_object_clear_flag(object, OBJ_ACTIVE);
151 mtx_unlock(&vm_mtx);
152 /*
153 * Calculate process statistics.
154 */
155 sx_slock(&allproc_lock);
156 LIST_FOREACH(p, &allproc, p_list) {
157 if (p->p_flag & P_SYSTEM)
158 continue;
159 mtx_lock_spin(&sched_lock);

--- 34 unchanged lines hidden (view full) ---

194 }
195 break;
196 }
197 mtx_unlock_spin(&sched_lock);
198 /*
199 * Note active objects.
200 */
201 paging = 0;
151 /*
152 * Calculate process statistics.
153 */
154 sx_slock(&allproc_lock);
155 LIST_FOREACH(p, &allproc, p_list) {
156 if (p->p_flag & P_SYSTEM)
157 continue;
158 mtx_lock_spin(&sched_lock);

--- 34 unchanged lines hidden (view full) ---

193 }
194 break;
195 }
196 mtx_unlock_spin(&sched_lock);
197 /*
198 * Note active objects.
199 */
200 paging = 0;
202 mtx_lock(&vm_mtx);
203 for (map = &p->p_vmspace->vm_map, entry = map->header.next;
204 entry != &map->header; entry = entry->next) {
205 if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) ||
206 entry->object.vm_object == NULL)
207 continue;
208 vm_object_set_flag(entry->object.vm_object, OBJ_ACTIVE);
209 paging |= entry->object.vm_object->paging_in_progress;
210 }
201 for (map = &p->p_vmspace->vm_map, entry = map->header.next;
202 entry != &map->header; entry = entry->next) {
203 if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) ||
204 entry->object.vm_object == NULL)
205 continue;
206 vm_object_set_flag(entry->object.vm_object, OBJ_ACTIVE);
207 paging |= entry->object.vm_object->paging_in_progress;
208 }
211 mtx_unlock(&vm_mtx);
212 if (paging)
213 totalp->t_pw++;
214 }
215 sx_sunlock(&allproc_lock);
216 /*
217 * Calculate object memory usage statistics.
218 */
209 if (paging)
210 totalp->t_pw++;
211 }
212 sx_sunlock(&allproc_lock);
213 /*
214 * Calculate object memory usage statistics.
215 */
219 mtx_lock(&vm_mtx);
220 TAILQ_FOREACH(object, &vm_object_list, object_list) {
221 /*
222 * devices, like /dev/mem, will badly skew our totals
223 */
224 if (object->type == OBJT_DEVICE)
225 continue;
226 totalp->t_vm += object->size;
227 totalp->t_rm += object->resident_page_count;

--- 7 unchanged lines hidden (view full) ---

235 totalp->t_rmshr += object->resident_page_count;
236 if (object->flags & OBJ_ACTIVE) {
237 totalp->t_avmshr += object->size;
238 totalp->t_armshr += object->resident_page_count;
239 }
240 }
241 }
242 totalp->t_free = cnt.v_free_count + cnt.v_cache_count;
216 TAILQ_FOREACH(object, &vm_object_list, object_list) {
217 /*
218 * devices, like /dev/mem, will badly skew our totals
219 */
220 if (object->type == OBJT_DEVICE)
221 continue;
222 totalp->t_vm += object->size;
223 totalp->t_rm += object->resident_page_count;

--- 7 unchanged lines hidden (view full) ---

231 totalp->t_rmshr += object->resident_page_count;
232 if (object->flags & OBJ_ACTIVE) {
233 totalp->t_avmshr += object->size;
234 totalp->t_armshr += object->resident_page_count;
235 }
236 }
237 }
238 totalp->t_free = cnt.v_free_count + cnt.v_cache_count;
243 mtx_unlock(&vm_mtx);
244 return (sysctl_handle_opaque(oidp, totalp, sizeof total, req));
245}
246
247SYSCTL_PROC(_vm, VM_METER, vmmeter, CTLTYPE_OPAQUE|CTLFLAG_RD,
248 0, sizeof(struct vmtotal), vmtotal, "S,vmtotal",
249 "System virtual memory statistics");
250SYSCTL_NODE(_vm, OID_AUTO, stats, CTLFLAG_RW, 0, "VM meter stats");
251SYSCTL_NODE(_vm_stats, OID_AUTO, sys, CTLFLAG_RW, 0, "VM meter sys stats");

--- 114 unchanged lines hidden ---
239 return (sysctl_handle_opaque(oidp, totalp, sizeof total, req));
240}
241
242SYSCTL_PROC(_vm, VM_METER, vmmeter, CTLTYPE_OPAQUE|CTLFLAG_RD,
243 0, sizeof(struct vmtotal), vmtotal, "S,vmtotal",
244 "System virtual memory statistics");
245SYSCTL_NODE(_vm, OID_AUTO, stats, CTLFLAG_RW, 0, "VM meter stats");
246SYSCTL_NODE(_vm_stats, OID_AUTO, sys, CTLFLAG_RW, 0, "VM meter sys stats");

--- 114 unchanged lines hidden ---