jueves, 14 de julio de 2011

Administración de servidores MX000 (M5000 server) Parte II QuadMode

En esta oportunidad voy a configurar un m5000 en modo quad, voy a aplicar “Dinamic Reconfiguration” mejor conocido como DR (terminara siendo esta parte una sola línea) y ademas voy a usar zonas, en dichas zonas voy a quitar un grupo de procesadores (un XSB llamando las cosas por su nombre) y veremos como esto, termina afectando la zona global y la zonas no globales, de verdad esto es una verdadera joya de la administración de servidores de mediano rango, donde trabajamos globalmente con 2 tecnologías de oracle (antes Sun Microsystems): MX000, Zonas y todo ejecutado en vivo.

Si quieres saber para que se usa cada comando puedes ver mi post anterior  Administración de servidores MX000 (M5000 server) Parte I, donde explico como trabajar con un m5000 y explico la mayoría de los comandos necesarios.

Con gusto les envió esta info en pdf a sus correos si me hacen llegar el requerimiento a contacto[arroba]cacaoenbytes[dot]com. Con gusto en la empresa en la que laboro CACAO Servicios Tecnologicos podemos hablar de configurar esto en sus servidores.

Recordando un par de cositas:
M5000 Motherboard la línea sola CPUM la línea doble MEMB (todas las figuras esta vez la realice con un solo motherboard, para ver con los dos motherboards, solo hay que repetir el procedimiento sobre el otros systems boards.





M5000 Motherboard es llamado System Board para simplicidad SB, en un M5000 pueden haber dos SB el 0 y el 1.


Cuando decimos Quad es dividir el SB en 4 partes iguales:




Ahora configuremos el modo quad, usamos:

setupfru y showfru
XSCF> setupfru -x 4 sb 0
Operation has completed.
XSCF> setupfru -x 4 sb 1
Operation has completed.
XSCF> showfru -a sb
Device Location XSB Mode Memory Mirror Mode
sb             00                Quad                 no
sb             01                Quad                 no

Como vemos, podemos determinar que están colocados en modo quad, en la columna referente a XSB mode.

Adicional podemos listar con showboards la distribución de la configuración que realizamos:
XSCF> showboards -v -a
XSB R DID(LSB) Assignment Pwr Conn Conf Test Fault COD
---- - -------- ----------- ---- ---- ---- ------- -------- ----
00-0 SP Unavailable n n n Unknown Normal n
00-1 SP Unavailable n n n Unknown Normal n
00-2 SP Unavailable n n n Unknown Normal n
00-3 SP Unavailable n n n Unknown Normal n
01-0 SP Unavailable n n n Unknown Normal n
01-1 SP Unavailable n n n Unknown Normal n
01-2 SP Unavailable n n n Unknown Normal n
01-3 SP Unavailable n n n Unknown Normal n
XSCF>

NOTA: Como pueden percatarse se lista una columna que lista XSB y una columna que lista DID (Domain ID) y LSB (Logical system board).


El próximo paso es crear una lista de componentes para el dominio, siempre realizo la analogía a tener un saco o una bolsa donde colocamos componentes que pueden formar el dominio:
Comandos relacionados:
setdcl
showdcl
XSCF> setdcl -d 0 -a 0=00-0
XSCF> setdcl -d 0 -a 1=00-1
XSCF> setdcl -d 0 -a 2=01-0 3=01-1
XSCF> showdcl -d 0
DID LSB XSB Status
00 Powered Off
        00   00-0
        01   00-1
        02   01-0
        03   01-1
XSCF>

Podemos ver claramente que acá aparecen dos LSB`s (00 y 01) con XSB`s del systemboard 0 y dos LSB`s (02 y 03) del systemboard 1.

En la figura se pueden observar los LSB`s



Hagamos la misma secuencia para el dominio 1, pero los LSB`s “principales” del dominio serán los 02 y 03 del dominio 0.

XSCF> setdcl -d 1 -a 0=01-0 1=01-1
XSCF> setdcl -d 1 -a 2=00-0 3=00-1
XSCF> showdcl -d 1
DID LSB XSB Status
01 Powered Off
       00 01-0
       01 01-1
       02 00-0
       03 00-1
XSCF>
Se preguntaran por que he ejecutado esto de esta manera y la respuesta es muy sencilla, el LSB 00 es un XSB que en DR (Dinamic Reconfiguration) no puede ser movido, ya que información de primera mano no puede ser movida (proceso 0, proceso 1, procesos que están usando memoria, etc), entonces para mostrar DR y que funcione muy bien, realizo este cruce de XSB`s

Ahora solo queda añadir los XSB`s al dominio correspondiente y encender el dominio, como se muestra a continuación:

Dominio 0
XSCF> addboard -c assign -d 0 00-1 00-0
XSB#00-0 will be assigned to DomainID 0. Continue?[y|n] :y
XSB#00-1 will be assigned to DomainID 0. Continue?[y|n] :y
XSCF>
XSCF> poweron -d 0
DomainIDs to power on:00
Continue? [y|n] :y
00 :Powering on
*Note*
This command only issues the instruction to power-on.
The result of the instruction can be checked by the "showlogs power".

Dominio 1:

XSCF> addboard -c assign -d 1 01-0 01-1
XSB#01-0 will be assigned to DomainID 1. Continue?[y|n] :y
XSB#01-1 will be assigned to DomainID 1. Continue?[y|n] :y
XSCF>
XSCF> poweron -d 1
DomainIDs to power on:01
Continue? [y|n] :y
01 :Powering on
*Note*
This command only issues the instruction to power-on.
The result of the instruction can be checked by the "showlogs power".

Una vez en el dominio 0, ejecutamos un prtdiag para ver la siguiente configuración:
bash-3.00# prtdiag -v | more
System Configuration: Sun Microsystems sun4u SPARC Enterprise M5000 Server
System clock frequency: 1012 MHz
Memory size: 16384 Megabytes
====================================CPUs=================================
CPU CPU Run L2$ CPU CPU
LSB Chip ID MHz MB Impl. Mask
--- ---- ---------------------------------------- ---- --- ----- ----
00 0 0, 1, 2, 3 2150 5.0 6 147
01 1 40, 41, 42, 43 2150 5.0 6 147
============================ Memory Configuration========
Memory Available Memory DIMM # of Mirror Interleave
LSB Group Size Status Size DIMMs Mode Factor
--- ------ ------------------ ------- ------ ----- ------- ----------
00 A 4096MB okay 1024MB 4 no 2-way
00 B 4096MB okay 1024MB 4 no 2-way
01 A 4096MB okay 1024MB 4 no 2-way
01 B 4096MB okay 1024MB 4 no 2-way
========================= IO Devices =========================
IO Lane/Frq
LSB Type LPID RvID,DvID,VnID BDF State Act, Max Name
Model
--- ----- ---- ------------------ --------- ----- ----------- ---------------------- --------------------
Logical Path
------------
00 PCIe 0 bc, 8532, 10b5 2, 0, 0 okay 8, 8 pci-pciex10b5
,8532 N/A
/pci@0,600000/pci@0
00 PCIe 0 bc, 8532, 10b5 3, 8, 0 okay 8, 8 pci-pciex10b5
,8532 N/A
/pci@0,600000/pci@0/pci@8
00 PCIe 0 bc, 8532, 10b5 3, 9, 0 okay 1, 8 pci-pciex10b5
,8532 N/A
00 PCIx 0 8, 125, 1033 4, 0, 0 okay 100, 133 pci-pciexclas
s,060400 N/A
/pci@0,600000/pci@0/pci@8/pci@0
00 PCIx 0 8, 125, 1033 4, 0, 1 okay --, 133 pci-pciexclas
s,060400 N/A
/pci@0,600000/pci@0/pci@8/pci@0,1
00 PCI 0 2, 50, 1000 5, 1, 0 okay --, 133 scsi-pci1000,
50 LSI,1064
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1
00 PCI 0 10, 1648, 14e4 5, 2, 0 okay --, 133 network-pci14
e4,1648 N/A
/pci@0,600000/pci@0/pci@8/pci@0/network@2
00 PCI 0 10, 1648, 14e4 5, 2, 1 okay --, 133 network-pci14
e4,1648 N/A
/pci@0,600000/pci@0/pci@8/pci@0/network@2,1
==================== Hardware Revisions ==========
System PROM revisions:
----------------------
OBP 4.24.15 2010/09/29 10:16
=================== Environmental Status ===========
Mode switch is in UNLOCK mode
0 121 4 409 292 45 447 1 27 33 0 1163 1 8 0 91
1 19 1 260 58 7 247 1 14 18 0 493 1 0 0 99
2 66 3 304 47 0 277 1 22 22 0 687 2 1 0 98
3 14 1 158 43 11 168 0 12 11 0 288 0 1 0 99
40 133 4 392 64 1 471 1 26 67 0 1292 2 1 0 97
41 16 1 166 22 0 155 0 8 11 0 400 1 0 0 99
42 80 5 429 57 0 794 1 21 29 0 1598 2 1 0 97
43 21 1 92 15 3 54 0 5 7 0 162 0 0 0 99
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 0 0 44 224 23 11 0 2 0 0 2 0 0 0 100
1 0 0 0 4 0 5 0 0 2 0 1 0 0 0 100
2 0 0 0 23 0 43 0 1 0 0 15 0 0 0 100
3 0 0 0 11 2 11 0 1 0 0 2 0 0 0 100
40 2 0 0 239 3 3 0 0 0 0 15 0 0 0 100
41 0 0 0 1 0 0 0 0 0 0 0 0 0 0 100
42 9 0 4 2 0 3 0 0 0 0 196 0 0 0 100
43 0 0 0 6 3 3 0 0 0 0 3 0 0 0 100
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 0 0 20 223 23 24 0 1 0 0 8 0 0 0 100
1 0 0 1 5 0 7 0 1 1 0 1 0 0 0 100
2 0 0 0 10 0 19 0 0 0 0 4 0 0 0 100
3 0 0 1 18 3 19 0 0 0 0 12 0 0 0 100
40 0 0 0 237 3 1 0 0 0 0 0 0 0 0 100
41 0 0 0 1 0 0 0 0 0 0 0 0 0 0 100
42 0 0 3 1 0 1 0 0 0 0 185 0 0 0 100
43 0 0 0 4 2 2 0 0 0 0 0 0 0 0 100


Aparecen un LSB 0 Y 1 tal y como los mostraba el comando showdcl, por cada CPUM hay 4 procesadores, los números son la ubicación física en el system board, la memoria no es el máximo disponible, pero es lo que hay disponible sobre cada LSB.
Creamos una zona zona1 sobre el dominio 0
bash-3.00# zoneadm list -iv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
zona1 installed /zona1 native shared

Entramos en la zona y ahora vemos como se reflejan el mismo numero de procesadores que en la zona global:
zona1 console login: root
Password:
Apr 26 03:14:56 zona1 login: ROOT LOGIN /dev/console
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
# bash
bash-3.00# prtdiag -v
prtdiag can only be run in the global zone
bash-3.00# mpstat 3
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0      737   2   692   312  78  162    2   18   110 1   1314  2   4   0   94
1      147   0   554   32    0    103    1   10   29   0   421    1   1   0   98
2      511   2   518   43    0    145    1   14   81   1   942    2   2   0   96
3      118   1   407   27    3     72     0   6     24   0   285    0   1   0   99
40    816   5   623   73    3     153   2   16   114 2   1467  2   4   0   94
41    106   0   548   16    0     69     0   5     21   0   336    0   1   0   99
42    552   4   573   40    0     172   2   13   92   1   1154  2   2   0   96
43    86     0   234   15    4     52     0   3     17   0    220   0   1   0   99

Ahora vamos al dominio 1 y veamos su configuración:
XSCF> console -d 1
Connect to DomainID 1?[y|n] :y

bash# mpstat 3
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0       6    0     57    226  24   43   0      2      2     0     111    0     1    0   99
1       2    0    19     8      0     23   0      1      3     0     42      0     0    0  100
2       6    0    21     6      0     22   0      1      2     0     51      0     0    0  100
3       1    0    13     5      1     9     0      1      1     0     46      0     0    0  100
40     7    0    20     10    0     44   0      2      2     0     75      0     0    0  100
41     1    0    9       16    0     36   0      0      1     0     34      0     0    0  100
42     4    0    12     9      2     20   0      1      1     0     45      0     0    0  100
43     1    0     5      5      3     7     0      0      1     0     14      0     0    0  100

Corroboramos la misma cantidad de procesadores que en el dominio 0.

Ahora hagamos funcionar “Dinamic Reconfiguration” (DR) en vivo de un dominio a otro:
XSCF> showboards -v -a
XSB R DID(LSB) Assignment Pwr Conn Conf Test Fault COD
---- - -------- ----------- ---- ---- ---- ------- -------- ----
00-0 00(00) Assigned       y y y Passed Normal n
00-1 00(01) Assigned       y y y Passed Normal n
00-2 SP       Unavailable  y n n Passed Normal n
00-3 SP       Unavailable  y n n Passed Normal n
01-0 01(00) Assigned       y y y Passed Normal n
01-1 01(01) Assigned       y y y Passed Normal n
01-2 SP       Unavailable  y n n Passed Normal n
01-3 SP       Unavailable  y n n Passed Normal n
XSCF> moveboard -d 0 -c configure 01-1
XSB#01-1 will be moved from DomainID 1 to DomainID 0 immediately. Continue?[y|n] :y
Start unconfiguring XSB from domain.
Unconfigured XSB from domain.
XSB power off sequence started. [1200sec]
0..end
Operation has completed.
Initial diagnosis started. [1800sec]
0..... 30..... 60..... 90.....end
Initial diagnosis has completed.
Start configuring XSB to domain.
Configured XSB to domain.

Vemos como es movido el XSB 01-1 al dominio 0.

Asi queda el dominio 1:
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0      0      0    29    361   26   17   0   1   0   0   3      0   0   0   100
1      0      0    0      12     3     17   0   0   3   0   2      0   0   0   100
2      2      1    3      8       2     12   0   1   0   0   205  0   0   0   100
3      0      0    1      19     0     36   0   0   0   0   17    0   0   0   100


Asi queda dominio 0:
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0       0     0     62   254  47   45   0     1       2       0     13     0   0     0   100
1       0     0     0     22    1     41   0     0       1       0     17     0   0     0   100
2       0     0     0     352  3     23   0     1       0       0     5       0   0     0   100
3       0     0     3     8      2     2     0     0       0       0     192   0   0     0   100
40     0     0     3     9      0     17   0     0       0       0     18     0   0     0   100
41     0     0     0     2      0     1     0     0       0       0     27     0   0     0   99
42     0     0     3     19    0     36   0     0       0       0     30     0   0     0   100
43     0     0     0     3      0     5     0     0       0       0     193   0   1     0   99
104   0     0     0     1      0     0     0     0       0       0     0       0   0     0   100
105   0     0     0     1      0     0     0     0       0       0     0       0   0     0   100
106   0     0     0     1      0     0     0     0       0       0     0       0   0     0   100
107   0     0     0     1      0     0     0     0       0       0     0       0   0     0   100
^C
bash-3.00#


Asi queda la zona 1
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0      0      0     66   255  48   24   0      1       3       0     4       0   0     0  100
1      0      0     1     16    0     29   0      1       1       0     141   0   0     0  100
2      0      0     0     369  4     57   0      0       0       0     24     0   1     0  99
3      0      0     4     8      2     2     0      0       0       0     191   0   0     0 100
40    0      0     3     19    0     37   0      0       0       0     218   0   0     0 100
41    0      0     0     2      0     1     0      0       0       0     1       0   0     0 100
42    0      0     3     10    0     18   0      0       0       0     41     0   0     0 100
43    0      0     0     2      0     3     0      0       0       0     0       0   0     0 100
104  0      0     0     1      0     0     0      0       0       0     0       0   0     0 100
105  0      0     0     1      0     0     0      0       0       0     0       0   0     0 100
106  0      0     0     2      1     0     0      0       0       0     0       0   0     0 100
107  0      0     0     1      0     0     0      0       0       0     0       0   0     0 100

Por ultimo estresemos las zonas a ver que tal
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
27247 root 1776K 1160K cpu2 1 0 0:00:55 12% estress/1
27253 root 1776K 1160K cpu40 59 0 0:00:10 4.8% estress/1
27242 root 3896K 3248K cpu43 59 0 0:00:01 0.1% prstat/1
27073 noaccess 202M 141M sleep 56 0 0:00:14 0.0% java/19
26620 noaccess 202M 141M sleep 1 0 0:00:20 0.0% java/19
806 noaccess 202M 137M sleep 29 0 0:00:16 0.0% java/19
163 daemon 4904K 2672K sleep 29 0 0:00:00 0.0% kcfd/5
345 root 2784K 1592K sleep 1 0 0:00:00 0.0% dcs/1
399 root 2376K 960K sleep 29 0 0:00:00 0.0% smcboot/1
269 root 2344K 968K sleep 29 0 0:00:00 0.0% sckmd/1
317 daemon 3096K 2048K sleep 29 0 0:00:00 0.0% statd/1
358 root 2392K 1240K sleep 29 0 0:00:00 0.0% sac/1
315 daemon 2752K 1632K sleep 29 0 0:00:00 0.0% nfs4cbd/2
316 daemon 5112K 1728K sleep 29 0 0:00:00 0.0% nfsmapid/4
174 root 6848K 4184K sleep 29 0 0:00:00 0.0% nscd/33
154 root 3944K 2808K sleep 29 0 0:00:00 0.0% picld/6
25990 root 13M 11M sleep 29 0 0:00:01 0.0% svc.startd/17
118 root 6304K 2752K sleep 29 0 0:00:00 0.0% syseventd/15
310 daemon 3280K 1744K sleep 29 0 0:00:00 0.0% rpcbind/1
375 root 1792K 1224K sleep 29 0 0:00:00 0.0% ksh/1
277 root 1720K 696K sleep 1 0 0:00:00 0.0% efdaemon/1
ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE
5 34 168M 249M 1.5% 0:01:20 12% zona1
6 33 165M 247M 1.5% 0:00:32 4.8% zona2
0 52 195M 276M 1.7% 0:00:41 0.1% global
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
27247 root 1776K 1160K cpu2 1 0 0:01:50 12% estress/1
27253 root 1776K 1160K cpu40 59 0 0:01:05 12% estress/1
27242 root 3896K 3248K cpu43 59 0 0:00:01 0.1% prstat/1
27073 noaccess 202M 141M sleep 56 0 0:00:14 0.0% java/19
26620 noaccess 202M 141M sleep 1 0 0:00:20 0.0% java/19
163 daemon 4904K 2672K sleep 29 0 0:00:00 0.0% kcfd/5
345 root 2784K 1592K sleep 1 0 0:00:00 0.0% dcs/1
399 root 2376K 960K sleep 29 0 0:00:00 0.0% smcboot/1
269 root 2344K 968K sleep 29 0 0:00:00 0.0% sckmd/1
317 daemon 3096K 2048K sleep 29 0 0:00:00 0.0% statd/1
358 root 2392K 1240K sleep 29 0 0:00:00 0.0% sac/1
315 daemon 2752K 1632K sleep 29 0 0:00:00 0.0% nfs4cbd/2
316 daemon 5112K 1728K sleep 29 0 0:00:00 0.0% nfsmapid/4
174 root 6848K 4184K sleep 29 0 0:00:00 0.0% nscd/33
154 root 3944K 2808K sleep 29 0 0:00:00 0.0% picld/6
25990 root 13M 11M sleep 29 0 0:00:01 0.0% svc.startd/17
118 root 6304K 2752K sleep 29 0 0:00:00 0.0% syseventd/15
310 daemon 3280K 1744K sleep 29 0 0:00:00 0.0% rpcbind/1
375 root 1792K 1224K sleep 29 0 0:00:00 0.0% ksh/1
277 root 1720K 696K sleep 1 0 0:00:00 0.0% efdaemon/1
268 root 3192K 1336K sleep 29 0 0:00:00 0.0% cron/1
ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE
5 34 168M 249M 1.5% 0:02:15 12% zona1
6 33 165M 247M 1.5% 0:01:27 12% zona2
0 52 195M 276M 1.7% 0:00:41 0.1% global
Total: 119 processes, 481 lwps, load averages: 1.62, 0.86, 0.50

Finalmente movemos el XSB como deberia ir y las zonas quedan así:
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
27253 root 1776K 1160K cpu41 58 0 0:04:27 8.3% estress/1
27247 root 1776K 1160K cpu1 1 0 0:05:12 8.3% estress/1
637 root 17M 12M sleep 29 0 0:00:04 0.1% fmd/24
27242 root 3912K 3280K cpu42 59 0 0:00:03 0.0% prstat/1
27263 root 7192K 3528K sleep 59 0 0:00:00 0.0% rcm_daemon/4
169 root 7424K 4136K sleep 29 0 0:00:00 0.0% devfsadm/7
27073 noaccess 202M 141M sleep 56 0 0:00:15 0.0% java/19
163 daemon 4904K 2672K sleep 29 0 0:00:00 0.0% kcfd/5
345 root 2784K 1592K sleep 59 0 0:00:00 0.0% dcs/1
399 root 2376K 960K sleep 29 0 0:00:00 0.0% smcboot/1
269 root 2344K 968K sleep 29 0 0:00:00 0.0% sckmd/1
317 daemon 3096K 2048K sleep 29 0 0:00:00 0.0% statd/1
358 root 2392K 1240K sleep 29 0 0:00:00 0.0% sac/1
315 daemon 2752K 1632K sleep 29 0 0:00:00 0.0% nfs4cbd/2
316 daemon 5112K 1728K sleep 29 0 0:00:00 0.0% nfsmapid/4
174 root 6848K 4200K sleep 29 0 0:00:00 0.0% nscd/33
154 root 3944K 2808K sleep 29 0 0:00:00 0.0% picld/6
25990 root 13M 11M sleep 29 0 0:00:01 0.0% svc.startd/17
118 root 6304K 2752K sleep 29 0 0:00:00 0.0% syseventd/15
310 daemon 3280K 1744K sleep 29 0 0:00:00 0.0% rpcbind/1
375 root 1792K 1224K sleep 29 0 0:00:00 0.0% ksh/1
ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE
6 33 165M 247M 1.0% 0:04:50 8.3% zona2
5 34 168M 249M 1.0% 0:05:37 8.3% zona1
0 56 197M 280M 1.1% 0:00:44 0.2% global


Conclusión, Los MX000 son altamente configurables, el DR funciona muy bien, siempre y cuando sepamos hacer la configuración, a quien mover y vemos que no es necesario que la maquina no este estresada para realizar un movimiento de XSB`s.
Cualquier comentario bienvenido, cualquier silencio bienvenido, enjoy like me!!!!