Go to main content

man pages section 3: Extended Library Functions, Volume 4

Exit Print View

Updated: Thursday, June 13, 2019
 
 

zs_zone_limit_used_pct(3ZONESTAT)

Name

zs_zone, zs_zone_list, zs_zone_walk, zs_zone_property, zs_zone_limit_type, zs_zone_limit_uint64, zs_zone_limit_used_uint64, zs_zone_limit_time, zs_zone_limit_used_time, zs_zone_limit_used_pct - libzonestat zone accessor methods

Synopsis

cc [ flag ... ] file... -lzonestat [ libary ... ]
#include <zonestat.h>

int zs_zone_list(zs_usage_t usage, zs_zone_t *zonelist, int num);
zs_zone_t zs_zone_walk(zs_usage_t usage, zs_zone_t zone);
zs_property_t zs_zone_property(zs_zone_t zone,
     zs_zone_property_t prop);
zs_limit_type_t zs_zone_limit_type(zs_limit_t limit);
uint64_t zs_zone_limit_uint64(zs_zone_t zone, zs_limit_t limit);
uint64_t zs_zone_limit_used_uint64(zs_zone_t zone, zs_limit_t limit);
void zs_zone_limit_time(zs_zone_t zone, zs_limit_t limit,
     timestruc_t *ts);
void zs_zone_limit_used_time(zs_zone_t zone, zs_limit_t limit,
     timestruc_t *ts);
uint_t zs_zone_limit_used_pct(zs_zone_t zone, zs_limit_t limit);

Description

These functions are used to access the zones in the usage object. These zones are the zones which were running at the time when the zs_usage_read(3ZONESTAT) was called and returned the usage object.

The zs_zone_list() function returns the number of zs_zone_t objects contained within usage. If zonelist is non-null, the zonelist array will be filled with up to num zs_zone_t objects. The zonelist array must be first allocated by the caller. The first zone returned in the array will always be the global zone. The remaining zones will be in alphanumeric ordered by zone name.

The zs_zone_walk() function walks the list of zones in usage. If zone is NULL, the first zone will be returned, which is always the global zone. Otherwise, zones are returned in alphanumeric order. If there are no more zones in usage, NULL is returned.

The zs_zone_property() function returns a property of zone based on property. See libzonestat(3LIB) for a description of the ZS_ZONE_PROP_* property codes.

The zs_zone_limit_type() function returns the data type of the zone limit limit. See libzonestat(3LIB) for the description of the ZS_LIMIT_* limit codes. The following types can be returned:

ZS_LIMIT_TYPE_TIME

The limit and its usage can be fetched in terms of time. This limit can be passed to zs_zone_limit_time() and zs_zone_limit_used_time(), as well as all other zs_zone_limit_*() functions.

ZS_LIMIT_TYPE_COUNT

The limit reflects a quantity of discrete objects. For instance, a limit on the number of processes.

ZS_LIMIT_TYPE_BYTES

The limit reflects a quantity of bytes.

The zs_zone_limit_uint64() function returns the value of the configured limit on zone. If limit is not configured for zone, ZS_LIMIT_NONE is returned. For example, zone may not be configured with the ZS_LIMIT_CPU limit.

The zs_zone_limit_used_uint64() function returns the usage by zone of the resource capped by limit. If limit is not configured for zone, ZS_LIMIT_NONE is returned. For example, zone may not be configured with the ZS_LIMIT_CPU limit.

The zs_zone_limit_time() function sets ts to the quantity of time available to zone by the configured limit. ts must be allocated by the caller. For example, if zone has a ZS_LIMIT_CPU of 200, meaning 2 CPUs and the zone has been running for 10 seconds, then the quantity of time available to the zone would be 20 seconds (2 CPUs * 10 seconds). If limit is not configured for the zone, ts is set to zero seconds and nanoseconds. This function can be called only if limit is of type ZS_LIMIT_TYPE_TIME.

The zs_zone_limit_used_time() function sets ts to the quantity of time used by zone on the resource capped by limit. ts must be allocated by the caller. If limit is not configured for the zone, ts is set to zero seconds and nanoseconds. This function can be called only if limit is of type ZS_LIMIT_TYPE_TIME.

The zs_zone_limit_used_pct() function returns the percent of limit used by zone. The value returned is the percentage * 100. For instance, 50 percent is returned as 5000. If limit is not configured for zone, ZS_PCT_NONE is returned.

All the ZS_LIMIT_* limit codes are described in libzonestat(3LIB).

Return Values

See Description.

Errors

If a zs_zone_*() function is called with an invalid limit code, the function will abort with abort(3C).

Examples

Example 1 Retrieve information about each zone in a usage object.

The following example traverses all zones in a usage object, retrieving information about each zone.

#include <zonestat.h>
...
extern zs_usage_t usage;        /* assume returned by zs_usage_read() */
...
zs_zone_t zone;
zs_property_t prop;
char * zonename;
uint64_t maxprocs;
uint64_t usedprocs;

for (zone = zs_zone_first(usage); zone != NULL;
    zone = zs_zone_next(usage, zone)) {

/* Get zonename */
prop = zs_zone_property(zone, ZS_ZONE_PROP_NAME);
zonename = zs_property_string(prop));

/* Get max and used processes */
maxprocs = zs_zone_limit_uint64(zone, ZS_LIMIT_PROCESSES);
usedprocs = zs_zone_limit_used_uint64(zone, ZS_LIMIT_PROCESSES);
}

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Committed
MT-Level
Safe

See Also

zonestat(1), abort(3C), libpool(3LIB), libzonestat(3LIB), zs_open(3ZONESTAT), zs_open(3ZONESTAT), zs_property(3ZONESTAT), zs_pset(3ZONESTAT), zs_pset_zone(3ZONESTAT), zs_resource(3ZONESTAT), zs_usage(3ZONESTAT), attributes(7), resource-controls(7), pooladm(8), psrset(8), rcapadm(8), swap(8), zoneadm(8), zonestatd(8)