Linux System Performance Tuning

Linux 시스템의 성능 튜닝은 시스템의 응답성을 향상시키고, 자원 사용을 최적화하며, 전반적인 성능을 개선하기 위해 다양한 설정과 최적화 기법을 적용하는 과정입니다. 성능 튜닝에는 CPU, 메모리, 디스크 I/O, 네트워크 등을 포함한 여러 측면에서 접근할 수 있습니다. 아래는 Linux 시스템 성능을 튜닝하기 위한 주요 방법들과 관련 명령어들입니다.

1. CPU 성능 튜닝

CPU 주파수 조정

CPU 주파수 스케일링을 통해 CPU의 클럭 속도를 조정할 수 있습니다. cpufreq 유틸리티를 사용하여 CPU 주파수를 조절합니다.

# 현재 CPU 주파수 설정 확인
cpufreq-info

# CPU 주파수 설정 (예: performance 모드로 설정)
sudo cpufreq-set -g performance

프로세스 우선순위 조정

nicerenice 명령어를 사용하여 프로세스의 우선순위를 조정할 수 있습니다.

# 새 프로세스를 높은 우선순위로 시작
nice -n -10 command

# 실행 중인 프로세스의 우선순위 변경
sudo renice -n -10 -p <pid>

2. 메모리 성능 튜닝

스왑 공간 관리

스왑 메모리는 물리적 메모리가 부족할 때 사용되는 디스크 공간입니다. 스왑 사용을 최소화하는 것이 좋습니다.

# 스왑 사용량 확인
swapon --show

# 스왑 사용 비율 조정 (0은 스왑을 거의 사용하지 않도록 설정)
sudo sysctl vm.swappiness=10

캐시 및 버퍼 관리

파일 시스템 캐시를 관리하여 I/O 성능을 개선할 수 있습니다.

# 캐시 비우기
sudo sysctl -w vm.drop_caches=3

3. 디스크 I/O 성능 튜닝

파일 시스템 선택 및 조정

파일 시스템의 종류에 따라 성능이 크게 달라질 수 있습니다. 예를 들어, ext4, xfs, btrfs 등의 파일 시스템을 사용합니다.

# 디스크 마운트 시 최적화 옵션 추가 (예: noatime 옵션으로 액세스 시간을 기록하지 않음)
sudo mount -o noatime /dev/sda1 /mnt

I/O 스케줄러 조정

I/O 스케줄러를 조정하여 디스크 I/O 성능을 개선할 수 있습니다.

# 현재 I/O 스케줄러 확인
cat /sys/block/sda/queue/scheduler

# I/O 스케줄러 변경 (예: noop, deadline, cfq 등)
echo noop | sudo tee /sys/block/sda/queue/scheduler

4. 네트워크 성능 튜닝

네트워크 파라미터 조정

sysctl 명령어를 사용하여 네트워크 관련 파라미터를 조정할 수 있습니다.

# 네트워크 패킷 수신 큐 크기 조정
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216

# TCP 윈도우 크기 조정
sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 16777216'
sudo sysctl -w net.ipv4.tcp_wmem='4096 65536 16777216'

네트워크 인터페이스 조정

ethtool 명령어를 사용하여 네트워크 인터페이스를 최적화할 수 있습니다.

# 네트워크 인터페이스 속도 및 듀플렉스 설정
sudo ethtool -s eth0 speed 1000 duplex full

# 네트워크 인터페이스의 링 버퍼 크기 조정
sudo ethtool -G eth0 rx 4096 tx 4096

5. 기타 성능 튜닝 기법

시스템 서비스 관리

불필요한 서비스를 비활성화하여 시스템 자원을 절약할 수 있습니다.

# 시스템 서비스 목록 확인
systemctl list-unit-files --type=service

# 불필요한 서비스 비활성화
sudo systemctl disable <service_name>

커널 파라미터 조정

sysctl 명령어를 사용하여 커널 파라미터를 조정할 수 있습니다.

# 커널 파라미터 설정 예제
sudo sysctl -w vm.dirty_ratio=10
sudo sysctl -w vm.dirty_background_ratio=5

성능 모니터링 도구

tophtop

시스템의 실시간 성능을 모니터링하는 데 사용합니다.

# top 실행
top

# htop 실행 (htop은 별도 설치 필요)
sudo apt install htop
htop

iostat

디스크 I/O 성능을 모니터링하는 데 사용합니다.

# iostat 설치 및 실행
sudo apt install sysstat
iostat -x 1

netstatss

네트워크 연결 및 성능을 모니터링하는 데 사용합니다.

# netstat 실행
netstat -tuln

# ss 실행
ss -tuln

vmstat

시스템 메모리, 프로세스, I/O, CPU 성능을 모니터링하는 데 사용합니다.

# vmstat 실행
vmstat 1

결론

Linux 시스템 성능 튜닝은 시스템의 다양한 측면에서 이루어져야 하며, 각 튜닝 방법이 시스템에 미치는 영향을 신중하게 평가해야 합니다. 위의 방법들을 통해 시스템 성능을 최적화할 수 있습니다. 성능 모니터링 도구를 사용하여 현재 시스템 상태를 지속적으로 모니터링하고, 필요한 경우 추가적인 최적화를 적용해 나가는 것이 중요합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *