如上所述,为 SUNW_MP_PROCBIND 指定的非负整数是逻辑 ID。逻辑 ID 是从 0 开始的连续整数。如果系统中可用的虚拟处理器数为 n,则其逻辑 ID 为 0、1、...、n-1(按 psrinfo(1M) 命令显示的顺序)。以下 Korn shell 脚本可用于显示从虚拟处理器 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
|
在将单个物理处理器映射到多个虚拟处理器的系统上,了解哪些逻辑 ID 与属于同一物理处理器的虚拟处理器相对应会很有用。在以后的 Solaris 发行版中,可以使用以下 Korn shell 脚本来显示此信息。
#!/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
|