svn commit: r367650 - head/sys/kern
Mateusz Guzik
mjg at FreeBSD.org
Fri Nov 13 19:22:54 UTC 2020
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 */
More information about the svn-src-all
mailing list