前述のとおり、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 |