전체 글 40

Out Of Memory Killer

Out Of Memory (OOM)시스템이 프로세스들의 메모리 요구를 더 이상 감당할 수 없는 상태.쉽게 말해 메모리가 부족한 상태.물리 RAM이 부족하고, swap 공간도 부족한 상황이다. OOM 발생 과정1. Memory Pressure : 사용 가능한 메모리가 줄어들며 커널이 캐시를 비우기 시작함.2. Swap Thrashing : RAM이 부족해 swap을 사용하기 시작하면서 시스템 속도가 급격하 느려짐. (I/O wait 상승)3. OOM 발생 : 더 이상 가용할 메모리가 없으면 커널은 시스템 전체가 멈추는 것을 막기 위해 OOM Killer를 호출 OOM 발생 대표적인 원인들1. 메모리 누수 : 특정 프로세스에서 메모리 할당 후 적절히 해제하지 않고 계속 쌓이면서 메모리 점유량이 상승하는 ..

Linux 2026.02.20

NUMA (Non-Uniform Memory Access)

멀티프로세서 시스템에서 메모리 접근 속도가 하드웨어의 물리적 위치에 따라 달라지는 메모리 설계 구조.-> CPU가 자신에게 가까운 메모리에 접근(Local Access)할 때는 빠르고, 먼 메모리에 접근(Remote Access)할 때는 상대적으로 느린 방식. 등장 배경과거에는 모든 CPU가 하나의 공유 버스를 통해 메모리에 연결됨. (UMA, Uniform Memory Access) 문제점 : 여러 CPU가 동시에 메모리에 접근이 불가능함. 성능 저하 발생. 이를 해결하기 위해 메모리를 노드 단위로 나누어 각 CPU 그룹에 할당하는 NUMA 방식 도입.NUMA는 여러 노드가 각자의 지역 메모리에 동시 접근이 가능하기 때문에 전체 대역폭이 증가하는 효과가 있다.또한, CPU와 메모리가 확장되도 버스 병목..

Linux 2026.02.12

가상 메모리

프로세스는 실제 물리 메모리 영역에 바로 매핑되는게 아니라 가상 메모리 영역에 매핑하여 실제 물리 메모리 영역을 추상화한다. 이점1. 물리 메모리 한계 극복- 물리 메모리보다 더 큰 프로세스도 실행이 가능하다. 실제 필요한 부분만 페이징. 2. 메모리 보호 및 독립성- 각 프로세스는 독립된 가상 주소를 가진다. 버그로 인해 잘못된 메모리 주소를 건드려도 프로세스 자신의 가상 공간 안에서 사고가 날 뿐 다른 프로세스나 OS 전체를 건드리지는 못함.- 이것은 시스템 해킹으로부터 안전함을 의미하는 것은 아님. 대부분의 시스템 해킹은 메모리 오염으로 발생하는데 이것은 가상 메모리 내부의 허점을 이용하거나 공유 메모리 영역을 침투함. 단지 코딩 실수나 얘기지 못한 버그로부터 보호하는 최소한의 안전 장치 3. ..

Linux 2026.01.26

lsof

list open files현재 시스템에 열려 있는 모든 파일의 목록을 보여준다. 리눅스는 일반 파일뿐만 아니라 디렉토리, 디바이스, 프로세스, 소켓 등 모든 것이 파일로 표현된다.따라서 해당 명령을 이용해서 특정 파일을 점유중인 프로세스를 체크하거나, 특정 포트를 어떤 프로세스가 사용중인지 확인하는 것이 가능하다. Column 값 설명COMMAND : 파일을 열고 있는 실행 프로그램 이름PID : 프로세스 IDTID : Task ID(=Thread ID)TASKCMD : 스레드 이름USER : 파일을 연 사용자FD : File Descriptor, 프로세스가 어떤 용도, 어떤 권한으로 열었는지숫자r : 읽기 전용 (숫자는 파일 디스크립터 번호)숫자w : 쓰기 전용숫자u : 읽기 쓰기 둘다 가능cwd :..

Linux 2026.01.19

dmesg

리눅스에서 커널 링 버퍼에 기록된 메시지들을 출력하는 명령어. 커널 링 버퍼 ? 커널 메시지가 저장되는 링 구조의 버퍼, 구조 상 오래된 메시지는 새로운 메시지로 덮어씌워짐.오래전 로그를 찾으려면 journalctl를 사용해야 한다. 쉽게 말해서 시스템이 부팅 시점부터 현재까지 커널 레벨에서 발생하는 하드웨어 인식, 드라이버 로드 같은 오류 메시지들을 실시간으로 확인할 수 있다. 주요 용도1. 부팅 로그 확인 : 시스템 부팅 시 cpu, memory, 디스크 등이 정상 인식되었는지 체크2. 하드웨어 장애 진단 : NIC, Disk Error 등 확인3. 드라이버 디버깅 : 드라이버 커널 정상 로딩 확인4. 시스템 다운 원인 파악 : 프로세스 강제 종료 or 재시작 현상 원인 파악 주요 사용 옵션dmesg..

