Supported commands: ls, cd ${PATH}

리눅스 커널 이야기

Oct. 9, 2021

Note: 본 문서는 '리눅스 커널 이야기 - 강진우 저'와 몇몇 링크들을 참고한 cheat sheet로, 커널의 동작 방식이나 파라미터에 대한 보다 자세한 내용은 책에서 찾아보실 수 있습니다.

1장 시스템 구성 정보 확인하기

uname -a
# 커널 정보 출력

dmesg
# 커널 ring buffer 메세지 출력

dmidecode -t
# 하드웨어 정보 출력

lscpu
cat /proc/cpuinfo
# cpu 정보 출력

free -m
# 메모리 정보 출력

df -h
# 디스크 정보 출력

ethtool eth0
# 네트워크 카드 정보 출력

2장 top을 통해 살펴보는 프로세스 정보들

pstree -a
ps aux
top
# 프로세스 정보 출력

3장 Load Average와 시스템 부하

uptime
cat /proc/loadavg

vmstat
cat /proc/sched_debug
# 가상 메모리 정보 출력

4장 free 명령이 숨기고 있는 것들

free -m
cat /proc/meminfo

5장 swap, 메모리 증설의 포인트

free -m
smem -t

6장 NUMA, 메모리 관리의 새로운 세계

7장 TIME_WAIT 소켓이 서비스에 미치는 영향

netstat -napo
# 네트워크 정보 출력

8장 TCP Keepalive를 이용한 세션 유지

9장 TCP 재전송과 타임아웃

ss -i
# 소켓 정보 출력

10장 dirty page가 I/O에 끼치는 영향

11장 I/O 작업이 지나가는 관문, I/O 스케줄러

iostat
iotop -P
# I/O 사용량 정보 출력

12장 애플리케이션 성능 측정과 튜닝

- 애플리케이션 워커 수를 cpu 코어 수 이상으로 설정

- 커넥션 풀 방식과 keepalive 옵션 등을 이용해서 TCP TIME_WAIT 소켓을 줄임

Appendix A 커널 디버깅을 위한 커널 컴파일

Appendix B strace를 통한 애플리케이션 분석

strace -s 65535 -f -T -tt # -p <pid>

Appendix C tcpdump와 와이어샤크를 통한 TCP 패킷 분석

tcpdump -vvv -nn -A host <IP> and port <port>
dropwatch

Reference

http://devo.ps/blog/troubleshooting-5minutes-on-a-yet-unknown-box/