Linux 18

I/O 스케줄러

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

Linux 2025.12.19

rrqm과 wrqm

디스크 성능 및 리소스 체크 시 iostat이라는 명령어를 사용한다. iostat -x 시 확장된 통계 지표를 제공하는데, 그 중에 rrqm과 wrqm이라는 지표가 있다. Read Request MergeWrite Request Merge 병합된 요청 읽기/쓰기 수를 의미한다. OS에서 IO 작업 시 디스크에 인접한 요청들은 병합해서 한꺼번에 처리한다. (그렇게 해야 디스크 접근이 조금이라도 줄어드니까)그렇기 때문에 해당 지표가 높다는 것은 io 처리가 순차적으로 효율적이게 처리되고 있다는 것을 의미한다. 만약 이 지표들이 낮으면 디스크 랜덤 io의 비중이 높다는 것이고, 특히 데이터베이스 서버인 경우 이런 현상은 성능 모니터링이 필요하다.

Linux 2025.12.18

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

[linux] 프로세스 상태 및 명령어

프로세스 상태 이름플래그커널 정의 및 설명실행RTASK_RUNNING : 프로세스가 CPU에서 실행중이거나 실행을 기다리고 있음. 프로세스가 실행 중(또는 실행 가능) 상태일 경우 사용자 루틴 또는 커널 루틴(시스템 호출)을 실행 중이거나 대기열에 추가되어 준비되었을 수 있음.수면STASK_INTERRUPTIBLE : 프로세스가 하드웨어 요청, 시스템 리소스 액세스 등 일부 조건을 대기 중. 조건을 만족하면 Running상태로 복귀.DTASK_UNINTERRUPTIBLE : S와 다른 점은 신호에 응답하지 않음. 프로세스 중단 시 예기치 않은 장치 상태가 발생할 수 있는 경우에 사용KTASK_KILLABLE : 중단되지 않는 D 상태와 동일하지만, 대기 중인 작업이 강제 종료 신호에 응답할 수 있도록 수..

Linux 2025.05.29

[Linux] VIM 편집기 활용

vim은 리눅스, 유닉스 시스템에 포함된 vi 편집기의 개선 버전입니다.vim == vi 라고 생각할 수 있지만, 컬러나 강조 구문, 분할 화면 편집 등 편집 작업을 위한 더 강력한 기능들이 추가되어 있습니다.요즘은 거의 vi 실행하면 vim으로 실행이 되는 경우가 많아서 다르다는 것만 참고하시면 됩니다. 아래 정리한 내용은 제 기준으로 유용할 것 같은 것만 정리한 내용입니다.워낙 내용이 많아서 기억해놓으면 자주 쓸 것만 찾아서 기록했습니다. 모드1. 일반 모드처음 vim을 열때 기본 모드 주요 기능:텍스트, 페이지 이동:w: 단어 단위 앞으로 이동b: 단어 단위 뒤로 이동gg: 파일의 시작으로 이동G: 파일의 끝으로 이동0: 현재 줄의 맨 앞으로 이동$: 현재 줄의 맨 끝으로 이동Ctrl + d: 아래..

Linux 2025.05.15

[Linux] 패턴을 이용한 파일 선택 방법

특정 패턴에 맞게 디렉토리 생성하기 예시1mkdir -p domain/www.{domain1,domain2,domain3}.com/{html,css} domain/ㄴ www.domain1.com ㄴ html ㄴcssㄴ www.domain2.com ㄴ html ㄴcssㄴ www.domain3.com ㄴ html ㄴcss 주의 사항 : {html, css}처럼 콤마 뒤를 띄우면 안됨. 예시2mkdir -p student{1..10} 현재 디렉토리에 student1 ~ student10까지 디렉토리가 생성된다. 보통 컴퓨터에서 범위 표현할 때 반개구간을 쓰니까 1~9가 생성될 거라고 은연중에 생각했는데, 명시한대로 1~10까지 생성된다. 특정 패턴에 맞게 파일 생성하기 예시..

Linux 2025.04.29

[Linux] 링크에 관해 (inode, 하드링크, 심볼릭링크)

inode : 파일에 대한 정보를 가지고 있는 자료구조로, 파일은 무조건 연결된 inode가 존재한다. ls -i-i 옵션을 통해 파일에 대한 inode number (inode 식별자)를 확인할 수 있음. 하드 링크 같은 inode를 공유하는 완전히 동일한 파일을 생성.ln [origin] [linkfile] 하드 링크는 동일한 데이터를 참조하기 때문에 하나의 하드 링크 정보가 변경되면 하드 링크된 다른 모든 파일의 정보가 동일하게 변경됨.원본 파일이 삭제되도, 하드 링크가 된 파일이 존재하면 액세스가 가능함.하드링크는 동일 파일시스템이어야 하고, 디렉토리이면 안된다. 심볼릭 링크 (=소프트 링크)ln -s [origin] [linkfile] 다른 파일 시스템이라도 링크 가능디렉토리나 특수 파일도 ..

Linux 2025.04.25

알아두면 시간을 줄여주는 유용한 리눅스 터미널 단축키 & 커맨드 사용법

리눅스 터미널 조작시 (몰라도 상관은 없지만?)알아두면 유용한 터미널 단축키와 커맨드 조작에 대해 메모 겸 기록합니다.계속 업데이트 예정 이전 명령에 sudo를 붙여야 하는 경우sudo !! history 명령 결과에서 인덱스로 명령어 실행![index]ex) 22 date 이면 !22 입력 시 date 명령 실행 clear 명령어 단축키ctrl + l 이전 명령에서 특정 문자열을 교체해서 실행cat /etc/passwd^passwd^fstab1번 라인 실행 후 2번 라인 실행하면 "cat /etc/fstab" 실행 이전 명령의 인수 불러오기ESC + . ex)cat /etc/passwd 실행 후head (ESC + .) == head /etc/passwd 인수가 여러 개면 마지막 인수를 불러..

Linux 2025.04.17