SSD 에서의 TRIM 명령어 처리 성능 분석 및 Ext4 파일 시스템으로의 적용 한국정보과학회지 – Heo, Sang-Bok
2 배경지식 SSD Solid State Drive HDD 에 속도가 빠름 에너지 효율이 좋음 충격에 강함 사용 PC, 고성능 서버, 클라우드 시스템
3 배경지식 SSD 특징 다수의 플래시 블록 (512K) 들로 이루어져 있음 개의 페이지 (4K) 로 구성 읽기 / 쓰기 요청은 페이지 단위 삭제 요청은 플래시 블록 단위 새 데이터 쓰기 위해 플래시 블록을 먼저 삭제 해야 함 덮어쓰기 (overwrite) 불가능
4 배경지식 SSD 쓰기 비어있는 페이지 -> 즉시 데이터 기록 가능 비어있지 않은 페이지 -> 기존 데이터를 지운 후 데이터 기록 가능 쓰기 / 지우기 특성 문제 해당 블록의 전체 데이터를 SSD 내부의 캐시 (DRAM) 옮김 블록을 비움 캐시에서 기존의 데이터와 새로운 데이터를 결합 결합한 데이터를 다시 블록 전체에 기록
5 배경지식 SSD 문제 4KB 의 데이터를 기록하기 위해 512KB 데이터를 옮긴 후 비우고 결합하여 다시 쓰는 작업을 진행 해야만 함 SSD 뿐만 아니라 플래시 메모리는 사용하는 모든 저장 매체 동일 접근, 읽기, 쓰기 에 비해 상대적으로 지우기 속도가 많이 느림
6 배경지식 TRIM 운영체제에서 삭제된 쓰레기 파일들을 파악하여 SSD 상에서도 실제로 해당 파일들을 지우는 기능 나중에 기록할 때 삭제될 꺼 미리 적절히 삭제 시키는 것 운영체제가 삭제된 파일을 알려주고, SSD 가 처리하는 구조 LBA(logical block address) 범위들의 위치 정보 ( 섹터 번호, 크기 ) 가 SSD 에 전달
7 배경지식 플래시 변환 계층 (Flash Translation Layer) NAND 플래시 메모리 위에서 기존의 블록 인터페이스를 효율적으로 지원하기 위한 펌웨어 쓰기 요청을 효율적으로 처리 - 미리 삭제된 플래시 블록에 기록, 그데이터의 LAB 와 실제 데이터가 기록된 플래시 페이지 간의 매핑 정보를 유지 가비지 컬렉션 (garbage collection) 을 통해 데이터를 무효화 - SSD 내부의 미리 삭제된 플래시 블록의 수가 일정 수준 이하일 경우
8 배경지식 가비지 컬렉션 유효한 페이지를 한 곳으로 모은 다음, 블록을 지우는 작업 정해진 정책에 따라 빅팀 블록 (vimtim block) 을 선정, 삭제한 뒤 재사용 - 유효한 페이지들을 다른 플래시 블록에 복사 - 유효한 페이지들이 많을 경우 복사과정이 많아져 SSD 의 성능 감소
9 LBA 영역의 특성에 따른 TRIM 명령어의 처리 성능 성능 측정 환경 CPU 인텔 i GHz RAM8GB O.S 우분투 SSD 삼성 GB 인텔 GB 직접 구현한 페이지 매핑 기반 FLT 이 적용된 SSD(Jasmine 보드 )
10 LBA 영역의 특성에 따른 TRIM 명령어의 처리 성능 성능 분석 LBA 범위들의 연속 여부 LBA 범위들의 정렬 여부 크기에 따른 TRIM 명령어의 처리 성능 성능 측정 방법 1. 2GB 영역에 임의 정보를 씀 2. 해당 영역의 데이터에 대해 TRIM 명령을 수행 3. 각 TRIM 명령어의 처리 시간을 측정
11 LBA 영역의 특성에 따른 TRIM 명령어의 처리 성능 성능 측정 결과 전체적으로 약 1,000us 이상의 처리 시간 LBA 범위의 크기가 클수록, 단위 크기 당 처리 시간 감소 LBA 범위의 시작 섹터가 크기에 정렬되어 있는 경우 처리 성능 높음 LBA 범위의 연속인 경우에 낮게 측정
12 LBA 영역의 특성에 따른 TRIM 명령어의 처리 성능 성능 측정 결과 전체적으로 200us 이상의 처리 시간 LBA 범위의 특성별 결과는 연속 여부를 제외하고 동일한 결과 LBA 범위의 연속인 경우에 높게 측정 Jasmine SSD 실험결과도 Intel SSD 와 비슷한 경향
13 하나의 TRIM 명령어에 의해 전달되는 LBA 범위의 개수에 따른 성능 성능 분석 하나의 TRIM 명령어로 전달되는 LBA 범위의 개수에 따른 TRIM 명령어의 처리 성능을 측정 성능 측정 방법 2GB 영역에 임의 정보를 씀 LBA 범위의 크기 16KB 고정 LBA 범위의 개수는 1-64 개로 설정
14 하나의 TRIM 명령어에 의해 전달되는 LBA 범위의 개수에 따른 성능 성능 측정 결과 LBA 범위의 개수가 늘어날수록 전체 처리 시간이 줄어듦 Jasmine SSD 의 경우, 64 개일때 1 개의 비해 92.3% 감소
15 TRIM 명령어 처리 성능 향상을 위한 Ext4 파일 시스템 개선 방식 Ext4 파일 시스템에서 파일 삭제되는 경우, TRIM 명령어를 통해 삭제되었음을 SSD 에 통보 LBA 영역들의 위치 정보를 Ext4 파일 시스템 저널 자료구조에 리스트의 형태로 유지 저널이 처리될 때, 리스트의 모든 LBA 영역들에 대해 각각 하나의 TRIM 명령어가 수행
16 TRIM 명령어 처리 성능 향상을 위한 Ext4 파일 시스템 개선 개선 BIO 자료구조, I/O 스케줄러 및 블록 디바이스 드라이버 - 다수의 LBA 영역을 대상으로 하는 TRIM 명령을 지원 Ext4 파일 시스템의 저널 처리 과정 개선 - 다수의 LBA 영역을 하나의 BIO 를 이용하여 TRIM 명령을 요청하도록
17 TRIM 명령어 처리 성능 향상을 위한 Ext4 파일 시스템 개선 성능 측정 저장 공간 크기의 조절이 가능한 Jasmine SSD Postmark : 대표적인 파일 시스템 벤치마크 - 크기가 작은 파일에 대한 처리 성능 측정 - 디렉토리 생성 -> 파일 생성 -> 생성 / 삭제 / 읽기 / 쓰기 -> 모든 파일 & 디렉토리 삭제 Filebench : 파일 시스템 및 스토리지 시스템을 위한 벤치마크 - FILEMICRO_DELETE 파일 삭제 성능 측정을 진행 - 정해진 개수의 파일 생성 -> 다수의 스레드를 이용해서 모두 삭제 -> 파일 삭제 요청의 IOPS 측정
18 TRIM 명령어 처리 성능 향상을 위한 Ext4 파일 시스템 개선 성능 측정 결과 (Postmark)
19 TRIM 명령어 처리 성능 향상을 위한 Ext4 파일 시스템 개선 성능 측정 결과 (Filebench) 30,000 개의 16KB 파일 16 개의 쓰레드
20 결론 SSD 에서의 TRIM 명령어 처리 성능을 측정 LBA 범우의 크기, 연속 및 정렬 여부, 개수에 따라 Ext4 파일 시스템에서의 TRIM 명령 처리 성능 개선 하나의 TRIM 명령어마다 LBA 영역 하나 -> 최대 64 개 Benchmark Postmark / Filebench 벤치마크를 이용한 성능 측정 결과에 따르면, 최대 35% 의 성능 향상이 있음을 확인