리눅스 서버를 튜닝해보자 - 커널 파라미터
- Published on
- Published on
- Authors
- Name
- 신주용
커널 파라미터(Kernel Parameter)란 리눅스 커널의 동작을 제어하고 최적화하는 데 사용되는 설정값입니다12. 주로 메모리 관리, 프로세스 스케줄링, 네트워크 성능 등에 관련된 값을 조정하는 데 사용되는데 운영체제 실행 중에도 값을 변경하고 적용할 수 있습니다.
커널 파라미터를 조회하거나 수정하는 방법은 크게 세 가지가 있습니다. (1) sysctl
명령어를 사용하거나, (2) /proc/sys
에 있는 가상 파일을 수정하거나, (3) /etc/sysctl.conf
또는 /etc/sysctl.d/*
에 추가해 영구적으로(재부팅 후에도 적용되도록) 설정할 수 있습니다. 추가적으로 리눅스에는 미리 정의된 프로파일로 커널 파라미터를 편하게 수정할 수 있는 tuned
라는 프로그램이 있습니다3. 이 프로파일을 적용하면 미리 설정된 파라미터 값으로 적용되고 사용자가 수동으로 설정한 값은 무시됩니다.
사용 예시
- Kubernetes 설치를 하다 보면
net.ipv4.ip_forward
파라미터를1
로 설정(기본값 0)하는 과정이 있습니다4. 이 파라미터를 설정하면 커널이 패킷을 수신했을 때 목적지가 자신이 아닌 경우에도 해당 패킷을 다른 인터페이스로 전달 가능해집니다. 이는 라우터와 같은 역할 수행이 가능하기 때문에 CNI(Container Network Interface)에서 서로 다른 노드에 있는 Pod 간 통신, 컨테이너에서 외부로 나가는 통신 등을 가능케 하는 데 필요합니다. - MySQL DB 설치 시에는
vm.swappiness
를1
~10
정도로 작게 주는 것이 권장됩니다5. DB는 디스크 I/O가 중요하기 때문에 스왑 사용을 최소화하여 성능 저하를 방지합니다.
ulimit과의 차이
리눅스에는 커널 파라미터와 비슷하게 시스템 자원 관리에 사용 가능한 ulimit
이라는 것이 있습니다. 다만 이 둘은 그 역할과 적용 범위에 차이가 있습니다. 커널 파라미터는 시스템의 성능, 보안, 네트워크 등을 조정하는 데 사용됩니다. 반면 ulimit은 커널 자체보다는 특정 사용자 또는 프로세스가 사용할 수 있는 자원의 한계를 설정하는 데 주로 사용됩니다.
참고: 이 글에서 언급되었으나 깊게 설명하지 않은 내용입니다.
- Linux Kernel
Footnotes
"Chapter 5. Configuring kernel parameters at runtime." Red Hat Documentation. https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/managing_monitoring_and_updating_the_kernel/configuring-kernel-parameters-at-runtime_managing-monitoring-and-updating-the-kernel (accessed Feb. 6, 2025). ↩
"커널 파라미터에 관하여." 에스코어. https://s-core.co.kr/post_os/커널-파라미터에-관하여/ (accessed Feb. 6, 2025). ↩
"tuned-adm(1) - Linux man page." die.net. https://linux.die.net/man/1/tuned-adm (accessed Feb. 6, 2025). ↩
"Container Runtimes." Kubernetes Documentation. https://kubernetes.io/docs/setup/production-environment/container-runtimes/#network-configuration (accessed Feb. 6, 2025). ↩
Denis Subbota. "Don’t Start Using Your MySQL Server Until You’ve Configured Your OS." Percona. https://www.percona.com/blog/dont-start-using-your-mysql-server-until-youve-configured-your-os/ (accessed Feb. 6, 2025). ↩