メモリーとスレッドの配置最適化開発者ガイド

近傍性グループの内容

次に示す API では、指定した lgroup の内容に関する情報を取り出します。

lgroup 階層は、ドメインの資源を組織化し、もっとも近い資源を検索するプロセスを簡素化します。葉 lgroup は、もっとも応答時間の短い資源で定義されます。葉 lgroup の上位ノードの各 lgroup には、その子 lgroup にもっとも近い資源が含まれます。ルート lgroup には、そのドメインにあるすべての資源が含まれます。

lgroup の資源は、lgroup の直下に含まれるか、またはその lgroup にカプセル化された葉 lgroup 内に含まれます。葉 lgroup は、直下に資源を含み、ほかの lgroup をカプセル化することはありません。

lgrp_resources() の使用法

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() 関数は、lgrp 引数の値で指定した ID を持つ lgroup にある資源の数を返します。 lgrp_resources() 関数は、CPU またはメモリーの資源を直下に含む lgroup のセットを持つ資源を表します。lgrp_rsrc_t 引数には、次の 2 つの値が指定できます。

LGRP_RSRC_CPU

lgrp_resources() 関数は CPU 資源の数を返します。

LGRP_RSRC_MEM

lgrp_resources() 関数はメモリー資源の数を返します。

lgrpids[] 引数として渡された値が NULL でなく、かつ count 引数に渡された値がゼロでない場合、lgrp_resources() 関数は lgroup ID を lgrpids[] 配列に格納します。lgrpids[] 配列に格納できる lgroup ID の最大数は count 引数の値です。

指定した cookie、lgroup ID、またはタイプが無効な場合、lgrp_resources() 関数は EINVAL を返します。指定した lgroup ID が見つからない場合、lgrp_resources () 関数は ESRCH を返します。

lgrp_cpus() の使用法

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 を配列に入れて返します。

content 引数には、次の 2 つの値が指定できます。

LGRP_CONTENT_ALL

lgrp_cpus() 関数は、この lgroup と下位ノードにある CPU の ID を返します。

LGRP_CONTENT_DIRECT

lgrp_cpus() 関数は、この lgroup にある CPU の ID だけを返します。

指定した cookie、lgroup ID、またはフラグのいずれか 1 つが無効な場合、lgrp_cpus() 関数は EINVAL を返します。指定した lgroup ID が存在しない場合は、lgrp_cpus() 関数は ESRCH を返します。

lgrp_mem_size() の使用法

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_SZ_FREE

lgrp_mem_size() 関数は、空きメモリー領域のサイズをバイト数で返します。

LGRP_MEM_SZ_INSTALLED

lgrp_mem_size() 関数は、インストールされたメモリーのサイズをバイト数で返します。

content 引数には、次の 2 つの値が指定できます。

LGRP_CONTENT_ALL

lgrp_mem_size() 関数は、この lgroup と下位ノードのメモリーサイズの総量を返します。

LGRP_CONTENT_DIRECT

lgrp_mem_size() 関数は、この lgroup のメモリーのサイズのみを返します。

指定した cookie、lgroup ID、またはフラグのいずれか 1 つが無効な場合、lgrp_mem_size() 関数は EINVAL を返します。指定した lgroup ID が存在しない場合は、lgrp_mem_size() 関数は ESRCH を返します。