Linux 2026.01.15

VFS (Virtual File System)

가상 파일 시스템은 다양한 파일 시스템들의 인터페이스 역할을 하는 개념이다.예를 들면, 파일 시스템은 xfs, ext4, fat32 등 다양하게 한 시스템 내에 공존할 수 있는데, 서로 다른 파일 시스템에 대한 표준(?)적인 인터페이스가 없으면 개발 시 파일 접근에 대해 각각 다르게 코드가 작성되어야 한다. VFS가 서로 다른 파일 시스템들을 커널 계층해서 추상화해주는 역할을 한다. VFS가 있기 때문에 open(), write() 같은 동일한 시스템 콜로 통일해서 사용할 수 있다. VFS를 구성하는 4가지 개념1. Super Block- 특정 파일 시스템 전체에 대한 정보를 담고 있다. (크기, 마운트 정보 등...) 2. Inode- 특정 파일에 대한 메타 데이터를 담고 있다. (크기, 소유자, 권..

Linux 2026.01.07

tcpdump

네트워크 패킷 수집을 하기 위해서 tcpdump를 사용한다.애플리케이션 응답 지연 같은 네트워크 이슈를 추적하기 위해 사용한다.수집한 패킷들을 직접 훑어 볼 수도 있고 덤프 뜬 파일을 와이어샤크 툴로 분석할 수도 있다. 자주 사용하는 옵션-nn : 대표 포트를 프로토콜로 치환하지 않고 포트 번호를 그대로 보여준다.-vvv : 출력 결과에 모든 정보를 포함한다.-A : 패킷의 페이로드를 ASCII 형태로 출력한다. 평문인 경우 전송되는 데이터를 볼 수 있다.-G [시간] : 입력한 시간 값 간격으로 패킷을 수집한다. (초 단위)-w [파일명] : 수집한 패킷 내용을 파일로 지정해서 저장한다.-Z : tcpdump 실행 권한 지정host [ip] and port [port] : 지정한 ip나 port가 포함..

Linux 2026.01.06

strace

프로세스가 동작하는 동안 호출하는 시스템 콜들을 추적할 수 있는 명령어. 기본적인 명령어 동작부터 서버에 올라와 있는 애플리케이션까지 시스템 콜 추적이 가능하고, 서버내 프로세스의 이상 동작이 의심될 경우에도 strace를 통해 프로파일링을 진행한다. 주요 옵션-s : 출력 문자열의 최댓 값. (기본=32, 최대=65535), 출력 값이 잘려서 나올 경우 해당 옵션으로 최댓 값을 주어 다시 실행-t : timestamp, (-tt : microseconds 단위까지 출력, -ttt : 유닉스 타임)-T : 각 시스템 콜이 호출되는데 소요된 시간을 행 끝에 출력-f : fork()로 생성된 자식 프로세스의 시스템 콜까지 추적 (멀티 스레드, 멀티 프로세스 애플리케이션 추적 시 필요)-o : 출력 결과를 파..

Linux 2026.01.05

ss (Socket Statistics)

네트워크 소켓 상태를 확인하는 도구. netstat이라는 명령어도 있는데, netstat을 대체하기 위해 개발된 툴로 훨씬 빠르고 좋다. 자주 사용하는 옵션-a : 모든 소켓 표시 (접속 대기 중인 것과 연결된 것 모두)-t : TCP 소켓만 표시-u : UDP 소켓만 표시-n : 서비스 이름 대신 포트 번호로 표시-l : Listening 상태(접속 대기 중)인 소켓만 표시-p : 해당 소켓을 사용하는 pid와 이름 표시-s : 통계 표시 자주 쓰는 형태ss -tunlp : 현재 리스닝 중인 모든 포트 확인ss -at : 현재 서버에 연결된 모든 TCP 세션 확인ss -s : 프로토콜별로 몇 개의 연결이 있는지 요약 정보 확인 필드 설명Netid : 소켓 유형 (TCP, UDP...)State : 소켓..

Linux 2026.01.02

vmstat

시스템 상에서 프로세스, 메모리, 페이징, I/O, CPU 등을 실시간으로 모니터링하기 위해 vmstat이라는 명령을 사용한다. procr : 실행 대기 중인 프로세스 수, cpu 코어 수보다 높으면 cpu 병목 체크해야 함.b : i/o 작업 등으로 인터럽트가 불가능한 대기 상태에 있는 프로세스 수. memoryswpd : swap 메모리 사용량free : 사용 가능한 여유 물리 메모리buff : 버퍼로 사용된 메모리 (i/o 작업으로 인한 임시 저장)cache : 캐시로 사용된 메모리 (파일 읽기 등 성능 향상용) swapsi (swap-in) : 스왑 영역(디스크)에서 메모리로 불러들이는 양so (swap-out) : 메모리에서 스왑 영역(디스크)로 밀어내는 양* 스왑 메모리가 사용되는 것은 ..

Linux 2025.12.30