Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libmemstat/memstat_uma.c
Show First 20 Lines • Show All 419 Lines • ▼ Show 20 Lines | for (uzp = LIST_FIRST(&kz.uk_zones); uzp != NULL; uzp = | ||||
*/ | */ | ||||
_memstat_mt_reset_stats(mtp, mp_maxid + 1); | _memstat_mt_reset_stats(mtp, mp_maxid + 1); | ||||
mtp->mt_numallocs = kvm_counter_u64_fetch(kvm, | mtp->mt_numallocs = kvm_counter_u64_fetch(kvm, | ||||
(unsigned long )uz.uz_allocs); | (unsigned long )uz.uz_allocs); | ||||
mtp->mt_numfrees = kvm_counter_u64_fetch(kvm, | mtp->mt_numfrees = kvm_counter_u64_fetch(kvm, | ||||
(unsigned long )uz.uz_frees); | (unsigned long )uz.uz_frees); | ||||
mtp->mt_failures = kvm_counter_u64_fetch(kvm, | mtp->mt_failures = kvm_counter_u64_fetch(kvm, | ||||
(unsigned long )uz.uz_fails); | (unsigned long )uz.uz_fails); | ||||
mtp->mt_xdomain = kvm_counter_u64_fetch(kvm, | |||||
(unsigned long )uz.uz_xdomain); | |||||
mtp->mt_sleeps = uz.uz_sleeps; | mtp->mt_sleeps = uz.uz_sleeps; | ||||
/* See comment above in memstat_sysctl_uma(). */ | /* See comment above in memstat_sysctl_uma(). */ | ||||
if (mtp->mt_numallocs < mtp->mt_numfrees) | if (mtp->mt_numallocs < mtp->mt_numfrees) | ||||
mtp->mt_numallocs = mtp->mt_numfrees; | mtp->mt_numallocs = mtp->mt_numfrees; | ||||
mtp->mt_xdomain = uz.uz_xdomain; | |||||
if (kz.uk_flags & UMA_ZFLAG_INTERNAL) | if (kz.uk_flags & UMA_ZFLAG_INTERNAL) | ||||
goto skip_percpu; | goto skip_percpu; | ||||
for (i = 0; i < mp_maxid + 1; i++) { | for (i = 0; i < mp_maxid + 1; i++) { | ||||
if (!CPU_ISSET(i, &all_cpus)) | if (!CPU_ISSET(i, &all_cpus)) | ||||
continue; | continue; | ||||
ucp = &ucp_array[i]; | ucp = &ucp_array[i]; | ||||
mtp->mt_numallocs += ucp->uc_allocs; | mtp->mt_numallocs += ucp->uc_allocs; | ||||
mtp->mt_numfrees += ucp->uc_frees; | mtp->mt_numfrees += ucp->uc_frees; | ||||
mtp->mt_free += ucp->uc_allocbucket.ucb_cnt; | mtp->mt_free += ucp->uc_allocbucket.ucb_cnt; | ||||
mtp->mt_free += ucp->uc_freebucket.ucb_cnt; | mtp->mt_free += ucp->uc_freebucket.ucb_cnt; | ||||
mtp->mt_free += ucp->uc_crossbucket.ucb_cnt; | mtp->mt_free += ucp->uc_crossbucket.ucb_cnt; | ||||
} | } | ||||
skip_percpu: | skip_percpu: | ||||
mtp->mt_size = kz.uk_size; | mtp->mt_size = kz.uk_size; | ||||
mtp->mt_rsize = kz.uk_rsize; | mtp->mt_rsize = kz.uk_rsize; | ||||
mtp->mt_memalloced = mtp->mt_numallocs * mtp->mt_size; | mtp->mt_memalloced = mtp->mt_numallocs * mtp->mt_size; | ||||
mtp->mt_memfreed = mtp->mt_numfrees * mtp->mt_size; | mtp->mt_memfreed = mtp->mt_numfrees * mtp->mt_size; | ||||
mtp->mt_bytes = mtp->mt_memalloced - mtp->mt_memfreed; | mtp->mt_bytes = mtp->mt_memalloced - mtp->mt_memfreed; | ||||
mtp->mt_countlimit = uz.uz_max_items; | mtp->mt_countlimit = uz.uz_max_items; | ||||
mtp->mt_byteslimit = mtp->mt_countlimit * mtp->mt_size; | mtp->mt_byteslimit = mtp->mt_countlimit * mtp->mt_size; | ||||
mtp->mt_count = mtp->mt_numallocs - mtp->mt_numfrees; | mtp->mt_count = mtp->mt_numallocs - mtp->mt_numfrees; | ||||
for (i = 0; i < ndomains; i++) { | for (i = 0; i < ndomains; i++) { | ||||
ret = kread(kvm, &uz.uz_domain[i], &uzd, | ret = kread(kvm, | ||||
sizeof(uzd), 0); | &uz.uz_cpu[mp_maxid + 1] + i * sizeof(uzd), | ||||
&uzd, sizeof(uzd), 0); | |||||
if (ret != 0) | if (ret != 0) | ||||
continue; | continue; | ||||
for (ubp = | for (ubp = | ||||
STAILQ_FIRST(&uzd.uzd_buckets); | STAILQ_FIRST(&uzd.uzd_buckets); | ||||
ubp != NULL; | ubp != NULL; | ||||
ubp = STAILQ_NEXT(&ub, ub_link)) { | ubp = STAILQ_NEXT(&ub, ub_link)) { | ||||
ret = kread(kvm, ubp, &ub, | ret = kread(kvm, ubp, &ub, | ||||
sizeof(ub), 0); | sizeof(ub), 0); | ||||
Show All 23 Lines |