I/O 스케줄러
-
Linux I/O 스케줄러(cfq, deadline, noop)커널(Kernel) 2022. 12. 26. 21:14
환경 정보 OS: ubuntu18.04 I/O 발생 흐름 1. 사용자는 읽기나 쓰기를 통해서 I/O를 발생시킨다. 2. 발생한 I/O는 가상 파일 시스템이나 로컬 파일시스템 경로를 거친다. 3. 파일 시스템을 거친 I/O는 I/O 스케줄러를 통해 가공되고(병합, 정렬) 언제 블록 디바이스에 접근할지 정해진다. 4. 블록 디바이스에 접근해서 데이터를 읽거나 쓴다. I/O 스케줄러가 필요한 이유 우리가 사용하는 디스크는 크게 HDD와 SSD가 있다. HDD의 경우, 디스크 헤더를 움직여 데이터가 저장되어 있는 섹션에서 데이터를 읽거나 쓴다. 여러 데이터를 읽거나 쓰기 위해 헤더를 이리저리 움직이는 것은 시간을 많이 사용하게 되고, 결국은 성능 저하를 만든다. 마찬가지로 SSD 또한 한 번에 읽을 수 있는 데..
-
실습과 그림으로 배우는 리눅스 구조 8장 정리운영체제 2022. 11. 13. 17:49
저장 장치 HDD 데이터를 자기 정보로 변환하여 자기 장치에 기록한다. 바이트 단위가 아닌 섹터 단위(512Byte or 4096KB)로 읽고 쓴다. 데이터를 읽고 쓸 때, 스윙암의 동작과 플래터의 회전이 필요한데 이는 전기적 동작이 아닌 기계적 동작이기 때문에 느릴 수 밖에 없다. HDD의 성능(I/O 지원 기능을 사용하지 않았을 때) 연속하는 섹터의 경우 한번의 접근 요청으로 데이터를 읽을 수 있으며, 여러 번 접근하는 방식보다 빠르다. 시퀀셜 접근한 경우 I/O 사이즈가 증가함에 따라 스루풋이 증가한다. 랜덤으로 접근한 경우 I/O 사이즈가 증가함에 따라 스루풋이 증가한다. 시퀀셜 접근은 한 번의 접근으로 처리할 수 있기 때문에 랜덤 접근 보다 빠르다. 블록 장치 계층 블록 장치는 디바이스 파일(/..