以下 API 检索有关给定 lgroup 内容的信息。
lgroup 分层结构对域资源进行了组织,以便简化查找最近资源的过程。叶 lgroup 使用具有最小延迟的资源进行定义。给定叶 lgroup 的每个上一级祖先 lgroup 均包含距离其子 lgroup 下一个最近的资源。根 lgroup 包含域中的所有资源。
给定 lgroup 的资源直接包含在此 lgroup 内,或者间接包含在此给定 lgroup 封装的叶 lgroup 内。叶 lgroup 直接包含各自的资源,而不封装其他任何 lgroup。
lgrp_resources() 函数返回指定 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);
lgrp_resources() 函数使用表示 lgroup 分层结构快照的 cookie。此 cookie 是从 lgrp_init() 函数中获取的。lgrp_resources() 函数返回 ID 由 lgrp 参数值指定的 lgroup 中的资源数。lgrp_resources() 函数表示直接包含 CPU 或内存资源的 lgroup 集合中的资源。lgrp_rsrc_t 参数可以具有以下两个值:
lgrp_resources() 函数返回 CPU 资源数。
lgrp_resources() 函数返回内存资源数。
如果 lgrpids[] 参数中传递的值不为空并且 count 参数不为零,则 lgrp_resources() 函数将在 lgrpids[] 数组中存储 lgroup ID。此数组中存储的 lgroup ID 数最多不能超过 count 参数的值。
如果指定的 cookie、lgroup ID 或类型无效,则 lgrp_resources() 函数将返回 EINVAL。如果 lgrp_resources() 函数未找到指定的 lgroup ID,则它将返回 ESRCH。
lgrp_cpus(3LGRP) 函数使用表示 lgroup 分层结构快照的 cookie,并返回给定 lgroup 中的 CPU 数。
#include <sys/lgrp_user.h> int lgrp_cpus(lgrp_cookie_t cookie, lgrp_id_t lgrp, processorid_t *cpuids, uint_t count, int content);
如果 cpuid[] 参数不为 NULL 并且 CPU 计数不为零,则 lgrp_cpus() 函数将使用 CPU ID 填充数组,直到填满数组或者所有 CPU ID 均在数组中为止。
content 参数可以具有以下两个值:
lgrp_cpus() 函数返回此 lgroup 及其后代中的 CPU 的 ID。
lgrp_cpus() 函数只返回此 lgroup 中的 CPU 的 ID。
如果 cookie、lgroup ID 或其中一个标志无效,则 lgrp_cpus() 函数将返回 EINVAL。如果未找到指定的 lgroup ID,则 lgrp_cpus() 函数将返回 ESRCH。
lgrp_mem_size(3LGRP) 函数使用表示 lgroup 分层结构快照的 cookie,并返回给定 lgroup 中已安装内存或可用内存的大小。lgrp_mem_size() 函数报告内存大小(以字节为单位)。
#include <sys/lgrp_user.h> lgrp_mem_size_t lgrp_mem_size(lgrp_cookie_t cookie, lgrp_id_t lgrp, int type, int content)
type 参数可以具有以下两个值:
lgrp_mem_size() 函数返回可用内存量(以字节为单位)。
lgrp_mem_size() 函数返回已安装内存量(以字节为单位)。
content 参数可以具有以下两个值:
lgrp_mem_size() 函数返回此 lgroup 及其后代中的内存量。
lgrp_mem_size() 函数只返回此 lgroup 中的内存量。
如果 cookie、lgroup ID 或其中一个标志无效,则 lgrp_mem_size() 函数将返回 EINVAL。如果未找到指定的 lgroup ID,则 lgrp_mem_size() 函数将返回 ESRCH。