나그네소
Goldilocks PPC64LE 설치 및 IBM 설정 본문
<< BLOG 정보 >>
SUNDB에서 PPC64LE 설치 및 IBM 환경설정 값을 기록 합니다.
<< IBM PPC64LE 정보 >>
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
50G 3.6G 44G 8% /
tmpfs 9.8G 0 9.8G 0% /dev/shm
/dev/sda2 485M 44M 416M 10% /boot
/dev/mapper/VolGroup-lv_home
76G 4.4G 67G 7% /home
/home/IBM-files/IBM_Installation_Toolkit_54.iso
863M 863M 0 100% /media/IBM-Installation_Toolkit
여기에는 !PowerLinux에서 제공되는 최적화된 gcc인 gcc 4.7.3이 설치되어 있습니다. 개발하실 때는, .bash_profile 등에 PATH 환경
변수를 다음과 같이 설정 하여야 하며, 항상 gcc를 찾을 때는 /opt/at6.0/bin/gcc 및 /opt/at6.0/bin/ld 등이 사용될 수 있도록 하여
야 합니다.
참고 : /opt/at6.0/bin/gcc 환경이 중요하다. PPC64LE에서 gcc compile library 옵션에 따라 CPU 성능 차이가 발생 할 수 있고
gcc version8 이상 이어야 한다.
export PATH=/opt/at6.0/bin/gcc:$PATH
[root@!PowerLinux2 ~]# gcc --version
gcc (GCC) 4.7.3 20130116 (Advance-Toolchain-6.0-3) [ibm/gcc-4_7-branch merged from gcc-4_7-branch, revision 196357]
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Default로는 64bit으로 compile 되며, 32bit으로 compile하기 위해서는 -m32 라는 option을 주시면 됩니다.
추가로 필요하신 fileset 등이 있으시다면, 여기에는 /homr/yum directory에 local YUM repository가 설치
되어 있으므로, 다음과 같이 필요에 따라 설치해서 쓰시면 됩니다.
참고 : IBM repository를 따로이 받아야 한다.
[root@!PowerLinux2 ~]# yum list | grep lsof
lsof.ppc64 4.82-4.el6 rhel64-ppc.repo
[root@!PowerLinux2 ~]# yum install lsof.ppc64
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
rhel64-ppc.repo | 2.9 kB 00:00 ...
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package lsof.ppc64 0:4.82-4.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
lsof ppc64 4.82-4.el6 rhel64-ppc.repo 318 k
Transaction Summary
==========================================================================================
Install 1 Package(s)
Total download size: 318 k
Installed size: 917 k
Is this ok [y/N]:
2-1) 장비정보
1) CPU : POWER7+ 64core, 4.2GHz
2) Memory : 1TB
3) HDD : 1.2GB
4) SSD : 4.6GB
5) 기타 I/O : HBA, NIC 등
3. power64le 진행 정보.
3-1) IBM powerlinux wiki 경로
4. cpu 설정 정보
[root@7R2 ~]# cat /proc/cpuinfo | grep -m 1 cpu
cpu : POWER7 (architected), altivec supported
[root@7R2 ~]# ppc64_cpu --smt
SMT is on
[root@7R2 ~]# ppc64_cpu --frequency
min: 4.23 GHz (cpu 0)
max: 4.23 GHz (cpu 30)
avg: 4.23 GHz
--> 여기서 min, max는 cpu 사용 현황을 볼 수 있는 것으로 보인다.
ppc64_cpu --smt=1 will "turn off" cpu1,cpu2, cpu3 of the four CPUs associated with each core, leaving cpu0 running. 0,1,2,3 is just the example for the first core. That repeats up through the CPUs.
ppc64_cpu --smt=2 insures that cpu0, cpu1 are "on", and cpu2, cpu3 are "off" for each core.
ppc64_cpu --smt=4 insures that all cpus are "on"
현재 장비의 core는 64개로 나옵니다. 실제는 16 core 입니다. POWER7 에서는 디폴트로 SMT=4로 활성화 됩니다.
또한 컴파일 시에는 -O3 -mtune=power7 -mcpu=power7 추가로 포함되어야 합니다.
[root@bogon ~]# lscpu
Architecture: ppc64le
Byte Order: Little Endian
CPU(s): 176
On-line CPU(s) list: 0-175
Thread(s) per core: 4
Core(s) per socket: 22
Socket(s): 2
NUMA node(s): 2
Model: 2.2 (pvr 004e 1202)
Model name: POWER9, altivec supported
CPU max MHz: 3800.0000
CPU min MHz: 2154.0000
L1d cache: 32K
L1i cache: 32K
L2 cache: 512K
L3 cache: 10240K
NUMA node0 CPU(s): 0-87
NUMA node8 CPU(s): 88-175
참고 : 실제 물리적인 CPU는 44 CORE 이다.
4. cpu에 대한 기록 정보
1> 메일 내용 중에 CPU 관련된 정보 기록합니다.
CORE에 RUNNING 되는 순서는 아래와 같습니다.
core 가 1 ~ 64개 까지 있으면, 1, 5, 9.... 등이 primary thread라서, 아직 부하가 심하지 않은 경우에는 그 primary thread들
만 사용됩니다. 그러다가 work process들이 많아지면 2, 6, 10...의 secondary thread들도 사용되기 시작하고, 부하가 70~80% 정
도를 넘어가면 나머지 2개 thread들도 마저 사용하게 됩니다.
만약 work process들의 개수가 많지 않아 primary thread만 100% 사용되는 경우, 그 해당 물리적 core의 65% 정도되는 computing
power를 쓰게 된다고 보시면 됩니다.
CPU의 L2, L3 cache의 사이즈 L2: 256 KB, L3: 10M
http://www.redbooks.ibm.com/redpapers/pdfs/redp4983.pdf 의 62~63페이지의 표에 잘 나와 있습니다.
cache line size
128 byte입니다. (이는 4개의 32-byte sector로 구성됩니다.)
http://www.serc.iisc.ernet.in/~govind/243/Power7.pdf 의 11페이지에 자료가 있습니다.
5. hugpage
IBM 쪽에서 Wisconsin을 실행하면서 프로파일링 결과를 보내줬습니다. 간단하게 생각하면, valgrind랑 비슷한데, 커널 단까지
샘플링 할 수 있습니다. 자세한 내용은 첨부 파일 및 첨부 통합 메일 14번 참조하시면 될 거 같습니다.
이 부분은 저희한테도 상당히 도움이 될 수 있을 것으로 생각됩니다. 추가로 디버그 패키지 요청 및 hugepage 테스트를 진행하고
싶어합니다. IBM 측에서는 해당 기술도 강점으로 생각하고 있는 거 같습니다.
-- 메일 내용 발췌
Hugepage에 대해서, Intel에서는 (POWER와는 달리) 기본으로 THP를 활용하도록 되어 있다고 합니다. 따라서 이 hugepage를 사용하는
것이 POWER에만 특히 도움이 될 것이라고 합니다. 문제는 프로퍼티로 셋팅이 되는게 아니라, 컴파일 시 옵션으로 들어가야 한다고 합니다.
우선 hugepage 테스트는 다른 테스트가 완료된 후에 추후 논의 하는 걸로 하였습니다.
5-1) hugpage 확인
cat /sys/kernel/mm/transparent_hugepage/enabled
ex)[root@bogon ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always [madvise] never
[always] madvise never -> 출력된 결과에 [always] 에 대괄호가 되어있으면 THP가 활성화 된 상태입니다.
always madvise [never] -> 출력된 결과에 [never] 에 대괄호가 되어있으면 THP가 비활성화 된 상태입니다
5-2) Hugpage 적용
* OS
* /etc/sysctl.conf
- 102,400개의 페이지(200G/2M페이지)를 관리하며, bimatrix 그룹(1001)이 사용 할 수 있도록 변경.
vm.nr_hugepages = 102400
vm.hugetlb_shm_group = 1001
- /hugpages 디렉토리 생성
- /etc/fstab
- hugetlbfs /hugepages hugetlbfs mode=1770,gid=1001 0 0
- 수정 후 sysctl -p로 적용
* goldilocks.properties.conf
- huge page를 사용 하도록 변경
USE_LARGE_PAGES = 1
- 변경 후 DB 재시작
-> Hug Page를 사용하도록 변경 후 , 처음 SQL 수행 시 느려지는 문제를 해결하였습니다.
참고 : IBM 장비에서 커널 단에서 사용 하는 Hugpage를 크기를 크게 하여 Goldilocks Library에 있는 Property 값을 이용 하면
성능 관련 최조 느린 부분을 해결 할 수 있다.
'sunjesoft > Goldilocks Util' 카테고리의 다른 글
Goldilocks 넷볼트(백업 솔루션) (0) | 2019.06.18 |
---|---|
Goldilocks 쿠버네티스 (0) | 2019.06.12 |
GOLDILOKCS HADOOP (0) | 2019.06.10 |
GOLDILOCKS ODBC 설치 (0) | 2019.01.30 |
Goldilocks Docker 사용 (0) | 2019.01.18 |