On Thu, Jan 09, 2020 at 12:58:28PM +0100, Hans Petter Selasky wrote: > Hi Jeff and Konstantin, > > You have a logical breakage after the domainset patches for malloc. The size > used for allocation statistics is not the same like for freeing causing > messed up "vmstat -m".
Sorry, I committed a different patch in r356555 before seeing this. > Also you should audit the code for zero-sized allocations, because upon > alloc, zero-sized is not counted, while on free it is. Can you explain further? A zero-sized allocation should be rounded up to 16 bytes in all paths. > See attached patch. > > --HPS > diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c > index eba9fc3e1ef..aab33873741 100644 > --- a/sys/kern/kern_malloc.c > +++ b/sys/kern/kern_malloc.c > @@ -669,8 +669,10 @@ malloc_domain(size_t size, int *indxp, struct > malloc_type *mtp, int domain, > krequests[size >> KMEM_ZSHIFT]++; > #endif > va = uma_zalloc_domain(zone, NULL, domain, flags); > - if (va != NULL) > + if (__predict_true(va != NULL)) { > size = zone->uz_size; > + malloc_type_zone_allocated(mtp, size, indx); > + } > *indxp = indx; > > return ((void *) va); > @@ -699,7 +701,8 @@ malloc_domainset(size_t size, struct malloc_type *mtp, > struct domainset *ds, > ret = malloc_domain(size, &indx, mtp, domain, flags); > } while (ret == NULL && > vm_domainset_iter_policy(&di, &domain) == 0); > - malloc_type_zone_allocated(mtp, ret == NULL ? 0 : size, indx); > + if (__predict_false(ret == NULL)) > + malloc_type_zone_allocated(mtp, 0, indx); > } else { > /* Policy is handled by kmem. */ > ret = malloc_large(&size, ds, flags); > _______________________________________________ > freebsd-current@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org" _______________________________________________ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"