前述のとおり、SUNW_MP_PROCBIND に指定された非負整数は論理 ID です。論理 ID は、0 から始まる連続した整数です。システムで利用可能な仮想プロセッサの数が n の場合、論理 ID は、0、1、…、n-1 のように psrinfo(1M) に示された順番になります。次の Korn シェルスクリプトを使用すると、仮想プロセッサ ID から論理 ID へのマッピングを表示できます。
#!/bin/ksh
NUMV= `psrinfo | fgrep "on-line" | wc -l `
set -A VID `psrinfo | cut -f1 `
echo "Total number of on-line virtual processors = $NUMV"
echo
let "I=0"
let "J=0"
while [[ $I -lt $NUMV ]]
do
echo "Virtual processor ID ${VID[I]} maps to logical ID ${J}"
let "I=I+1"
let "J=J+1"
done
|
1 つの物理プロセッサが複数の仮想プロセッサにマッピングされているシステムでは、同じ物理プロセッサに属す仮想プロセッサにどの論理 ID が対応しているかを知っておくと便利です。次の Korn シェルスクリプトを最近のリリースの Solaris で使用すると、この情報が表示されます。
#!/bin/ksh
NUMV= `psrinfo | grep "on-line" | wc -l `
set -A VLIST `psrinfo | cut -f1 `
set -A CHECKLIST `psrinfo | cut -f1 `
let "I=0"
while [ $I -lt $NUMV ]
do
let "COUNT=0"
SAMELIST="$I"
let "J=I+1"
while [ $J -lt $NUMV ]
do
if [ ${CHECKLIST[J]} -ne -1 ]
then
if [ `psrinfo -p ${VLIST[I]} ${VLIST[J]} ` = 1 ]
then
SAMELIST="$SAMELIST $J"
let "CHECKLIST[J]=-1"
let "COUNT=COUNT+1"
fi
fi
let "J=J+1"
done
if [ $COUNT -gt 0 ]
then
echo "The following logical IDs belong to the same physical processor:"
echo "$SAMELIST"
echo " "
fi
let "I=I+1"
done
|