S/W License 등의 문제로 CPU Core를 Disabled 시켜야 할 때가 있다. 
다음 글은 SPARC 계열 중에 T계열 장비의 CPU Core를 제한하는 방법에 대해 알아 본다.


방법 1. ILOM에서 쓰레드 단위로 disabled 
    장점 : ILOM에 대한 이해(H/W -> S/W tier)하고 있다면, 가장 쉽게 할 수 있다.
    단점 : 경고등이 출력되어서 육안점검의 의미가 없다.

방법 2. LDom을 설치하여 primary domain에 cpu를 원하는 만큼 할당
           장점 : 경고등이 안뜨며, 깔끔하게 CPU Core를 줄이거나, 다시 복구 시킬 수 있다.
           단점 : LDom의 기본 개념을 알아야 하며, 서버에 패키지를 설치하여야 한다.


다음 문서는 방법1에 대해서만 기술하고 기회가 있을때 LDom(OVM : Oracle Virtual Machine)에 대해 기술하겠다.

 
1. CPU 보기 

 [T5220:/]prtdiag -v | more     ---> CPU, Memory 등 전반적인 hardware 확인
시스템 구성:  Sun Microsystems  sun4v SPARC Enterprise T5220
메모리 크기: 16512 MB
================================ 가상 CPU ================================
CPU ID Frequency Implementation         Status
------ --------- ---------------------- -------
0      1165 MHz  SUNW,UltraSPARC-T2     on-line 
1      1165 MHz  SUNW,UltraSPARC-T2     on-line 
2      1165 MHz  SUNW,UltraSPARC-T2     on-line 
3      1165 MHz  SUNW,UltraSPARC-T2     on-line 
4      1165 MHz  SUNW,UltraSPARC-T2     on-line 
5      1165 MHz  SUNW,UltraSPARC-T2     on-line 
6      1165 MHz  SUNW,UltraSPARC-T2     on-line 
7      1165 MHz  SUNW,UltraSPARC-T2     on-line 
8      1165 MHz  SUNW,UltraSPARC-T2     on-line 
9      1165 MHz  SUNW,UltraSPARC-T2     on-line 
10     1165 MHz  SUNW,UltraSPARC-T2     on-line 
11     1165 MHz  SUNW,UltraSPARC-T2     on-line 
12     1165 MHz  SUNW,UltraSPARC-T2     on-line 
13     1165 MHz  SUNW,UltraSPARC-T2     on-line 
14     1165 MHz  SUNW,UltraSPARC-T2     on-line 
15     1165 MHz  SUNW,UltraSPARC-T2     on-line 
16     1165 MHz  SUNW,UltraSPARC-T2     on-line 
17     1165 MHz  SUNW,UltraSPARC-T2     on-line 
18     1165 MHz  SUNW,UltraSPARC-T2     on-line 
19     1165 MHz  SUNW,UltraSPARC-T2     on-line 
20     1165 MHz  SUNW,UltraSPARC-T2     on-line 
21     1165 MHz  SUNW,UltraSPARC-T2     on-line 
22     1165 MHz  SUNW,UltraSPARC-T2     on-line 
23     1165 MHz  SUNW,UltraSPARC-T2     on-line  


[T5220:/]psrinfo -vp
물리적 프로세서에 24 가상 프로세서 있음(0-23)
  UltraSPARC-T2 (chipid 0, clock 1165 MHz)


만약 해당 시스템의 Core당 Threads 확인하고 자 할 때 아래의 shell 파일을 넣어서 실행한다. 
그러면 보다 자세히 알 수 있다.
[T5220:/]vi /showcpuinfo
#!/bin/bash

/usr/bin/kstat -m cpu_info | egrep "chip_id|core_id|module: cpu_info" > /var/tmp/cpu_info.log

nproc=`(grep chip_id /var/tmp/cpu_info.log | awk '{ print $2 }' | sort -u | wc -l | tr -d ' ')`
ncore=`(grep core_id /var/tmp/cpu_info.log | awk '{ print $2 }' | sort -u | wc -l | tr -d ' ')`
vproc=`(grep 'module: cpu_info' /var/tmp/cpu_info.log | awk '{ print $4 }' | sort -u | wc -l | tr -d ' ')`

nstrandspercore=$(($vproc/$ncore))
ncoresperproc=$(($ncore/$nproc))

speedinmhz=`(/usr/bin/kstat -m cpu_info | grep clock_MHz | awk '{ print $2 }' | sort -u)`
speedinghz=`echo "scale=2; $speedinmhz/1000" | bc`

