SUMMARY: Can I use a 2nd CPU in an SS10 without "Major Changes"?

Dave (dburwell@telecom.com)
Thu, 08 May 1997 16:02:42 -0700

ORIGINAL QUESTION:
> I have an SS10 running SunOS 4.1.4 that is acting as a workgroup server.
>With all of the processes that are running, it is getting kind of loaded
>down (smb, atalkd, lpd, mail, NFS, etc.). It currently has 32MB RAM.
> I have a second SS10 with its original CPU card + 32MB RAM that is unused
>at this time.
>1) Can I take that CPU S-Bus card out of #2, and plug it into the #1 SS10,
>and get an increase in performance?
> (The RAM will go too, but I am not worried about that).
> The kernel on the 1st machine is a sun4m, SunOS 4.1.4
>2) If the above are "yes", can I just power down, plug it in, and power up
>- or - is it a major OS reinstallation?
>
The replies ranged from "Sure, no problem" to "No way, it can't be done".
Short answer: YES, You can...BUT only if they are newer.
In my case, it is something in between.
In general, the newer SS10 have system boards & CPUs that will support
multi-processors. Mine were too old. BUT...I have a Sun service contract,
and they replaced the system board and the processors for FREE (except for
the $5k/ year HW Support contract). My original CPU was a SM30 (I think)
with no cache. I included a script file that told me that it was a Model 30
with a 36MHz CPU. These were replaced with SM40.
Some of the replies said that adding RAM would improve things
tremendously. I bought some more RAM.
SunOS 4.1.4 (Solaris 1.1.2) seems to support dual processors just fine. I
include a "top" listing at the end.
While I was waiting for the service guy to show up, I called "Solar
Systems" in Preston WA. USA ( http://www.solarsys.com/ ), and ordered ten
16MB RAM modules ($75 each) and one Ross "Hyper-Sparc Dual 100" CPU module
($1,000). I ordered on Wed, they delivered on Thus. The Hyper-Sparc has two
Ross Hyper-Sparc chips and some cache on a single plug in card. The rep at
Solar Systems said that the Hyper-Sparc was compatible with Solaris 1.1.2
(SunOS 4.1.4). The Sun tech support guy was not completely convinced, but
we tried anyway. AND IT WORKS. The only "problem" is the CPU module takes
up two side-by-side slots in the chassis. There is room for two of these
CPU cards, for a total of 4 CPUs.
The upgrade was as easy as:
down the system
undo the screws holding the system board in
R&R the system board
redo the screws
power it up
We were done in 30min. I didn't have to change anything. There was
immediate improvement. With 128MB of RAM and dual CPUs, everything is MUCH
better. I will now think about changing to Sol2.5 o get better SMP
performance.

TOP output. Notice the "run/1" or "run/0", and the "spin". I belive these
are telling me it is doing some Multi-Processing.

last pid: 4548; load averages: 0.14, 0.12, 0.00
15:26:19
104 processes: 102 sleeping, 2 running
CPU states: 0.4% user, 0.0% nice, 0.7% system, 98.9% idle, 0.0% spin
Memory: 115M available, 56M in use, 60M free, 3848K locked

PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
4525 root 26 0 1472K 1760K run/1 0:01 0.00% 0.00% top
408 root 1 0 1320K 1388K sleep 0:02 0.00% 0.00% _upsd
3647 root -5 0 564K 652K run/0 0:03 0.00% 0.00% smbd
149 root 15 -12 324K 472K sleep 0:00 0.00% 0.00% xntpd
419 root 15 0 12K 8K sleep 0:46 0.00% 0.00% update
1236 root 15 0 204K 0K sleep 0:00 0.00% 0.00% csh
1 root 5 0 108K 0K sleep 0:00 0.00% 0.00% init
837 root 3 0 64K 0K sleep 0:00 0.00% 0.00% getty
131 root 3 0 52K 0K sleep 0:00 0.00% 0.00% rarpd
128 root 3 0 52K 0K sleep 0:00 0.00% 0.00% rarpd
127 root 3 0 52K 0K sleep 0:00 0.00% 0.00% rarpd
357 root 1 0 756K 4348K sleep 0:02 0.00% 0.00% afpsrv
2499 root 1 0 244K 1584K sleep 0:00 0.00% 0.00% perfmeter
751 scarpent 1 0 980K 800K sleep 0:17 0.00% 0.00% afpsrv
1380 root 1 0 596K 760K sleep 0:00 0.00% 0.00% smbd

This is a script file that will deduse the CPU and model charactistics of
your system.

