Kernel
Jump to navigation
Jump to search
Kernel
Overview
Linux 커널은 운영체제의 핵심으로, 하드웨어 자원 관리, 프로세스 스케줄링, 메모리 관리, 디바이스 드라이버, 네트워킹 스택을 담당합니다.
Summary
- 무엇인가? — Linux 운영체제의 핵심 컴포넌트 (OS kernel)
- 왜 필요한가? — 하드웨어 추상화, 자원 관리, 시스템 안정성
- 언제 사용하는가? — 모든 Linux 시스템, 서버, 임베디드, HPC
Purpose
이 문서가 존재하는 이유
- Goal: Linux 커널 부트 파라미터, 튜닝, 로그 분석, 팁/트릭 정보를 한 곳에서 제공
- Scope: 커널 부트 파라미터, sysctl 튜닝, 커널 로그 분석, 실용적인 팁
- Non-goals: 커널 소스 코드 수정, 커널 컴파일은 별도 문서
Key Concepts
| Concept | Description | Related |
|---|---|---|
| Kernel Boot Param | 부팅 시 커널에 전달되는 파라미터 | Kernel boot param |
| Sysctl | 런타임 커널 파라미터 조정 | Linux kernel parameter |
| Kernel Log | 커널 메시지 (dmesg, journalctl) | Kernel log tips and tricks |
| Tunable Params | 성능 튜닝을 위한 커널 파라미터 | Tunable kernel params |
| Kernel Tips | 커널 관련 실용적인 팁/트릭 | Kernel tips and tricks |
Architecture
Linux 커널은 다음과 같은 주요 컴포넌트로 구성됩니다:
graph TD
A[Linux Kernel] --> B[Process Scheduler]
A --> C[Memory Manager]
A --> D[Virtual File System]
A --> E[Network Stack]
A --> F[Device Drivers]
A --> G[Security Module]
B --> H[CFS Scheduler]
C --> I[Page Cache]
C --> J[Swap Manager]
Workflow
| Stage | Input | Output |
|---|---|---|
| Boot | Kernel boot params | Kernel initialized |
| Runtime Tuning | sysctl command | Parameter changed |
| Log Analysis | dmesg / journalctl | Issue identified |
Detailed Explanation
Kernel Boot Parameters
커널 부트 파라미터는 시스템 부팅 시 커널에 전달되는 설정 옵션입니다. GRUB에서 수정하거나 커맨드 라인에서 전달할 수 있습니다.
Linux Kernel Parameters (sysctl)
sysctl를 통해 런타임에 커널 파라미터를 조정할 수 있습니다. 재부팅 없이 네트워크, 메모리, 프로세스 관련 설정을 변경할 수 있습니다.
Kernel Log Tips and Tricks
dmesg와 journalctl을 통해 커널 로그를 분석하고 문제를 진단합니다. 일반적인 에러 패턴과 해결 방법을 제공합니다.
Tunable Kernel Parameters
성능 튜닝을 위한 주요 커널 파라미터 (vm.min_free_kbytes, net.ipv4.tcp_fin_timeout 등) 설정 방법을 제공합니다.
Kernel Tips and Tricks
커널 관련 실용적인 팁, ARM FPU 확인, 커널 모듈 관리 등 다양한 주제를 다룹니다.
Configuration
# 커널 부트 파라미터 확인
cat /proc/cmdline
# 커널 파라미터 확인
sysctl -a | grep <parameter>
# 커널 파라미터 변경
sudo sysctl -w <parameter>=<value>
# 커널 로그 확인
dmesg | tail -50
journalctl -k -n 50
# 커널 모듈 확인
lsmod
modinfo <module_name>
Examples
Example 1: 메모리 튜닝
# 최소 프리 메모리 설정
sudo sysctl -w vm.min_free_kbytes=65536
# 영구 적용
echo "vm.min_free_kbytes=65536" | sudo tee -a /etc/sysctl.conf
Example 2: 네트워크 튜닝
# TCP FIN Timeout 단축
sudo sysctl -w net.ipv4.tcp_fin_timeout=30
# TCP Keepalive 시간 설정
sudo sysctl -w net.ipv4.tcp_keepalive_time=600
Best Practices
- 부트 파라미터 변경 전 백업
- sysctl 변경 전 테스트 환경에서 검증
- 커널 로그 정기 확인
- 불필요한 커널 모듈 비활성화
- 커널 업데이트 정기 적용
Limitations
- 일부 파라미터는 런타임 변경 불가
- 잘못된 설정은 시스템 불안정 초래
- 커널 재부팅이 필요한 설정 존재
References
- https://www.kernel.org/doc/
- https://man7.org/linux/man-pages/man8/sysctl.8.html
- https://wiki.ubuntu.com/Kernel
Related Pages
- Kernel boot param
- Linux kernel parameter
- Kernel log tips and tricks
- Kernel tips and tricks
- Tunable kernel params
- Linux Kernel Tuning
Knowledge Graph
Related
→ Linux Kernel Tuning → THP (Transparent Huge Pages) → Kernel tips and tricks → Kernel boot param → Linux Kernel → Tunable kernel params