echo "Total number of physical processors: $nproc"
echo "Number of virtual processors: $vproc"
echo "Total number of cores: $ncore"
echo "Number of cores per physical processor: $ncoresperproc"
echo "Number of hardware threads (strands or vCPUs) per core: $nstrandspercore"
echo "Processor speed: $speedinmhz MHz ($speedinghz GHz)"

# now derive the vcpu-to-core mapping based on above information #

echo -e "\n** Socket-Core-vCPU mapping **"
let linenum=2

for ((i = 1; i <= ${nproc}; ++i ))
do
        chipid=`sed -n ${linenum}p /var/tmp/cpu_info.log | awk '{ print $2 }'`
        echo -e "\nPhysical Processor $i (chip id: $chipid):"

        for ((j = 1; j <= ${ncoresperproc}; ++j ))
        do
                let linenum=($linenum + 1)
                coreid=`sed -n ${linenum}p /var/tmp/cpu_info.log | awk '{ print $2 }'`
                echo -e "\tCore $j (core id: $coreid):"

                let linenum=($linenum - 2)
                vcpustart=`sed -n ${linenum}p /var/tmp/cpu_info.log | awk '{ print $4 }'`

                let linenum=(3 * $nstrandspercore + $linenum - 3)
                vcpuend=`sed -n ${linenum}p /var/tmp/cpu_info.log | awk '{ print $4 }'`

                echo -e "\t\tvCPU ids: $vcpustart - $vcpuend"
                let linenum=($linenum + 4)
        done
done

rm /var/tmp/cpu_info.log




[T5120:/]/showcpuinfo
Total number of physical processors: 1                                     --> 물리적 CPU 갯 수
Number of virtual processors: 32                                              --> 총 쓰레드 갯 수(CPU * Core * Thread)
Total number of cores: 4                                                         --> 총 코어 갯 수
Number of cores per physical processor: 4                                --> 물리적 CPU 당 Core 갯 수
Number of hardware threads (strands or vCPUs) per core: 8      --> Core 당 Thread 갯 수
Processor speed: 1165 MHz (1.16 GHz)                                    --> CPU Clock 

** Socket-Core-vCPU mapping **

Physical Processor 1 (chip id: 0):
        Core 1 (core id: 516):
                vCPU ids: 0 - 7
        Core 2 (core id: 523):
                vCPU ids: 16 - 23
        Core 3 (core id: 530):
                vCPU ids: 24 - 31
        Core 4 (core id: 537):
                vCPU ids: 32 - 39



2. ILOM에서 CPU 죽이기
     ILOM에서는 CPU를 코어 단위가 아닌 쓰레드 단위로 disable 시킬 수 있다.
     가장 이상적인 방법은 쓰레드 단위로 disable 시키되 코어를 맞춰주는 것이다.


-> cd /SYS/MB/CMP0
해당 경로는 CPU 0번 슬롯에 꽃혀있는 phsical CPU를 의미한다. 해당 경로에서 show 명령을 치면 P{숫자}로 쓰레드 단위로 나오는데,
해당 위치에 가서 설정 값 component_state=disabled 해주면 해당 쓰레드는 안쓰게 된다. 그 외에 여기서에 CPU의 최고온도 최저온도 등의 설정 값도 확인할 수 있다.

-> cd /SYS/MB/CMP0
/SYS/MB/CMP0

-> show

/SYS/MB/CMP0
    Targets:
        NIU0
        NIU1
        PIU0
        MCU0
        MCU1
        MCU2
        MCU3
        L2_BANK0
        L2_BANK1
        L2_BANK2
        L2_BANK3
        L2_BANK4
        L2_BANK5
        L2_BANK6
        L2_BANK7
        BR0
        BR1
        BR2
        BR3
        CORE0
        CORE2
        CORE3
        CORE4
        P0
        P1
        P2
        P3
        P4
        P5
        P6
        P7
        P16
        P17
        P18
        P19
        P20
        P21
        P22
        P23
        P24
        P25
        P26
        P27
        P28
        P29
        P30
        P31
        P32
        P33
        P34
        P35
        P36
        P37
        P38
        P39
        T_TCORE
        T_BCORE

    Properties:
        type = Host Processor

    Commands:
        cd
        show




-> set /SYS/MB/CMP39 component_staate=disabled  

-> reset /SYS



ERROR: The following devices are disabled:
    MB/CMP0/P32
    MB/CMP0/P33
    MB/CMP0/P34
    MB/CMP0/P35
    MB/CMP0/P36
    MB/CMP0/P37
    MB/CMP0/P38
    MB/CMP0/P39

부팅 과정에 에러 메시지가 뜨면서 경고등이 들어온다.


+ Recent posts