Skip Navigation Links | |
Exit Print View | |
Memory and Thread Placement Optimization Developer's Guide Oracle Solaris 11.1 Information Library |
1. Overview of Locality Groups
Verifying the Interface Version
Initializing the Locality Group Interface
Locality Group Characteristics
The following APIs retrieve information about the contents of a given lgroup.
The lgroup hierarchy organizes the domain's resources to simplify the process of locating the nearest resource. Leaf lgroups are defined with resources that have the least latency. Each of the successive ancestor lgroups of a given leaf lgroup contains the next nearest resources to its child lgroup. The root lgroup contains all of the resources that are in the domain.
The resources of a given lgroup are contained directly within that lgroup or indirectly within the leaf lgroups that the given lgroup encapsulates. Leaf lgroups directly contain their resources and do not encapsulate any other lgroups.
The lgrp_resources() function returns the number of resources contained in a specified lgroup.
#include <sys/lgrp_user.h> int lgrp_resources(lgrp_cookie_t cookie, lgrp_id_t lgrp, lgrp_id_t *lgrpids, uint_t count, lgrp_rsrc_t type);
The lgrp_resources() function takes a cookie that represents a snapshot of the lgroup hierarchy. That cookie is obtained from the lgrp_init() function. The lgrp_resources() function returns the number of resources that are in the lgroup with the ID that is specified by the value of the lgrp argument. The lgrp_resources() function represents the resources with a set of lgroups that directly contain CPU or memory resources. The lgrp_rsrc_t argument can have the following two values:
The lgrp_resources() function returns the number of CPU resources.
The lgrp_resources() function returns the number of memory resources.
When the value passed in the lgrpids[] argument is not null and the count argument is not zero, the lgrp_resources() function stores lgroup IDs in the lgrpids[] array. The number of lgroup IDs stored in the array can be up to the value of the count argument.
The lgrp_resources() function returns EINVAL when the specified cookie, lgroup ID, or type are not valid. The lgrp_resources() function returns ESRCH when the function does not find the specified lgroup ID.
The lgrp_cpus(3LGRP) function takes a cookie that represents a snapshot of the lgroup hierarchy and returns the number of CPUs in a given lgroup.
#include <sys/lgrp_user.h> int lgrp_cpus(lgrp_cookie_t cookie, lgrp_id_t lgrp, processorid_t *cpuids, uint_t count, int content);
If the cpuid[] argument is not NULL and the CPU count is not zero, the lgrp_cpus() function fills the array with CPU IDs until the array is full or all the CPU IDs are in the array.
The content argument can have the following two values:
The lgrp_cpus() function returns IDs for the CPUs in this lgroup and this lgroup's descendants.
The lgrp_cpus() function returns IDs for the CPUs in this lgroup only.
The lgrp_cpus() function returns EINVAL when the cookie, lgroup ID, or one of the flags is not valid. The lgrp_cpus() function returns ESRCH when the specified lgroup ID is not found.
The lgrp_mem_size(3LGRP) function takes a cookie that represents a snapshot of the lgroup hierarchy and returns the size of installed or free memory in the given lgroup. The lgrp_mem_size() function reports memory sizes in bytes.
#include <sys/lgrp_user.h> lgrp_mem_size_t lgrp_mem_size(lgrp_cookie_t cookie, lgrp_id_t lgrp, int type, int content)
The type argument can have the following two values:
The lgrp_mem_size() function returns the amount of free memory in bytes.
The lgrp_mem_size() function returns the amount of installed memory in bytes.
The content argument can have the following two values:
The lgrp_mem_size() function returns the amount of memory in this lgroup and this lgroup's descendants.
The lgrp_mem_size() function returns the amount of memory in this lgroup only.
The lgrp_mem_size() function returns EINVAL when the cookie, lgroup ID, or one of the flags is not valid. The lgrp_mem_size() function returns ESRCH when the specified lgroup ID is not found.