#!/bin/sh
#
# sunmodel
#
# Parse output from devinfo/prtconf
# and display the kind of Sun and its clock
# frequency.
# 24-mar-94 added Frame Buffer Kind printing
#
# Jan Wortelboer (janw@fwi.uva.nl)
# idea from Chris Metcalf, metcalf@lcs.mit.edu
# version 1.4 16 March 1993
version=`uname -r`
hostje=`uname -n`
name=
bname=
freq=0
cpus=0
cpu=
cpuc=
cpuf=0
name_freq=0
fb=
export name bname freq
case $version in
6.*|5.*)
# solaris machine
pr_conf="/usr/sbin/prtconf -vp"
;;
4.*)
# sunos 4 machine
pr_conf="/usr/etc/devinfo -vp"
;;
*)
echo cant determine sunmodel
exit 1
;;
esac

$pr_conf | \
( egrep 'clock-frequency:|name:|cgthree|cgsix|cgtwelve' ; echo end ) | \
while read pr_line
do
case $pr_line in
clock-frequency:*)
if [ "$freq" = 0 ]
then
set $pr_line
hex_freq=`echo $2 | tr '[a-z]' '[A-Z]'`
freq=` ( echo "ibase=16" ; echo $hex_freq ) | bc`
freq=`expr $freq \/ 100000 | sed
's/\(.*\)\(.\)/\1.\2/'`
else
set $pr_line
name_hex_freq=`echo $2 | tr '[a-z]' '[A-Z]'`

name_freq=` ( echo "ibase=16" ; echo $name_hex_freq ) | bc`

name_freq=`expr $name_freq \/ 100000 | sed 's/\(.*\)\(.\)/\1.\2/'`
fi
;;
banner-name:*)
bname=`echo $pr_line | sed 's/.*banner-name:[ ]*//'`
#pcount=`echo $pr_line | sed 's/.*(\(.*\) X.*//'`
;;
*cgthree*)
fb=CG3
;;
*cgsix*)
fb=GX
;;
*cgtwelve*)
fb=GT
;;
name:*)
if [ "$name" = "" ]
then
name=`echo $pr_line | sed 's/.*name:[ ]*//'`
if [ "$bname" = "" ]
then
bname=$name
fi
fi
case $name in
*4/20*)
bname="'SPARCstation SLC'"
;;
*4/25*)
bname="'SPARCstation ELC'"
;;
*4/40*)
bname="'SPARCstation IPC'"
;;
*4/50*)
bname="'SPARCstation IPX'"
;;
*4/60*)
bname="'SPARCstation 1'"
;;
*4/65*)
bname="'SPARCstation 1+'"
;;
*4/75*)
bname="'SPARCstation 2'"
;;
esac
fname=`echo $pr_line | sed 's/.*name:[ ]*//'`
case $fname in
*Cypress,CY605*)
cpu='Cypress,CY605'
cpus=`expr $cpus + 1`
cpuf=$name_freq
cpuc=
;;
*TI,TMS390Z55*)
cpu="Texas Instruments TMS390Z55 1MB S.Cache"
cpus=`expr $cpus + 1`
cpuf=$name_freq
cpuc=1
;;
*TI,TMS390Z50*)
cpu="Texas Instruments TMS390Z50"
cpus=`expr $cpus + 1`
cpuf=$name_freq
cpuc=
;;
*TI,TMS390S10*)
cpu="Texas Instruments TMS390S10 (MicroSparc)"
cpus=`expr $cpus + 1`
cpuf=$name_freq
cpuc=
;;
esac
name_freq=0
;;
end)
if [ $cpuf = 0 ]
then
cpuf=$freq
fi
if [ `expr "$bname" : "'.*39.Z.*'"` != 0 -a `expr "$bname" : ".*[21]000.*"`
= 0 ]
then
case $cpuf in
33.0|30.0)
if [ "$cpus" != 1 ]
then
bname="$bname '(Model 2$cpus)'"
else
bname="$bname '(Model 20)'"
fi
freq=$cpuf
;;
36.0)
if [ "$cpus" != 1 ]
then
bname="$bname '(Model 3$cpus)'"
else
bname="$bname '(Model 30)'"
fi
freq=$cpuf
;;
40.3)
if [ "$cpus" != 1 ]
then
bname="$bname '(Model
4${cpus}${cpuc})'"
else
bname="$bname '(Model 41)'"
fi
freq=$cpuf
;;
45.0|50.0)
if [ "$cpus" != 1 ]
then
bname="$bname '(Model
5${cpus}${cpuc})'"
else
bname="$bname '(Model 51)'"
fi
freq=$cpuf
;;
esac
else
if [ $cpus -gt 1 ]
then
bname="$bname ($cpus X $cpu cpus)"
fi
fi
echo Machine $hostje: $bname @ $cpuf MHz
;;
*)
echo -n
;;
esac
done