-
NUMA (Non-Uniform Memory Architecture)
시스템 토폴로지 CMP (Chip-level Multi Processor) 최근 CPU는 하나의 소켓에 멀티 코어로 구성 (하나의 칩에 여러 개의 프로세서) SMP (Symmetric Multi Processor) / UMA (Uniform Memory Access) 멀티코어 CPU를 여러 개 장착한 시스템의 경우 메모리를 2개 이상의 CPU가 접근 CPU와 메모리 사이를 네트워크로 연결하여 접근이 필요 메모리를 공유하므로 한 번에 한 개의 프로세서만 하나의 메모리에 접근 가능 → 프로세서가 증가할수록 성능 문제 야기 NUMA (Non-Uniform Memory Access) ... Read More
-
[Linux command] mktemp
용도 임시 파일 생성 사용방법 옵션 옵션 내용 -u 실제로 파일을 생성하지는 않으나 유니크한 파일 이름을 생성 예시 $ mktemp /tmp/tmp.GrEUO8uPba 특정 확장자를 가지는 임시 파일 생성 $ mktemp --suffix ".txt" /tmp/tmp.UwUkfdnLzm.txt 특정 패턴을 가지는 임시 파일 생성 $ mktemp temp.XXXX temp.X1fs 4개의 X가 임의의 글자로 치환되어 파일 생성 임시 디렉토리 생성 $ mktemp -d /tmp/tmp.M... Read More
-
[Linux command] chattr
용도 디렉토리 혹은 파일의 속성 변경 사용방법 설정 옵션 내용 + 특정 속성 부여 - 특정 속성 제거 속성 속성 내용 a append만 가능 c 압축된 상태로 저장 d dump로 백업 불가 i read-only 상태 s ... Read More
-
Hard disk drive
Hard disk drive 자기적인(magnetic) 방식으로 데이터를 저장하는 보조기억장치 하드웨어 구조 스핀들 모터(Spindle motor) 플래터의 회전 담당 액추에이터(Actuator) 액추에이터 암을 구동 액추에이터 암(Actuator arm) 액추에이터를 통해 구동 하나의 하드디스크에는 여러 개의 암이 존재 플래터의 앞뒷면을 모두 사용하므로 한 플래터당 2개의 암 필요 헤드(Head) 데이터를 읽고 쓰는 헤드 데... Read More
-
Multi-queue block I/O scheduler
Multi-queue block I/O scheduler blk-mq(Multi-queue block I/O queueing mechanism)의 I/O scheduler 리눅스 커널 5.0부터 multi-queue block I/O scheduler를 기본 I/O scheduelr로 사용 리눅스 커널 5.3부터 기존의 single queue block I/O scheduler를 지원하지 않음 RHEL 8, Ubuntu 20부터 multi-queue block I/O scheduler를 기본 I/O scheduler로 사용 Multi-queue block I/O queueing 배경 기존의... Read More
-
Nand flash memory
Nand flash memory 전기적으로 작동하는 비휘발성 메모리로, 전기적으로 지우고 리프로그래밍 할 수 있음 흔히 SATA SSD, NVMe SSD와 같은 고성능 스토리지 그 외에도 SD 카드, USB 플래시 드라이브 같은 것들이 존재 하드웨어 구조 SSD의 내부 사진 (출처: http://www.storagereview.com/samsung_ssd_840_pro_review) PC의 CPU와 같은 역할을 하는 SSD 컨트롤러 캐시 메모리 역할을 하는 DRAM 데이터 저장을 하는 낸드 플래시 메모리 Die ... Read More
-
FIO를 이용한 HDFS의 file I/O 성능 측정
FIO FIO를 이용한 file I/O 성능 측정 HDFS single-node HDFS 설치 및 실행 multi-node HDFS 설치 및 실행 HDFS 환경 아래 게시글의 멀티노드 HDFS 클러스터 환경을 전제로 한다. multi-node HDFS 설치 및 실행 해당 게시글은 namenode에서 fio 실험을 하였기 때문에 로컬에 추가적인 HDFS 설치를 하지 않았으나, 별도의 컴퓨터에서 원격으로 fio를 실험하고자 하는 경우 로컬에 HDFS 설치가 필요하다. (fio 빌드 과정에서 HDFS library를 사용하므로) HDFS 실험을 위한 FIO 설치 HDFS를 상대로 file I/O를 ... Read More
-
FIO를 이용한 file I/O 성능 측정
https://github.com/axboe/fio FIO Flexible I/O tester FIO를 이용해서 file I/O의 read/write IOPS와 같은 성능을 측정할 수 있다. FIO 설치 apt를 통한 설치 간단하게 apt를 이용하여 설치할 수 있다. sudo apt-get install fio 코드 컴파일을 통한 설치 FIO 코드의 커스텀이 필요하거나, 기본적으로 포함하지 않는 기능을 포함한 fio를 사용하고자 할 때에는 코드 컴파일을 통해 설치하여야 한다. 아래의 링크에서 fio를 다운로드 https://github.com/axboe/fio/releases 압... Read More
-
multi-node HDFS 설치 및 실행
Overview 구성하고자 하는 HDFS 구조 java 설치 openjdk-8-jdk 다운로드 sudo apt install openjdk-8-jdk /etc/hosts 수정 /etc/hosts는 IP와 hostname을 매핑하기 위한 파일 멀티 노드에 접속할 때의 편의를 위해 /etc/hosts 파일에 내용을 추가한다. sudo vi /etc/hosts 아래와 같이 다른 노드의 IP와 hostname을 지정하는 내용을 추가한다. hadoop 사용자 생성 멀티 노드로 사용하고자 하는 모든 노드들에서 하둡용 계정을 생성 하둡 설치 및 관련 설정은 모두 하둡용 계정에서 실행 sud... Read More
-
Spark에서 HDFS 파일 접근하기
하둡 실행 {hadoop의 root directory}/sbin/start-all.sh Spark를 통해 데이터를 HDFS에 쓰기 writeSparkHDFS.py from pyspark.sql import SparkSession sparkSession = SparkSession.builder.appName("example-pyspark-write").getOrCreate() data = [('First', 1), ('Second', 2), ('Third', 3), ('Fourth', 4), ('Fifth', 5)] df = sparkSession.createDataFrame(data) df.write... Read More
-
Spark 설치 및 실행
pysark 설치 pip install pyspark pyspark shell 실행 예제 예제에 사용할 파일 (test.txt) pyspark pysparkpyspark pysparkpysparkpyspark pysparkpysparkpysparkpyspark pyspark shell 실행 pyspark 파일 읽기 >>> textFile = spark.read.text(”test.txt”) 텍스트 파일의 row 수 세기 >>> textFile.count() 4 텍스트 파일의 첫번째 row 보기 >>> textFile.first() R... Read More
-
single-node HDFS 설치 및 실행
java 설치 openjdk-8-jdk 다운로드 sudo apt install openjdk-8-jdk 환경변수 설정 하둡 다운로드 다운로드 및 압축해제 HDFS 3.2.3 버전으로 다운로드 하였음 wget https://downloads.apache.org/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gz tar -zxf hadoop-3.2.3.tar.gz 하둡 설정파일 설정 {hadoop의 root directory}/etc/hadoop에 존재 hadoop-env.sh: JAVA_HOME 경로 설정 core-site.xml:... Read More
-
[논문 요약] File Systems Fated for Senescence? Nonsense, Says Science!
Conference FAST’17 Authors Alex Conway, Ainesh Bakshi, Yizheng Jiao, Yang Zhan, Michael A. Bender, William Jannen, Rob Johnson, Bradley C. Kuszmaul, Donald E. Porter, Jun Yuan, Martin Farach-Colton Summary Fragmented, or age Fragmentation occurs when logically continuous file blocks become scattered on disk. Reading these files requires ad... Read More
-
리눅스 커널 다운그레이드
기본적으로 리눅스는 부팅 시에 가장 높은 버전의 리눅스 커널을 사용하도록 되어있다. 만약 사용하고자 하는 커널 버전보다 높은 버전의 커널이 설치되어있는 경우, 매번 부팅 시마다 grub으로 접근해서 커널 버전을 선택해야 하거나 grub 설정을 수정해서 부팅 순서를 바꿔야 할 필요가 있다. grub 설정을 건드리고 싶지 않은 경우, 상위 버전의 리눅스 커널을 삭제하는 방법이 있다. dpkg, apt를 이용한 상위 버전 리눅스 커널 삭제 설치된 커널 이미지 확인 dpkg -l | grep linux-image 커널 이미지 삭제 sudo apt-get purge {삭제할 리눅스 이미지 파일명} 설치된 ... Read More
-
strace를 이용한 리눅스 시스템 콜 분석
strace 프로세스에서 호출하는 시스템콜을 추적하는 도구 strace 설치 sudo apt-get install strace strace 사용법 -o #strace -o {출력 파일명} {관찰하고자 하는 프로그램} strace -o ls-strace ls 이 경우 strace는 ls 명령어 실행시 호출되는 시스템 콜을 추척하여 ls-strace라는 이름의 파일에 기록한다. -e #strace -o {출력 파일명} -e {모니터링할 시스템 콜} {관찰하고자 하는 프로그램} strace -e write ls 이 경우에 strace는 ls 명령어 실행시 호출되는 write 시스템 콜을 추적하여 ... Read More
-
[논문 요약] A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation
Journal ACM TECS’07 Authors Sang-won Lee, Dong-joo Park, Tae-sun Chung, Dong-ho Lee, Sangwon Park, Ha-joo Song Summary Motivation BAST has the low space utilization because of its block-level associativity. Fully-associativity can overcome the low space utilization. BAST Scheme If the target sector in the data block is alrea... Read More
-
[논문 요약] Automatic I/O stream management based on file characteristics
Conference Hotstorage’21 Authors Yuqi Zhang, Ni Xue, Yangxu Zhou Idea File types Append-only Only be written sequentially Invalid only after the file is deleted Lifetimes of write-ahead logs are obviusly shorter than the lifetimes of data files Inplace update Random writes The data files o... Read More
-
[논문 요약] FAB: Flash-Aware Buffer management Policy for Portable Media Player
Conference IEEE TCE’06 Authors Heeseung Jo, Jeong-Uk Kang, Seon-Yeong Park, Jin-Soo Kim, Joonwon Lee Summary Motivation LRU policy is not appropriate buffer management policy for a typical file access pattern for PMP. The policy that is well aware of the characteristics of NAND flash memory and the mechanism of flash controller is needed.... Read More
-
[논문 요약] Lifetime Improvement of NAND Flash-based Storage Systems Using Dynamic Program and Erase Scaling
Conference FAST’14 Authors Jaeyong Jeong, Sangwook Shane Hahn, Sungjin Lee, Jihong Kim Summary Problem Even though the NAND density doubles every two years, the storage lifetime does not increase as much as expected in a recent device technology. Many existing lifetime-enhancing techniques have mainly focused on reducing WAF by increasing ... Read More
-
[논문 요약] DFTL: A Flash Translation Layer Employing Demand-based Selective Caching of Page-level Address Mappings
Conference ASPLOS’09 Authors Aayush Gupta, Youngjae Kim, Bhuvan Urgaonkar Summary Motivation hybrid log-buffered FTL suffer performance degradation due to expensive full merges because of the difference in mapping granularity of data and update blocks. A high-performance FTL should completely be re-designed by doing away with log-blocks. ... Read More
-
[논문 요약] Essential Roles of Exploiting Internal Parallelism of Flash Memory State Drives in High-Speed Data Processing
Conference IEEE Symposium on High-Performance Computer Architecture (HPCA’11) Authors Feng Chen, Rubao Lee, Xiaodong Zhang Idea SSD performance is no longer highly sensitive to access patterns, but rather to other factors, such as data access interferences and physical data layout. Need to focus on internal parallelism of SSDs. New findin... Read More
-
vim 설정
목표 목적은 다음과 같습니다. 아래와 같은 형태의 vim을 만든다. 리눅스 커널 코드 분석의 편의를 위해서는 vim 설정을 최적화할 필요가 있었습니다. vim 설정의 주요 사항은 3가지였습니다. ctags를 이용한 태그 검색 tagbar를 이용한 태그 브라우징 그래픽 요소 설정 vim 설정 .vimrc 생성 .vimrc는 vim configuration 파일입니다. 우선 .vimrc를 만듭니다. vi /etc/vim/.vimrc 처음 .vimrc를 만들면 빈 파일인 것을 확인할 수 있습니다. .vimrc에 플러그인과 설정을 추가하는 것으로 vim을 커스텀할 수 있습니다. vi .... Read More
-
리눅스 커널 소스코드 컴파일
커널 소스코드 다운로드 현재 커널 버전 확인 uname -r 커널 소스코드 다운로드 리눅스 커널 아카이브: https://www.kernel.org/ 희망하는 버전의 커널 소스코드를 tarball을 눌러 다운로드 소스코드 위치 이동 다운로드 받은 소스코드 압축 파일을 /usr/src 경로로 이동 ex) ~/Downloads에 linux-5.15.21.tar.xz 파일을 다운로드 받은 경우 cd ~/Downloads mv linux-5.15.21.tar.xz /usr/src 소스코드 압축 해제 /usr/src로 이동시킨 파일을 압축해제 cd /usr/src # tar -xvf {압축된 커... Read More
-
[논문 요약] F2FS: A New File System for Flash Storage
Conference FAST’15 Authors Changman Lee, Dongho Sim, Joo-Young Hwang, Sangyeun Cho Summary Motivation NAND flash memory has been widely used. However, file systems do not consider the characteristics of flash storage devices. In this paper, authors presented F2FS, a new file system optimized for modern flash storage devices. Flash-friendl... Read More
-
리눅스 block I/O 분석
blktrace 리눅스 커널의 Block I/O layer에서 발생하는 block I/O를 추적하는 도구. blktrace 설치 sudo apt update sudo apt-get install blktrace blktrace 사용법 #blktrace -d {관찰하고자 하는 storage device 이름} [-o {출력 파일명}] [-w {관측 시간(초)}] [-a {관측하고자 하는 action}] blktrace -d /dev/nvme0n1 -o test -w 30 관측하고자 하는 device 이름은 fdisk -l 명령어를 통해서 확인 가능하다. Block I/O 데이터는 CPU별로 수집... Read More