본문 바로가기
프로그래밍/OS

RHEL8 기본 튜닝 가이드

by 남생 namsaeng 2022. 4. 20.
반응형

Linux로 서버를 구축할 때, 기본적인 하드웨어 및 커널 파라미터를 설정하여 시스템(또는 서비스)의 성능을 향상시킬 수 있다.

 

 

1. Turbo Boost : Enabled 

 

1) 터보 부스트 개요

  • 까다로운 작업이 실행 중일 때, 특정 버전의 작동 주파수를 자동으로 높여 더 높은 성능을 발휘하게 하는 CPU 동적주파수 조정기능이다.

 


2) 터보 부스트 설정상태 확인

[root@localhost ~]# grep flags /proc/cpuinfo | grep -q " ida " && echo Turbo mode is on || echo Turbo mode is off
Turbo mode is on




3) 터보 부스트 활성화 방법

  •  부팅시 [Delete 키] > [System Setup Utility] > [Advanced] > [Power & Performance] > [CPU - Power Management Control] > [Turbo Mode] > [Enabled]



2. Hypher Thread : Enabled

 

1) 하이퍼스레드 개요

  • 하이퍼 스레딩의 목표는 독립적인 명령의 수를 늘리는 것으로, CPU가 여러 명령 파이프라인을 관리하여 동시 클록 시간에 여러 명령을 실행하는 것이다.


2) 하이퍼스레딩 성능

  • CPU의 코어를 하이퍼스레딩 하면 하이퍼스레딩 한 코어와 호환되는 작업에 따라 성능과 속도가 사례별로 향상된다.
  • PC의 전반적인 처리 능력을 향상시키려는 경우 하이퍼스레딩이 올바른 방향이 될 수도 있다.
  • 하이퍼스레딩 기능이 꺼져 있으면 시스템의 응답 속도가 향상(CPU당 캐시, CPU당 메모리 할당, CPU 스케줄러 할당 및 프로세스 우선순위 복잡성)


3) 하이퍼스레딩의 성능실험 예시(2007년, Intel Xeon Processor)

https://blog.daum.net/jjiyong/12873053

 

Hyper-Threading

하이퍼 쓰레딩(Hyper-Threading)으로 리눅스 속도 향상 (한글) 싱글 프로세서 상의 멀티프로세서 퍼포먼스   난이도 : 초급 Duc Vianney, Ph. D., Linux Kernel Performance Group, Linux Technology Center,..

blog.daum.net

 

4) 하이퍼스레딩 활성화 방법

  • 부팅 시 [Delete 키] > [System Setup Utility] > [Advanced] > [CPU Configuration] > [Hyper-Threading] > [Enabled]

 

5) 개별 하이퍼스레딩 ON/OFF 방법

  • cpu0과 cpu4에 시스템 스레드가 고정되어 있을 때, 0으로 덮어 씌우면 시스템이 다운된다.
[root@localhost ~]# cat /sys/devices/system/cpu/isolated
1-3,5-7
[root@localhost ~]# echo 0 > /sys/devices/system/cpu/cpu5/online
[root@localhost ~]# cat /sys/devices/system/cpu/cpu5/online
0
[root@localhost ~]# echo 1 > /sys/devices/system/cpu/cpu5/online
[root@localhost ~]# cat /sys/devices/system/cpu/cpu5/online
1


3. Isolate cores

 

1) 코어 격리 개요

  • 기본적으로 커널 스케줄러는 사용 가능한 모든 코어에서 모든 스레드를 로드 밸런싱 하는데, 애플리케이션 성능 향상을 위해 시스템 스레드가 애플리케이션 스레드를 방해하지 않도록 해야 한다. 격리된 코어에 대한 스케줄러 로드 밸런싱을 비활성화하고 기본적으로 스레드가 격리되지 않은 코어로 제한된다. 중요한 애플리케이션 스레드를 실행할 때, 격리된 코어에 실행해야 한다.

 

2) 코어 격리 방법

  • 각 logical core의 core id를 확인한다.
  • 테스트에 사용한 PC에서는 {0,4} {1,5} {2,6} {3,7}이 core id가 같다. 즉, 4번은 0번 코어의 하이퍼스레딩이다.
[root@localhost ~]# cat /proc/cpuinfo 
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Xeon(R) CPU E3-1505L v6 @ 2.20GHz
...

 

 

  • cpu0과 cpu4에  시스템 스레드를 고정한다.
[root@localhost ~]# tuna --cpus=1,2,3,5,6,7 --isolate

 

  • 격리 확인
[root@localhost ~]# cat /sys/devices/system/cpu/isolated
1-3,5-7

 

  • 모든 workqueue를 core 0으로 이동
[root@localhost ~]# find /sys/devices/virtual/workqueue -name cpumask  -exec sh -c 'echo 11 > {}' ';'

 

  • 현재 workqueue의 affinities 확인
[root@localhost ~]# find /sys/devices/virtual/workqueue -name cpumask -print -exec cat '{}' ';'



 

  • 코어당 스레드 컨텍스트 전환이 몇 번 발생했는지 및 성공적으로 코어가 분리되었는지 확인
  • 격리된 코어는 매우 낮은 컨텍스트 스위치 수를 보여야 한다.
[root@localhost ~]# perf stat -e 'sched:sched_switch' -a -A --timeout 10000

 Performance counter stats for 'system wide':

CPU0                  170,530    sched:sched_switch                                          
CPU1                        9      sched:sched_switch                                          
CPU2                       17      sched:sched_switch                                          
CPU3                        9      sched:sched_switch                                          
CPU4                    5,293      sched:sched_switch                                          
CPU5                        9      sched:sched_switch                                          
CPU6                        9      sched:sched_switch                                          
CPU7                       13      sched:sched_switch                                          

      10.010220560 seconds time elapsed



더 많은 내용은 아래의 링크에 있으니 참고 바랍니다.


https://rigtorp.se/low-latency-guide/

 

Low latency tuning guide

This guide describes how to tune your AMD64/x86_64 hardware and Linux system for running real-time or low latency workloads.

rigtorp.se

 

 

반응형

댓글