JavaScript is required to for searching.
跳过导航链接
退出打印视图
编程接口指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  内存和 CPU 管理

2.  用于 Solaris Cluster 的远程共享内存 API

3.  会话描述协议 API

4.  进程调度程序

5.  地址组 API

地址组概述

验证接口版本

初始化地址组接口

使用 lgrp_init()

使用 lgrp_fini()

地址组分层结构

使用 lgrp_cookie_stale()

使用 lgrp_view()

使用 lgrp_nlgrps()

使用 lgrp_root()

使用 lgrp_parents()

使用 lgrp_children()

地址组内容

使用 lgrp_resources()

使用 lgrp_cpus()

使用 lgrp_mem_size()

地址组特征

使用 lgrp_latency_cookie()

地址组及线程和内存位置

使用 lgrp_home()

使用 madvise()

使用 madv.so.1

madv.so.1 用法示例

使用 meminfo()

地址组关联

使用 lgrp_affinity_get()

使用 lgrp_affinity_set()

API 用法示例

6.  输入/输出接口

7.  进程间通信

8.  套接字接口

9.  使用 XTI 和 TLI 编程

10.  包过滤钩子

11.  传输选择和名称到地址映射

12.  实时编程和管理

13.  Solaris ABI 和 ABI 工具

A.  UNIX 域套接字

索引

地址组分层结构

使用本节介绍的 API,调用线程可以导航 lgroup 分层结构。lgroup 分层结构是一种类似于树结构的有向无环图,只不过一个节点可能具有多个父级。根 lgroup 表示整个计算机,其中包含此计算机的所有资源。根 lgroup 是系统中具有最大延迟值的 lgroup。每个子 lgroup 均包含根 lgroup 中的硬件子集,并且由一个较小的延迟值限定。越接近根的地址组具有的资源越多,延迟也越大。越接近叶的地址组具有的资源越少,延迟也越小。lgroup 可以包含直接位于其延迟界限内的资源,还可以包含具有其自己的资源集合的叶 lgroup。叶 lgroup 的资源可供封装这些叶 lgroup 的 lgroup 使用。

使用 lgrp_cookie_stale()

lgrp_cookie_stale(3LGRP) 函数可确定由给定 cookie 表示的 lgroup 分层结构的快照是否为最新。

#include <sys/lgrp_user.h>
int lgrp_cookie_stale(lgrp_cookie_t cookie);

lgrp_init() 函数返回的 cookie 可能会因多种原因而过时,具体取决于快照所表示的视图。当视图设置为 LGRP_VIEW_OS 时,调用 lgrp_init() 函数所返回的 cookie 可能会过时,原因包括 lgroup 分层结构的更改(如动态重新配置)或CPU 联机状态的更改。当视图设置为 LGRP_VIEW_CALLER 时,调用 lgrp_init () 函数所返回的 cookie 可能会过时,原因是调用线程处理器集的更改或 lgroup 分层结构的更改。要刷新过时的 cookie,可以使用旧 cookie 调用 lgrp_fini() 函数,然后调用 lgrp_init() 函数生成一个新 cookie。

如果给定的 cookie 无效,则 lgrp_cookie_stale() 函数将返回 EINVAL

使用 lgrp_view()

lgrp_view(3LGRP) 函数可确定用于获取给定 lgroup 分层结构快照的视图。

#include <sys/lgrp_user.h>
lgrp_view_t lgrp_view(lgrp_cookie_t cookie);

lgrp_view() 函数使用表示 lgroup 分层结构快照的 cookie,并返回该 lgroup 分层结构的快照视图。使用视图 LGRP_VIEW_CALLER 获取的快照仅包含可供调用线程使用的资源。使用视图 LGRP_VIEW_OS 获取的快照包含可供操作系统使用的所有资源。

如果给定的 cookie 无效,则 lgrp_view() 函数将返回 EINVAL

使用 lgrp_nlgrps()

lgrp_nlgrps(3LGRP) 函数返回系统中的地址组数。如果系统中只有一个地址组,则内存位置优化没有任何效果。

#include <sys/lgrp_user.h>
int lgrp_nlgrps(lgrp_cookie_t cookie);

lgrp_nlgrps() 函数使用表示 lgroup 分层结构快照的 cookie,并返回此分层结构中的可用 lgroup 数。

如果此 cookie 无效,则 lgrp_nlgrps() 函数将返回 EINVAL

使用 lgrp_root()

lgrp_root(3LGRP) 函数返回根 lgroup ID。

#include <sys/lgrp_user.h>
lgrp_id_t lgrp_root(lgrp_cookie_t cookie);

lgrp_root() 函数使用表示 lgroup 分层结构快照的 cookie,并返回根 lgroup ID。

使用 lgrp_parents()

lgrp_parents(3LGRP) 函数使用表示 lgroup 分层结构快照的 cookie,并返回指定 lgroup 的父 lgroup 数。

#include <sys/lgrp_user.h>
int lgrp_parents(lgrp_cookie_t cookie, lgrp_id_t child,
                 lgrp_id_t *lgrp_array, uint_t lgrp_array_size);

如果 lgrp_array 不为 NULL,并且 lgrp_array_size 的值不为零,则 lgrp_parents () 函数将使用父 lgroup ID 填充数组,直到填满数组或者所有父 lgroup ID 均在数组中为止。根 lgroup 没有父级。如果针对根 lgroup 调用 lgrp_parents() 函数,则不会填充 lgrp_array

如果此 cookie 无效,则 lgrp_parents() 函数将返回 EINVAL。如果找不到指定的 lgroup ID,则 lgrp_parents() 函数将返回 ESRCH

使用 lgrp_children()

lgrp_children(3LGRP) 函数使用表示调用线程的 lgroup 分层结构快照的 cookie,并返回指定 lgroup 的子 lgroup 数。

#include <sys/lgrp_user.h>
int lgrp_children(lgrp_cookie_t cookie, lgrp_id_t parent,
                  lgrp_id_t *lgrp_array, uint_t lgrp_array_size);

如果 lgrp_array 不为 NULL,并且 lgrp_array_size 的值不为零,则 lgrp_children () 函数将使用子 lgroup ID 填充数组,直到填满数组或者所有子 lgroup ID 均在数组中为止。

如果此 cookie 无效,则 lgrp_children() 函数将返回 EINVAL。如果找不到指定的 lgroup ID,则 lgrp_children() 函数将返回 ESRCH