CentOS 성능 튜닝 가이드
CentOS는 수많은 서버 및 워크로드용 운영 체제로 널리 사용되고 있습니다. 그러나 기본 구성으로는 어떤 사양의 서버에서도 최상의 성능을 제공하는 것은 아닙니다. 따라서 이 가이드에서는 CentOS에서 성능을 향상시키기 위한 몇 가지 중요한 튜닝 및 설정 방법을 소개하고자 합니다.
1. 시스템 리소스 관리
CPU 관리
- 프로세서 성능 조정:
CentOS에서는 기본적으로 “on-demand” CPU 스케줄링 정책이 사용됩니다. 이는 CPU 절전 기능을 위해 설계되어 있으며 일부 워크로드에서 충분한 성능을 제공하지 못할 수 있습니다.
$ sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX
변수에intel_pstate=disable
를 추가합니다.GRUB_CMDLINE_LINUX="intel_pstate=disable"
수정이 완료되면 다음 명령어를 실행하여 grub 설정을 업데이트합니다.
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo reboot
- CPU 큐 관리:
기본 큐 스케줄러인 CFQ (Completely Fair Scheduler)는 일부 워크로드에 대해 비효율적일 수 있습니다. 워크로드에 따라 더 효율적인 스케줄러인 NOOP (No Operation)이 더 나은 선택일 수 있습니다. 다음 명령어로 설정할 수 있습니다.
$ echo noop > /sys/block/sda/queue/scheduler
메모리 관리
- 스왑 메모리 비활성화:
CentOS에서는 기본적으로 스왑 메모리를 사용하여 메모리 부족 상황에서 시스템의 안정성을 유지하는 기능이 활성화되어 있습니다. 그러나 스왑 메모리는 디스크에 접근하기 때문에 성능에 부정적인 영향을 줄 수 있습니다. 따라서 일부 워크로드에서는 스왑을 비활성화하는 것이 좋습니다.
$ sudo vi /etc/fstab
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx swap swap defaults 0 0
라인을 주석 처리하거나 삭제합니다. - 페이지 캐싱 튜닝:
CentOS는 파일 시스템 캐시를 사용하여 디스크 IO 성능을 향상시킬 수 있습니다.
vm.dirty_ratio
및vm.dirty_background_ratio
매개변수를 조정하여 페이지 캐싱 정책을 변경할 수 있습니다. 예를 들어, 다음과 같이 설정할 수 있습니다.$ sudo sysctl -w vm.dirty_ratio=10 $ sudo sysctl -w vm.dirty_background_ratio=5
2. 디스크 및 파일 시스템 설정
- IO 스케줄링:
CentOS에서는 기본적으로 CFQ 스케줄러를 사용하여 디스크 IO를 관리합니다. 대부분의 경우 이것은 잘 동작하지만, 일부 워크로드에서는 더 나은 성능을 위해 다른 스케줄러를 사용할 수 있습니다. 예를 들어, NOOP 스케줄러는 디스크 IO의 처리 속도를 향상시킬 수 있습니다.
$ echo noop > /sys/block/sda/queue/scheduler
- 파일 시스템 설정:
CentOS에서는 기본적으로 ext4 파일 시스템을 사용합니다. ext4는 일반적으로 안정적이고 성능이 우수하며 다양한 플랫폼에서 지원됩니다. 그러나 더 나은 성능을 위해 xfs 파일 시스템을 사용하는 것도 고려해 볼 수 있습니다. 커널이 XFS로 인식하지 않을 수도 있으므로 다음 명령어를 사용하여 XFS 모듈을 로드합니다.
$ sudo modprobe xfs
3. 네트워크 성능 튜닝
- 네트워크 버퍼 크기 변경:
CentOS에서는 기본적으로 TCP와 UDP 바인딩을 감지하여 자동으로 버퍼 크기를 조정하는 기능이 활성화되어 있습니다. 그러나 특정 워크로드에서는 이 기능이 적절하지 않을 수 있습니다. 버퍼 크기를 수동으로 조정하려면 다음 명령어를 사용할 수 있습니다.
$ sudo sysctl -w net.core.rmem_max=67108864 $ sudo sysctl -w net.core.wmem_max=67108864
- TCP/IP 스택 설정:
TCP/IP 스택은 네트워크 통신을 처리하는 데 중요한 역할을 합니다. CentOS에서는 TCP/IP 스택의 설정을 변경하여 네트워크 성능을 향상시킬 수 있습니다. 예를 들어, 다음과 같이 설정할 수 있습니다.
$ sudo sysctl -w net.ipv4.tcp_slow_start_after_idle=0 $ sudo sysctl -w net.ipv4.tcp_max_syn_backlog=8192
4. 서비스 및 애플리케이션 설정
- 불필요한 서비스 비활성화:
CentOS는 기본적으로 많은 서비스가 실행되고 있습니다. 하지만 이러한 서비스 중 일부는 사용자의 요구사항에 맞지 않을 수 있습니다. 불필요한 서비스를 비활성화하면 시스템 리소스를 절약하고 성능을 향상시킬 수 있습니다. 예를 들어, 다음 명령어를 사용하여 서비스를 비활성화할 수 있습니다.
$ sudo systemctl disable <service-name>
- 애플리케이션 설정 최적화: 성능 향상을 위해 애플리케이션 설정을 최적화하는 것도 좋은 아이디어입니다. 애플리케이션에서 사용하는 쓰레드, 버퍼 크기, 캐시 설정 등을 확인하고 최적의 값을 사용하세요.
이 가이드는 CentOS에서 성능 튜닝을 위해 시작할 수 있는 몇 가지 주요한 사항을 다루었습니다. 그러나 각 시스템 및 워크로드는 고유한 요구사항을 가지므로 최상의 결과를 얻기 위해서는 추가적인 조사와 테스트가 필요할 수 있습니다. CentOS 성능 튜닝은 지속적인 프로세스이며, 시스템 및 애플리케이션 요구사항이 변경될 때마다 조정되어야 합니다.