svn commit: r250588 - user/attilio/jeff-numa/sys/vm

Attilio Rao attilio at FreeBSD.org
Mon May 13 02:38:06 UTC 2013


Author: attilio
Date: Mon May 13 02:38:05 2013
New Revision: 250588
URL: http://svnweb.freebsd.org/changeset/base/250588

Log:
  Report the number of free pages broken per domain and not in unified way.
  This helps in showing the free pages distribution.
  Sync DDB output with it.
  
  Sponsored by:	EMC / Isilon storage division
  Requested by:	alc

Modified:
  user/attilio/jeff-numa/sys/vm/vm_phys.c

Modified: user/attilio/jeff-numa/sys/vm/vm_phys.c
==============================================================================
--- user/attilio/jeff-numa/sys/vm/vm_phys.c	Mon May 13 01:28:09 2013	(r250587)
+++ user/attilio/jeff-numa/sys/vm/vm_phys.c	Mon May 13 02:38:05 2013	(r250588)
@@ -148,33 +148,38 @@ static int
 sysctl_vm_phys_free(SYSCTL_HANDLER_ARGS)
 {
 	struct sbuf sbuf;
-	int dom, error, flind, lcnt, oind, pind;
+	struct vm_freelist *fl;
+	int dom, error, flind, oind, pind;
 
 	error = sysctl_wire_old_buffer(req, 0);
 	if (error != 0)
 		return (error);
-	sbuf_new_for_sysctl(&sbuf, NULL, 128, req);
-	for (flind = 0; flind < vm_nfreelists; flind++) {
-		sbuf_printf(&sbuf, "\nFREE LIST %d:\n"
-		    "\n  ORDER (SIZE)  |  NUMBER"
-		    "\n              ", flind);
-		for (pind = 0; pind < VM_NFREEPOOL; pind++)
-			sbuf_printf(&sbuf, "  |  POOL %d", pind);
-		sbuf_printf(&sbuf, "\n--            ");
-		for (pind = 0; pind < VM_NFREEPOOL; pind++)
-			sbuf_printf(&sbuf, "-- --      ");
-		sbuf_printf(&sbuf, "--\n");
-		for (oind = VM_NFREEORDER - 1; oind >= 0; oind--) {
-			sbuf_printf(&sbuf, "  %2d (%6dK)", oind,
-			    1 << (PAGE_SHIFT - 10 + oind));
-			for (pind = 0; pind < VM_NFREEPOOL; pind++) {
-				lcnt = 0;
-				for (dom = 0; dom < vm_ndomains; dom++)
-		lcnt += vm_phys_free_queues[dom][flind][pind][oind].lcnt;
-				sbuf_printf(&sbuf, "  |  %6d", lcnt);
+	sbuf_new_for_sysctl(&sbuf, NULL, 128 * vm_ndomains, req);
+	for (dom = 0; dom < vm_ndomains; dom++) {
+		sbuf_printf(&sbuf,"DOMAIN: %d\n", dom);
+		for (flind = 0; flind < vm_nfreelists; flind++) {
+			sbuf_printf(&sbuf, "FREE LIST %d:\n"
+			    "\n  ORDER (SIZE)  |  NUMBER"
+			    "\n              ", flind);
+			for (pind = 0; pind < VM_NFREEPOOL; pind++)
+				sbuf_printf(&sbuf, "  |  POOL %d", pind);
+			sbuf_printf(&sbuf, "\n--            ");
+			for (pind = 0; pind < VM_NFREEPOOL; pind++)
+				sbuf_printf(&sbuf, "-- --      ");
+			sbuf_printf(&sbuf, "--\n");
+			for (oind = VM_NFREEORDER - 1; oind >= 0; oind--) {
+				sbuf_printf(&sbuf, "  %2d (%6dK)", oind,
+				    1 << (PAGE_SHIFT - 10 + oind));
+				for (pind = 0; pind < VM_NFREEPOOL; pind++) {
+				fl = vm_phys_free_queues[dom][flind][pind];
+					sbuf_printf(&sbuf, "  |  %6.6d",
+					    fl[oind].lcnt);
+				}
+				sbuf_printf(&sbuf, "\n");
 			}
 			sbuf_printf(&sbuf, "\n");
 		}
+		sbuf_printf(&sbuf, "\n");
 	}
 	error = sbuf_finish(&sbuf);
 	sbuf_delete(&sbuf);
@@ -957,10 +962,11 @@ DB_SHOW_COMMAND(freepages, db_show_freep
 	int flind, oind, pind, dom;
 
 	for (dom = 0; dom < vm_ndomains; dom++) {
+		db_printf("DOMAIN: %d\n", dom);
 		for (flind = 0; flind < vm_nfreelists; flind++) {
-			db_printf("DOMAIN %d FREE LIST %d:\n"
+			db_printf("FREE LIST %d:\n"
 			    "\n  ORDER (SIZE)  |  NUMBER"
-			    "\n              ", dom, flind);
+			    "\n              ", flind);
 			for (pind = 0; pind < VM_NFREEPOOL; pind++)
 				db_printf("  |  POOL %d", pind);
 			db_printf("\n--            ");
@@ -971,13 +977,14 @@ DB_SHOW_COMMAND(freepages, db_show_freep
 				db_printf("  %2.2d (%6.6dK)", oind,
 				    1 << (PAGE_SHIFT - 10 + oind));
 				for (pind = 0; pind < VM_NFREEPOOL; pind++) {
-					fl = vm_phys_free_queues[dom][flind][pind];
+				fl = vm_phys_free_queues[dom][flind][pind];
 					db_printf("  |  %6.6d", fl[oind].lcnt);
 				}
 				db_printf("\n");
 			}
 			db_printf("\n");
 		}
+		db_printf("\n");
 	}
 }
 #endif


More information about the svn-src-user mailing list