Kernel 4

dmesg

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

Linux 2026.01.15

strace

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

Linux 2026.01.05

I/O 스케줄러

기본적으로 디스크 입출력은 CPU의 관점에서 매우 느린 작업이다.따라서, 디스크 입출력이 발생하면 캐시/버퍼, 스케줄러 등 OS에서는 여러 가지 방법을 통해 성능 보완을 한다. 그런데, 사실 예전의 HDD는 디스크 헤더가 물리적으로 이동하면서 데이터를 읽는 방식, 쉽게 말하면 기계적인 방식으로 I/O가 처리됐기 때문에 커널의 I/O 스케줄러는 매우 중요한 요소였다. 하지만 플래시 메모리 기반의 SSD는 전기적 신호로 데이터가 입출력되기 때문에 스케줄러가 사실상 필요가 없다. 오히려 커널에서 입출력을 병합하고 정렬하는 것이 더 병목일 수 있다. cat /sys/block/sda/queue/scheduler 명령을 실해하면 현재 OS에서 사용중인, 사용할 수 있는 스케줄러를 확인할 수 있는데, 대괄호 표시 ..

Linux 2025.12.19

Dirty Page

디스크에서 파일을 불러올 때 커널은 메모리의 page cache를 먼저 조회하게 되는데, 이 때 page cache에 원하는 데이터가 없으면 디스크를 조회하고 page cache에 저장한다. 이를 통해 디스크 io 대신 메모리의 page cache 접근으로 i/o 성능에 도움을 준다. 만약 읽기 작업뿐만 아니라 쓰기 작업이 있으면 추가적인 고려 사항이 있다.page cache의 내용이 변경되서 디스크의 내용과 달라지면 dirty bit를 활성화시킨다.이 때 서버의 전원이 갑자기 내려가거나 하면 정합성이 깨지게 된다. 그렇기 때문에 디스크 page cache간 데이터 동기화가 주기적으로 이루어져야 하는데, 이를 page writeback이라고 한다. page writeback이 너무 자주 이루어지면 디..

Linux 2025.12.16