두 가지 문제
홈서버를 며칠 돌려보니 두 가지가 눈에 띄었다.
- Immich 썸네일 생성 같은 작업이 걸리면 CPU 온도가 85°C까지 치솟는다. 24시간 켜두는 서버라 장기적으로 하드웨어에 좋지 않다.
- Grafana 대시보드를 보니 RAM 사용률이 38%인데 Swap을 26%나 사용하고 있었다. RAM이 절반도 안 찼는데 Swap을 쓰는 건 비정상이다.
두 문제를 각각 TLP + thinkfan, swappiness 튜닝으로 해결했다.
1부: TLP + thinkfan으로 온도 낮추기
TLP 설치
TLP는 Linux용 전력 관리 도구다. 설치만 해도 기본값으로 어느 정도 효과가 있고, ThinkPad에 맞게 튜닝하면 훨씬 효과적이다.
sudo apt install tlp tlp-rdw -y
sudo tlp start
설치 확인:
sudo tlp-stat -s
--- TLP 1.6.1 --------------------------------------------
+++ TLP Status
State = enabled
Mode = AC
Power source = AC
TLP 튜닝
sudo vi /etc/tlp.conf
아래 항목을 찾아서 주석 해제 후 값을 수정한다.
CPU_SCALING_GOVERNOR_ON_AC=powersave
CPU_ENERGY_PERF_POLICY_ON_AC=balance_power
CPU_BOOST_ON_AC=0
PLATFORM_PROFILE_ON_AC=balanced
핵심은 CPU_BOOST_ON_AC=0이다. 터보 부스트를 끄는 것만으로도 온도가 10~20°C 내려간다. 홈서버 용도에서는 최대 성능이 필요한 순간이 거의 없기 때문에 체감 성능 저하도 없다.
sudo tlp start
thinkfan 설치
thinkfan은 온도 구간별로 팬 속도를 직접 제어하는 도구다. ThinkPad 기본 팬 제어보다 세밀하게 조절할 수 있다.
sudo apt install thinkfan -y
thinkpad_acpi 팬 제어 권한 활성화:
echo "options thinkpad_acpi fan_control=1" | sudo tee /etc/modprobe.d/thinkpad_acpi.conf
sudo modprobe -r thinkpad_acpi
sudo modprobe thinkpad_acpi fan_control=1
센서 경로 확인:
find /sys/devices -name "temp*_input" 2>/dev/null
ThinkPad CPU 온도 센서는 보통 아래 경로에 있다.
/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp1_input
hwmon 뒤의 숫자는 환경마다 다를 수 있으니 직접 확인하자.
thinkfan 설정
sudo vi /etc/thinkfan.conf
sensors:
- hwmon: /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp1_input
fans:
- tpacpi: /proc/acpi/ibm/fan
levels:
- [0, 0, 55]
- [1, 50, 60]
- [2, 55, 65]
- [3, 60, 70]
- [4, 65, 75]
- [5, 70, 80]
- [7, 75, 255]
| 레벨 | 온도 구간 | 동작 |
|---|---|---|
| 0 | ~55°C | 팬 정지 |
| 1 | 50~60°C | 최저속 |
| 2 | 55~65°C | 저속 |
| 3 | 60~70°C | 중저속 |
| 4 | 65~75°C | 중속 |
| 5 | 70~80°C | 고속 |
| 7 | 75°C~ | 최대속 |
서비스 시작:
sudo systemctl enable thinkfan
sudo systemctl start thinkfan
sudo systemctl status thinkfan
온도 개선 결과
| 적용 전 | 적용 후 | |
|---|---|---|
| CPU 온도 (풀로드) | 85°C | 55~66°C |
| 팬 RPM | 3600 RPM | 1800 RPM |
| GPU 온도 | 79°C | 48~59°C |
TLP 터보 부스트 비활성화만으로도 약 20~30°C 온도가 내려갔다. 24시간 상시 운영 환경에서는 성능보다 안정성이 중요하기 때문에 이 설정이 최적이다.
부팅 시 자동 적용 확인
sudo systemctl is-enabled tlp
sudo systemctl is-enabled thinkfan
# 둘 다 "enabled" 출력되면 정상
2부: swappiness 튜닝
문제 발견
Grafana 대시보드를 보다가 이상한 걸 발견했다.

RAM 사용률은 37.8%인데 Swap을 26%나 쓰고 있었다. Swap은 SSD를 메모리처럼 쓰는 거라 RAM보다 훨씬 느리다. 불필요하게 Swap을 쓰면 전체 성능이 저하된다.
swappiness란?
vm.swappiness는 커널이 얼마나 적극적으로 Swap을 사용할지 결정하는 값이다.
| 값 | 설명 | 적합한 환경 |
|---|---|---|
| 0 | Swap 거의 사용 안 함 | RAM이 매우 넉넉한 서버 |
| 10 | RAM 거의 다 찰 때만 Swap 사용 | 홈서버, 일반 서버 |
| 60 | Ubuntu 기본값 | 데스크탑 |
| 100 | 적극적으로 Swap 사용 | RAM이 매우 부족한 환경 |
Ubuntu 기본값이 60인데, 홈서버처럼 RAM이 충분한 환경에서는 너무 높다.
튜닝 적용
즉시 적용:
sudo sysctl vm.swappiness=10
재부팅 후에도 유지:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
적용 확인:
cat /proc/sys/vm/swappiness
# 10
기존 Swap에 올라간 데이터를 RAM으로 옮겨서 효과를 바로 확인한다.
sudo swapoff -a && sudo swapon -a
튜닝 결과

기존 26%가량 사용하던 Swap이 7%대로 떨어진 것을 확인할 수 있다.
정리
온도 관리:
- TLP
CPU_BOOST_ON_AC=0하나로 온도 20~30°C 감소 - thinkfan으로 팬 커브를 직접 제어해서 불필요한 소음 줄임
- 홈서버는 성능보다 안정성이 중요하므로 터보 부스트 끄는 게 최선
Swap 튜닝:
- Ubuntu 기본값 swappiness=60은 데스크탑 기준, 서버는 10이 적합
swapoff -a && swapon -a로 기존 Swap 데이터를 RAM으로 즉시 이동 가능- 한 줄 설정으로 전반적인 시스템 응답성 개선
다음 편에서는 Portainer 대신 Spring Boot + React로 직접 만든 컨테이너 대시보드를 다룬다. SSE를 이용한 실시간 로그 스트리밍이 핵심이다.