2017년 11월 8일 수요일

SPIN: Seamless Operating System Integration of Peer-to-Peer DMA Between SSDs and GPUs

USENIX ATC'17에 나온 논문이다.
Abstract를 읽고 대충 정리해보자.

논문 제목에서 Peer-to-Peer는 (최근) GPU들이 CPU를 거치지 않는 data path로 NVMe SSD같은 주변 장치들과 DMA를 한다는 뜻으로 쓰였다.

p2p로 파일에 접근할 때 문제가 발생할 수 있는데, 접근 시 OS file I/O layer들을 거치지 않기(bypass) 때문이다.

두번째 문단부터 막히는데, abstract를 읽을 때 흔히 막히는 편이다. 말그대로 추상화(abstract)해서 썼기 때문에 금방 알아들을 수가 없다. 이럴 때는 Introduction에서 본인들이 뭘 했는지에 대해서 쓴 부분을 읽는다. 보통 Introduction의 1/2 혹은 3/5 지점이다.

이 논문에서는 두번째 페이지의 첫번째 문단 SPIN is a system that ~ 부분을 보면 될 듯 하다. 여전히 뭔 소린지 모르겠다. 이럴 때는 뭐를 문제 삼고 있는지 보면 된다. 이 경우 Introduction의 세번째 문단부터이다. Unfortunately, p2p poses ~

특정 file access pattern (short sequential read) 발생 시 성능이 굉장히 느리다는 점을 꼽고 있다. 원인은 low-level hardware constraints를 안고 가야 하기 때문인 듯. SSD와 GPU의 p2p가 too low-level mechanism 이라고 하고 있다.

제시한 해결책은 p2p를 OS의 file I/O layer로 결합하는 것이다. 여기서 밑을 읽어봤는데 뭔소린지 또 모르겠다. 이럴 때는 다시 abstract로 간다.

SPIN은 p2p를 standard OS file I/O stack에 넣는 것이고, 필요시 p2p를 dynamically activating 한다는 듯 하다(user에 transparent 하게).
- page cache access
- read-ahead for sequential reads (stroage(SSD)로부터 미리 읽어옴)
- POSIX FS consistency를 유지하면서
- software RAID같은 virtual block device도 지원

2017년 2월 6일 월요일

[Bash] 배시 기본 {06} - 사용자 환경 설정

사용자 환경 설정을 할 때 사용하느 배시의 네 가지 특징
1. 특수파일 - .bash_profile, .bash_logout, .bashrc 파일
2. Alias
3. 옵션
4. 변수

1. 특수파일
홈 디렉토리에 없을 경우 기본 시스템 파일인 /etc/profile 을 사용한다.
.bash_profile이 없다면 .bash_login이나 .profile을 보자. 배시는 로그인 시에 .bash_profile이 없으면 .bash_login을 찾고 이 파일도 없으면 .profile을 찾는다.

source 명령은 지정한 파일 안에 있는 명령을 실행한다.

2. Alias
앨리어스는 명령행, .bash_profile, .bashrc에서 정의할 수 있고 다음과 같은 형식으로 사용한다.
alias name=command
command의 앨리어스가 name이라는 뜻이다. name을 명령처럼 입력하면 배시는 실행할 때 command로 바꾼다. 등호 기호 좌우에 공백은 없다.
예시) alias search=grep
명령행에 치면 해당 셸에서만 search를 사용할 수 있다.

자주 이동하는 디렉토리를 위해서 추가할 수도 있다.
예시) alias cdvoy='cd sipp/demo/animation/voyager'
두 단어 이상일 때는 작은 따옴표로 묶는다.

3. 옵션
set -o 를 입력하면 옵션 상태를 볼 수 있다.
set -o optionname -> 옵션을 켠다.
set +o optionname -> 옵션을 끈다.(+와 -의 의미가 다르다)
shopt는 환경변수와 set명령을 사용해서 만든 옵션 구성을 바꾸는데 쓰인다.

4. 셸 변수
셸 변수는 내장된 것도 있고 셸 프로그래머가 자신만의 셸 변수를 추가할 수도 있다. 변수 정의 문법은 다음과 같다.

varname=value

등호 기호 좌우로 공백이 없어야 하고 값이 두 워드 이상일 때에는 인용부호로 묶는다. 어떤 명령에 지정한 변수 값을 사용하려면 해당 변수명 앞에 달러 문자($)를 둔다.

지정한 변수를 삭제할 때에는 unset varname 명령을 사용.

어떤 변수 값을 가장 쉽게 확인하는 방법은 내장 명령인 echo를 사용하는 것이다. echo 명령은 어떤 변수의 인자를 모두 출력한다.

"문자열에 $변수가 있을 때에는 큰따옴표를 사용한다."


내장 변수

입력 필요...