diff options
Diffstat (limited to 'usr/src/uts/common/os/kstat_fr.c')
-rw-r--r-- | usr/src/uts/common/os/kstat_fr.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/usr/src/uts/common/os/kstat_fr.c b/usr/src/uts/common/os/kstat_fr.c index 83b817e866..a5f5a6f3c2 100644 --- a/usr/src/uts/common/os/kstat_fr.c +++ b/usr/src/uts/common/os/kstat_fr.c @@ -20,6 +20,7 @@ */ /* * Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ /* @@ -160,6 +161,7 @@ struct { kstat_named_t avenrun_5min; kstat_named_t avenrun_15min; kstat_named_t boot_time; + kstat_named_t nsec_per_tick; } system_misc_kstat = { { "ncpus", KSTAT_DATA_UINT32 }, { "lbolt", KSTAT_DATA_UINT32 }, @@ -171,6 +173,7 @@ struct { { "avenrun_5min", KSTAT_DATA_UINT32 }, { "avenrun_15min", KSTAT_DATA_UINT32 }, { "boot_time", KSTAT_DATA_UINT32 }, + { "nsec_per_tick", KSTAT_DATA_UINT32 }, }; struct { @@ -803,7 +806,6 @@ system_misc_kstat_update(kstat_t *ksp, int rw) { int myncpus = ncpus; int *loadavgp = &avenrun[0]; - int loadavg[LOADAVG_NSTATS]; time_t zone_boot_time; clock_t zone_lbolt; hrtime_t zone_hrtime; @@ -820,17 +822,11 @@ system_misc_kstat_update(kstat_t *ksp, int rw) */ mutex_enter(&cpu_lock); if (pool_pset_enabled()) { - psetid_t mypsid = zone_pset_get(curproc->p_zone); - int error; - myncpus = zone_ncpus_get(curproc->p_zone); ASSERT(myncpus > 0); - error = cpupart_get_loadavg(mypsid, &loadavg[0], - LOADAVG_NSTATS); - ASSERT(error == 0); - loadavgp = &loadavg[0]; } mutex_exit(&cpu_lock); + loadavgp = &curproc->p_zone->zone_avenrun[0]; } if (INGLOBALZONE(curproc)) { @@ -838,9 +834,7 @@ system_misc_kstat_update(kstat_t *ksp, int rw) zone_lbolt = ddi_get_lbolt(); zone_nproc = nproc; } else { - struct timeval tvp; - hrt2tv(curproc->p_zone->zone_zsched->p_mstart, &tvp); - zone_boot_time = tvp.tv_sec; + zone_boot_time = curproc->p_zone->zone_boot_time; zone_hrtime = gethrtime(); zone_lbolt = (clock_t)(NSEC_TO_TICK(zone_hrtime) - @@ -861,6 +855,8 @@ system_misc_kstat_update(kstat_t *ksp, int rw) system_misc_kstat.avenrun_15min.value.ui32 = (uint32_t)loadavgp[2]; system_misc_kstat.boot_time.value.ui32 = (uint32_t) zone_boot_time; + system_misc_kstat.nsec_per_tick.value.ui32 = (uint32_t) + nsec_per_tick; return (0); } |