Author: mjg
Date: Fri Nov 13 19:22:53 2020
New Revision: 367650
URL: https://svnweb.freebsd.org/changeset/base/367650

Log:
  malloc: retire MALLOC_PROFILE
  
  The global array has prohibitive performance impact on multicore systems.
  
  The same data (and more) can be obtained with dtrace.
  
  Reviewed by:  markj
  Differential Revision:        https://reviews.freebsd.org/D27199

Modified:
  head/sys/kern/kern_malloc.c

Modified: head/sys/kern/kern_malloc.c
==============================================================================
--- head/sys/kern/kern_malloc.c Fri Nov 13 19:09:21 2020        (r367649)
+++ head/sys/kern/kern_malloc.c Fri Nov 13 19:22:53 2020        (r367650)
@@ -223,12 +223,6 @@ SYSCTL_PROC(_vm_malloc, OID_AUTO, zone_sizes,
  */
 struct mtx malloc_mtx;
 
-#ifdef MALLOC_PROFILE
-uint64_t krequests[KMEM_ZSIZE + 1];
-
-static int sysctl_kern_mprof(SYSCTL_HANDLER_ARGS);
-#endif
-
 static int sysctl_kern_malloc_stats(SYSCTL_HANDLER_ARGS);
 
 #if defined(MALLOC_MAKE_FAILURES) || (MALLOC_DEBUG_MAXZONES > 1)
@@ -635,9 +629,6 @@ void *
                        size = (size & ~KMEM_ZMASK) + KMEM_ZBASE;
                indx = kmemsize[size >> KMEM_ZSHIFT];
                zone = kmemzones[indx].kz_zone[mtp_get_subzone(mtp)];
-#ifdef MALLOC_PROFILE
-               krequests[size >> KMEM_ZSHIFT]++;
-#endif
                va = uma_zalloc(zone, flags);
                if (va != NULL)
                        size = zone->uz_size;
@@ -673,9 +664,6 @@ malloc_domain(size_t *sizep, int *indxp, struct malloc
                size = (size & ~KMEM_ZMASK) + KMEM_ZBASE;
        indx = kmemsize[size >> KMEM_ZSHIFT];
        zone = kmemzones[indx].kz_zone[mtp_get_subzone(mtp)];
-#ifdef MALLOC_PROFILE
-       krequests[size >> KMEM_ZSHIFT]++;
-#endif
        va = uma_zalloc_domain(zone, NULL, domain, flags);
        if (va != NULL)
                *sizep = zone->uz_size;
@@ -1495,52 +1483,3 @@ DB_SHOW_COMMAND(multizone_matches, db_show_multizone_m
 }
 #endif /* MALLOC_DEBUG_MAXZONES > 1 */
 #endif /* DDB */
-
-#ifdef MALLOC_PROFILE
-
-static int
-sysctl_kern_mprof(SYSCTL_HANDLER_ARGS)
-{
-       struct sbuf sbuf;
-       uint64_t count;
-       uint64_t waste;
-       uint64_t mem;
-       int error;
-       int rsize;
-       int size;
-       int i;
-
-       waste = 0;
-       mem = 0;
-
-       error = sysctl_wire_old_buffer(req, 0);
-       if (error != 0)
-               return (error);
-       sbuf_new_for_sysctl(&sbuf, NULL, 128, req);
-       sbuf_printf(&sbuf, 
-           "\n  Size                    Requests  Real Size\n");
-       for (i = 0; i < KMEM_ZSIZE; i++) {
-               size = i << KMEM_ZSHIFT;
-               rsize = kmemzones[kmemsize[i]].kz_size;
-               count = (long long unsigned)krequests[i];
-
-               sbuf_printf(&sbuf, "%6d%28llu%11d\n", size,
-                   (unsigned long long)count, rsize);
-
-               if ((rsize * count) > (size * count))
-                       waste += (rsize * count) - (size * count);
-               mem += (rsize * count);
-       }
-       sbuf_printf(&sbuf,
-           "\nTotal memory used:\t%30llu\nTotal Memory wasted:\t%30llu\n",
-           (unsigned long long)mem, (unsigned long long)waste);
-       error = sbuf_finish(&sbuf);
-       sbuf_delete(&sbuf);
-       return (error);
-}
-
-SYSCTL_OID(_kern, OID_AUTO, mprof,
-    CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, NULL, 0,
-    sysctl_kern_mprof, "A",
-    "Malloc Profiling");
-#endif /* MALLOC_PROFILE */
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to