Print this page
OS-399 zone phys. mem. cap should be a rctl and have associated kstat
*** 19,28 ****
--- 19,29 ----
* CDDL HEADER END
*/
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, Joyent, Inc. All rights reserved.
*/
#include <alloca.h>
#include <assert.h>
#include <dirent.h>
#include <dlfcn.h>
*** 2188,2198 ****
return (0);
}
return (rctlblk_get_value(rblk));
}
! #define ZSD_NUM_RCTL_VALS 19
/*
* Fetch the limit information for a zone. This uses zone_enter() as the
* getrctl(2) system call only returns rctl information for the zone of
* the caller.
--- 2189,2199 ----
return (0);
}
return (rctlblk_get_value(rblk));
}
! #define ZSD_NUM_RCTL_VALS 20
/*
* Fetch the limit information for a zone. This uses zone_enter() as the
* getrctl(2) system call only returns rctl information for the zone of
* the caller.
*** 2235,2250 ****
*shmids = 0;
*semids = 0;
*msgids = 0;
*lofi = 0;
- /* Get the ram cap first since it is a zone attr */
- ret = zone_getattr(zone->zsz_id, ZONE_ATTR_PHYS_MCAP,
- ram_cap, sizeof (*ram_cap));
- if (ret < 0 || *ram_cap == 0)
- *ram_cap = ZS_LIMIT_NONE;
-
/* Get the zone's default scheduling class */
ret = zone_getattr(zone->zsz_id, ZONE_ATTR_SCHED_CLASS,
class, sizeof (class));
if (ret < 0)
return (-1);
--- 2236,2245 ----
*** 2296,2305 ****
--- 2291,2301 ----
vals[i++] = zsd_get_zone_rctl_usage("zone.max-sem-ids");
vals[i++] = zsd_get_zone_rctl_limit("zone.max-msg-ids");
vals[i++] = zsd_get_zone_rctl_usage("zone.max-msg-ids");
vals[i++] = zsd_get_zone_rctl_limit("zone.max-lofi");
vals[i++] = zsd_get_zone_rctl_usage("zone.max-lofi");
+ vals[i++] = zsd_get_zone_rctl_usage("zone.max-physical-memory");
if (write(p[1], vals, ZSD_NUM_RCTL_VALS * sizeof (uint64_t)) !=
ZSD_NUM_RCTL_VALS * sizeof (uint64_t)) {
(void) close(p[1]);
_exit(1);
*** 2340,2349 ****
--- 2336,2346 ----
*semids = vals[i++];
*msgids_cap = vals[i++];
*msgids = vals[i++];
*lofi_cap = vals[i++];
*lofi = vals[i++];
+ *ram_cap = vals[i++];
/* Interpret maximum values as no cap */
if (*cpu_cap == UINT32_MAX || *cpu_cap == 0)
*cpu_cap = ZS_LIMIT_NONE;
if (*processes_cap == sys->zss_processes_max)