OS
-
The block I/O layerOS 2017. 7. 13. 15:10
http://everylwn.blogspot.kr/search?q=The+block+I/O+layerhttp://ari-ava.blogspot.kr/2014/06/opw-linux-block-io-layer-part-1-base.html Base concepts지난 몇주동안 Linux kernel의 block I/O layer가 어떻게 동작하는지 명확하게 이해하기 위해 연구하고 분석했다. Modena and Regigio Emilia 대학교의 한 동료 학생이 내가 blog 게시물을 쓸것이라고 생각했다. OPW mentor가 topic을 승인했고 block 게시물을 몇개의 part로 나누어서 지루 한번에 지루해 지지 않고 더 편안하게 읽을 수 있도록 하는것을 제안했다. Block I/O layer에 구현된..
-
Linux Block IO: Introducing Multi-queue SSD Access on Multi-core SystemsOS 2017. 7. 13. 14:27
ABSTRACT Storage device의 IO performance은 5년전 수백 IOPs에서, 오늘날은 수십만 IOPS로 가속화 되었고 5년안에 수천만 IOPS로 전망된다. 이 급격한 향상은 NAND-flash의 출현과 그것들의 병렬처리 설계때문이다. 이 작업에서 수천의 IOPS를 다루도록 설계 된 운영체제의 블럭 레이어가 스트로지 시스템 성능에 병목현상이 되고 있다. 특히 일반화 되고 있는 high NUMA-factor 프로세서 시스템에서 그렇다. Single storage device를 가진 멀티 코어 시스템에서 수천만의 IOPS 를 다룰수 있는 차세대 블럭 레이어의 설계에 대해 설명한다. 이 디자인이 멀티코어, 다중 소켓을 가진 NUMA 시스템으로 확장 되는것을 보여준다. 오늘날 Operati..
-
[Linux] Multi-queue block device in Linux kernel v4.4 - 4OS 2017. 7. 13. 13:59
pagecache_and_blockdriver운영체제나 커널을 조금만 공부해보셨다면 드라이버 실험을 하면서 약간은 개운하지 못한 느낌적인 느낌이 있으실겁니다. 바로 페이지 캐시때문이지요. 사실 어플에서 명령한 모든 IO는 바로 드라이버로 전달되는게 아니고, 페이지 캐시 레이어가 중간에서 버퍼 역할을 합니다.어플에서 실제 물리적인 장치까지 어떤 레이어들이 있나 보면 이렇습니다.어플 -> (커널레벨진입) -> 파일시스템 -> 페이지캐시 -> 블럭레이어 -> 드라이버 -> 물리장치아주 간략하게본 것이지만 어쨌든 드라이버를 공부해봤으니, 이제 한단계 업그레이드를 해서 페이지 캐시와 블럭레이어도 간단하게 분석해보겠습니다.페이지캐시 실험페이지캐시가 뭔지 알아보기 위해 약간의 실험을 해보겠습니다.우선 mybrd를 실..
-
[Linux] RCU (Read Copy Update)OS 2017. 7. 12. 14:09
RCU updater들과 concurrent하게 reader들을 동작하도록 하여 시스템의 scalability를 향상시키는 lock free 메커니즘이다. Update와 동시에 Reader도 동작할 수 있도록 하기 위한 rwlock이 있지만, rwlock은 update가 없을 때만 reader 수행을 허락한다.반면 RCU는 single update와 multiple update와 reader가 동시에 수행할 수 있도록 하는 것이다. RCU 원리 Publish-Subscribe mechanism (for insertion)Wait For Pre-Existing RCU Readers to Complete (for deletion)Maintain Multiple Versions of Recently Updat..
-
[Linux] Device DriverOS 2017. 7. 11. 17:08
Device리눅스에서 디바이스는 하나의 파일처럼 취급되며, 각 디바이스는 Major number와 Minor number를 가진다.같은 디바이스들은 모두 같은 major number를 가진다. 적합한 디바이스 드라이버를 연결하기 위해 사용한다.같은 디바이스들이 하나의 major number를 가질 때, 각각의 디바이스를 개별적으로 구분하기 위해 minor number를 사용한다. Device Driver디바이스 드라이버란 디바이스를 구동시키는 프로그램을 의미한다. 즉, 디바이스 드라이버란 커널공간에 위치하며, 응용프로그램과 하드웨어간의 데이터를 주고 받게 해주는 프로그램이다. 이 디바이스 드라이버는 정의되어 있는 인터페이스인 '장치 인터페이스'로 하드웨어와 연결된다.리눅스에서는 모든 것을 파일로 관리한다..
-
[Linux] Multi-queue block device in Linux kernel v4.4 - 2OS 2017. 7. 10. 17:56
request-mode이전 장에서는 bio를 기준으로 IO를 실행했습니다. 커널로부터 bio를 받아서 bio에 있는 세그먼트를 하나씩 꺼내서 IO를 처리했습니다. 이전에 설명했듯이 bio는 IO의 최소단위입니다. 최소단위니까 당연히 그보다 큰 단위도 있겠지요. 바로 request입니다.이전장에서 분명히 request-queue를 만들면서 request가 저장되는 큐라고 설명해놓고, 사실 request는 사용하지 않았습니다. 커널이 request-queue에서 bio를 꺼내서 드라이버가 제공한 함수를 호출했습니다. 드라이버는 bio단위로 IO를 처리했구요. 이제야 진짜 request-queue를 제대로 쓰게 되는 것입니다.bio는 연속된 섹터들의 집합입니다. 섹터는 연속되어있지만 단지 각 섹터들이 저장된 ..
-
[HP Proliant DL380e gen8] OS 설치 (Centos7)OS 2017. 5. 29. 17:28
1. ACU(Array Configuration Utility) [F5] 눌러서 system Storage configuration 진입 -> Create Array -> Crate Logical Drive 2. Usb Key 만들기 리눅스 시스템에서 설치할 centos버전에 맞는 driver file을 다운 받는다. 예를 들어, Centos 7.3은 hpvsa-1.2.16-102.rhel7u0.x86_64.dd.gz 다운로드. Red Hat Enterprise Linux 7 Server - software driver update - driver diskette image http://h20565.www2.hpe.com/hpsc/swd/public/detail?sp4ts.oid=7298965&swIte..
-
[Linux] Multi-queue block device in Linux kernel v4.4 - 1OS 2017. 3. 15. 18:00
Overview 몇 년 전, 리눅스 커널의 블록 레이어(block layer)에 새로운 개념이 합쳐졌다. 그 이전만 하더라도, 모든 단일 블록 장치는 IO 처리를 위한 하나의 큐를 가졌다. 모든 프로세스는 이 큐에 IO 요청을 하고, 블록 장치 드라이버(block device)는 이 큐로부터 요청을 추출한다. 그렇다. 단일 큐는 많은 프로세스와 프로세서들에 의해 공유된다. 주로 HDD를 사용했을 때, 단일 큐는 아무런 문제가 되지 않았다. 그러나 요즘 SSD가 대중화되면서, 단일 큐 설계는 성능의 병목현상(bottle-neck)을 일으켰다. 그래서 커널 개발자들은 다중 큐(multi-queue) 설계를 구현했다. 단지 queue를 추가한 것이 아니라 block layer의 구조가 재설계되었다. 이론적 배..