윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

37
Made By Hackereyes 윈윈윈윈 윈윈 윈윈윈 윈윈윈윈 윈윈 윈윈윈 윈윈 윈윈 윈윈 윈윈윈윈 윈윈 윈윈윈 윈윈윈윈 윈윈 윈윈윈 윈윈 윈윈 윈윈 시 : 2005/04/22 시시시 : 시

Upload: vladimir-dejesus

Post on 03-Jan-2016

36 views

Category:

Documents


3 download

DESCRIPTION

윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발. 시 기 : 2005/04/22 발표자 : 박 성 환. 목 차. 서론 윈도우즈 기반 플래시 메모리의 등장과 성능 분석의 필요성 관련 연구 FTL 알고리즘 윈도우즈의 I/O 윈도우즈 드라이버의 작성 실험 디스크 I/O 를 얻기 위한 드라이버 작성 및 부착 FTL APAT(FTL Algorithm Performance Analysis Tool) 실험 구조 실험 조건 실험 결과 Diskiomo 드라이버의 부착모습 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

Made By Hackereyes

윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발개발

시 기 : 2005/04/22발표자 : 박 성 환

Page 2: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

2Made By Hackereyes

목 차목 차 서론

윈도우즈 기반 플래시 메모리의 등장과 성능 분석의 필요성 관련 연구

FTL 알고리즘 윈도우즈의 I/O 윈도우즈 드라이버의 작성

실험 디스크 I/O 를 얻기 위한 드라이버 작성 및 부착 FTL APAT(FTL Algorithm Performance Analysis Tool) 실험 구조 실험 조건

실험 결과 Diskiomo 드라이버의 부착모습 실험 프로그램의 동작 모습

결론 참고 문헌

Page 3: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

Made By Hackereyes

서 론서 론

Page 4: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

4Made By Hackereyes

플래시 메모리의 등장 배경플래시 메모리의 등장 배경 최근 플래시 메모리를 장착한 기기들이 많이 등장함

디지털 카메라 핸드폰 MP3 플레이어

Page 5: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

5Made By Hackereyes

플래시 메모리의 장단점플래시 메모리의 장단점 이동성에 맞는 플래시 메모리의 장점들

소형화 대용량화 저전력화 비휘발성 고속화 충격에 강함

플래시 메모리의 단점 ( 극복 사항 ) 쓰기 전 소거 한 블록이 10 만 번 이상 발생하게 되면 오류를 발생할 가능성이 높아짐

Page 6: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

6Made By Hackereyes

플래시 메모리란플래시 메모리란 ?? 플래시 메모리는 EEPROM 의 한

종류

분류 NAND 형

고집적이 가능하여 데이터를 저장하는 데 주로 사용

페이지 단위의 I/O 만을 지원 NOR 형

처리 속도가 빨라 프로그램 코드를 저장하는데 주로 사용

바이트 단위의 I/O 를 지원

접근시간읽기

(Read)쓰기

(Write)소거

(Erase)

NOR형 플래시

150ns(1B)15μs(512B)

211μs(2B)3.5ms(512B

)

1.2s(128KB)

NAND형

플래시10μs(1B)36μs(512B)

226μs(2B)266μs(512B

)

2ms(16KB)

하드디스크

12.4ms(512B)

12.4ms(512B)

-표 1

Page 7: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

7Made By Hackereyes

디스크에서 플래시 메모리로디스크에서 플래시 메모리로 기대 성능

휴대할 수 있을 정도의 크기와 무게를 제공함 휴대 시 발생하는 잦은 충격에 정보 보호력이 뛰어 남

현재 디스크를 플래시 메모리로 향후 대체 시 주의사항 플래시 메모리 는 쓰기 전 소거해야 하는 특징이 있음

Page 8: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

8Made By Hackereyes

FTL FTL 알고리즘의 필요성알고리즘의 필요성 디스크와는 다른 플래시 메모리만의 단점을 보안하기 위함

플래시 메모리의 삭제 횟수의 최소화 플래시 메모리는 한 블록당 10 만 번 정도의 삭제연산이 발생하면 오류를

발생하기 때문

삭제블록 평준화 (Wear-Leveling) 을 조절 특정 블록이 못쓰게 되면 플래시 메모리 전체를 못쓰게 되기 때문

FTL 알고리즘에서의 연산 속도의 최소화 평준화된 속도를 제공해야 함

Page 9: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

9Made By Hackereyes

윈도우즈 선택 이유윈도우즈 선택 이유 거의 모든 개인 컴퓨터에는 윈도우즈가 주류를 이루고 있음

때문에 플래시 메모리를 적용한 기기들은 대부분 윈도우즈 를 지원함

FTL 알고리즘 작성시 윈도우즈의 디스크 I/O 패턴으로 시뮬레이션 하는 것이 좋음

Page 10: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

Made By Hackereyes

관련 연구관련 연구

Page 11: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

11Made By Hackereyes

플래시 시스템플래시 시스템

PSN/PBN

File System

FTL

ControlRAM Table

Flash Memory

LSN

PSN/PBN

FTL AlgorithmLSN

Page 12: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

12Made By Hackereyes

FTL FTL 알고리즘알고리즘 논리적 수준과 물리적 수준의 맵핑

플래시 메모리와 파일 시스템 사이에 위치 파일 시스템이 플래시 메모리를 하드 디스크처럼 사용할 수 있게 해줌 FTL 을 사용하게 되면 기존의 파일 시스템 을 사용할 수 있다는 장점이

있음

블록의 효율적 사용 전체적인 블록을 효율적으로 사용해 읽기 , 쓰기와 삭제 연산을 줄이는

역할을 함

블록 삭제 연산의 평준화 및 최소화 전체 블록은 균등한 삭제 횟수를 가져야만 함 플래시 메모리는 한 블록당 10 만 번 정도의 삭제연산이 발생하면

오류를 발생하기 때문

Page 13: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

13Made By Hackereyes

FTL FTL 맵핑 알고리즘맵핑 알고리즘

페이지단위 주소변환 (page-level address mapping) 은 정교하게 주소를 변환하기 때문에 성능은 좋은데 반하여 주소변환 테이블의 크기가 커 제작비용이 높다 .

블록단위 (block-level address mapping) 주소변환은 비 정교하게 주소를 변환하기 때문에 주소변환 테이블의 크기는 작지만 , 내부의 하나의 페이지에 대한 수정연산이 발생해도 전체 블록을 삭제하고 갱신해야 하는 추가비용이 있다 . 뿐만 아니라 이 과정을 수행하는 도중에 폴트가 발생하면 데이터의 일관성을 깨뜨릴 수 있다 .

혼합단위 (Hybrid address mapping) 주소 변환은 페이지단위 주소변환과 블록 단위 주소변환을 같이 사용하는 것을 말한다 .

PSN/PBNFTL Algorithm

LSN

Page 14: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

14Made By Hackereyes

RAM(Random Access Memory) RAM(Random Access Memory) 테이블테이블 RAM 의크기는 전체 시스템의 비용에 중요요소 , RAM 의 크기가 작아

질수록 시스템의 비용이 작아지며 , FTL 알고리즘은 자신의 RAM 구조를 가지고 있고 RAM 구조에 따라 FTL 알고리즘을 나눌 수 있음

논리 - 물리 멥핑 정보 (Logical to physical mapping information): RAM 의 주요한 사용은 물리 맵핑 정보를 논리적으로 저장하는 것이다 . RAM 정보에 접근함으로써 자료를 읽거나 쓰는 물리 플래시 메모리의 위치는 효과적으로 찾을 수 있음

여유 메모리 공간 정보 (Free memory space information): 단지 플래시 메모리에 있는 빈 메모리 공간을 RAM 에 저장함으로써 FTL 알고리즘은 그 이상의 플래시 메모리 접근 없이 메모리 공간을 관리할 수 있음

삭제블록 평준화 정보 (Information for wear-leveling): 수준을 지닌 정보는 RAM 에 저장 될 수 있음 . 예를 들어 플래시 메모리 블록의 삭제횟수는 RAM 에 저장 될 것임

Page 15: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

15Made By Hackereyes

섹터 맵핑섹터 맵핑 (Sector Mapping)(Sector Mapping) 모든 논리 섹터 (logical sector) 는 대응하는 물리 섹터 (physic

al sector) 와 대응 (mapping)

기본 동작 빈 물리 섹터를 찾고 , 거기에 자료를 기록 한 후 , 멥핑 테이블 (mappi

ng table) 에 적용

만약 빈 섹터가 없다면 , 플래시 메모리에서 희생할 (victim) 블록을 찾아 , 스페어 빈 블록 (spare free block) 에 유효한 자료를 복사한 후 멥핑 테이블을 갱신 (update).

마지막에는 희생할 블록을 삭제하고 , 그 블록은 스페어 블록 (spare block) 이 될 것임

Page 16: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

16Made By Hackereyes

블록 맵핑블록 맵핑 (Block Mapping)(Block Mapping) 논리 블록 (logical block) 내에 있는 논리 섹터 오프셋 (logical

sector offset) 이 물리 블록 내에 있는 물리 섹터 오프셋 (physical sector offset) 과 동일

작은 크기의 멥핑 정보 (mapping information) 을 요구함 . 그러나 만약 파일 시스템이 여러 번 같은 논리 섹터 번호 (LSN:Logical Sector Number) 에 기록를 요구하면 빈번히 복사와 삭제 연산을 수행하여 심각한 실행 하락을 야기 시킴

멥핑 테이블을 재구성하는 경우 , 물리 블록 첫 번째 페이지(page) 의 스페어 영역 (spare area) 에 논리 블록 번호 (LBN:Logical Block Number) 을 기록함

Page 17: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

17Made By Hackereyes

혼합 맵핑혼합 맵핑 (Hybrid Mapping)(Hybrid Mapping) 물리 블록을 얻기 위해 블록 멥핑기술을 이용함 . 그 다음

물리 블록 내에 있는 빈 섹터를 찾기 위해 섹터 멥핑기술을 이용

멥핑 테이블을 재구성 하는 경우에는 이 정보뿐만이 아니라 논리 블록 번호 또한 물리 블록의 스페어 영역에 기록 되어야만 함

플래시 메모리에서 자료를 읽을 때 , 주어진 논리 섹터 번호를 이용하여 멥핑 테이블에서 물리 블록 번호를 찾음 . 그런 다음 물리 블록의 스페어 영역에서 논리 섹터 번호를 읽어 원하는 자료의 가장 최근 값을 얻을 수 있음

Page 18: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

18Made By Hackereyes

윈도우즈 의 윈도우즈 의 I/OI/O

I/O Manager

File System(NTFS , FAT32 , FAT 등 )

Application

User ModeKernel Mode

IRP Communication

Disk Driver

IRP Communication

Disk

IRP Communication

Page 19: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

19Made By Hackereyes

윈도우즈 의 윈도우즈 의 I/O (cont)I/O (cont) 사용자 프로그램 에서 read 혹은 write 의 시스템 호출을 통해 커널의 I/O 관리자에게 디스크 I/O 를 요청하게 됨

커널 내에 있는 I/O 관리자가 요청을 받아들여 IRP(I/O Request Packet) 로 파일 시스템 드라이버 에게 요청하게 됨

파일 시스템 드라이버는 논리 수준에서의 섹터 번호 , 길이 , 자료지시자를 연산해 디스크 드라이버에게 IRP 를 전달함

디스크 드라이버는 IRP 를 받아 물리 수준에서의 섹터 번호 , 길이 , 자료지시자로 IRP 를 만들어 실제로 어떤 장치 (Device) 에게 전달되어야 하는 IRP 인지를 보고 해당 물리 디스크에게 전송

Page 20: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

20Made By Hackereyes

IRP IRP 통신통신

File System

I/O Manager

Disk Driver

Disk

IRP

Itatus

Stack Locations

Header

참조

참조

참조

Page 21: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

21Made By Hackereyes

IRP IRP 통신통신 IRP (I/O Request Packet)

I/O 요청을 하기 위한 객체간에 통신 수단으로서 패킷 (Packet) 의 특징인 머리부 (Header) 와 꼬리부 (Stack Location) 가 존재

머리부 현재 IRP 의 상태 정보 저장 I/O 할 Buffer 의 지시자를 가지고 있음

꼬리부 해당 객체가 수행해야 할 주함수 (Major Function), 부함수 (Minor Functio

n), 인자 (Parameter) 가 있음

IRP 가 객체들에게 전달이 되면서 각 객체들은 IRP 를 보고 해야 할 일들을 수행

Page 22: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

22Made By Hackereyes

윈도우즈 드라이버 작성법윈도우즈 드라이버 작성법 DDK (Device Development Kit) 를 이용하여 드라이버를 작성

NTDDK.h 안에 모든 기술이 되어있음 자료형 (Data Type), 구조체 (Structure), 상수 (Constant Value),

메크로 (Macro) 등등

윈도우즈 는 범세계적인 이기에 Unicode 문자열을 사용

IRP 를 작성 드라이버가 전송 받았을 때 수행할 루틴 (Routines) 를 작성해주어 드라이버를 만듬

DriverEntry Routine : 드라이버 코드의 시작점 Initialization Routine : 초기화 루틴 AddDevice Routine : 드라이버가 부착 시에 동작 할 루틴 Unload Routine : 드라이버를 해제 시에 동작 할 루틴

Page 23: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

23Made By Hackereyes

계층 드라이버계층 드라이버 (Layered Driver)(Layered Driver) 계층 드라이버란 ?

드라이버를 계층 단위로 하는 일을 나누어 드라이버를 작성한 것 필터 (Filter) 드라이버가 계층 드라이버라 할 수 있음

필터 (Filter) 드라이버의 투명성 마치 스니핑 (sniffing) 하듯이 IRP 를 처리함 상위 드라이버나 하위 드라이버는 인식하지 못함 때문에 하위 드라이버가 지원하는 루틴을 모두 제공해주어야 함

하위 Level Driver하위 Level Driver

상위 Level Driver or Client상위 Level Driver or Client

Filter DriverFilter Driver

하위 Driver와 통신한다고

생각함

하위 Driver와 통신한다고

생각함

원하는 작업을한뒤에 IRP

전달

원하는 작업을한뒤에 IRP

전달

IRP 를 받아

원하는 작업후전달

IRP 를 받아

원하는 작업후전달

처리한 IRP 를상위 Driver

로전달

처리한 IRP 를상위 Driver

로전달

상위 Driver에게 IRP 가 온것으로 인식

상위 Driver에게 IRP 가 온것으로 인식

하위 Driver가

IRP 를 반환한것으로 인식

하위 Driver가

IRP 를 반환한것으로 인식

Page 24: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

Made By Hackereyes

실험 내용실험 내용

Page 25: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

25Made By Hackereyes

Filter Filter 드라이버를 이용한 드라이버를 이용한 Diskiomo Diskiomo 드라이버드라이버 Diskiomo 드라이버 (Disk I/O Monitorin

g Driver) 디스크 드라이버의 하위 필터

드라이버로서 물리 디스크에게 전송되는 IRP 탐색을 통해 섹터번호와 길이만을 스니핑을 통해 얻어 옴

얻은 섹터번호와 길이를 다른 디스크에 “ diskio.log”로 저장

“diskio.log”를 통해 사용자 모드 (User Mode) 에서 FTL 알고리즘을 실험 할 수 있음

탐색한 뒤의 IRP 는 그대로 물리 디스크에게 전송해 줌

IRP Communication

Disk Driver

Disk

diskiomoDriver

Page 26: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

26Made By Hackereyes

실험 환경실험 환경

Disk Driver

Disk

diskiomoDriver

diskio.logFile

LogFileReader

File write

File read

FTL_Alg

Virtual 플래시 메모리

Page 27: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

27Made By Hackereyes

실험 환경실험 환경 (cont)(cont) diskiomo.sys 필터 드라이버는 Disk.sys 에서 받은 IRP 를 탐색해 I/O 에 대한 정보를 얻어냄

Read 인지 Write 인지 섹터번호 길이

Drive C에 “ diskio.log”라는 파일을 생성해 이곳에 이진 타입(Binary Type) 으로 계속 저장

시뮬레이션 프로그램은 Drive C에 “ diskio.log” 파일을 탐색하다가 변화가 있으면 계속 읽어 연산을 수행 ( 실시간 )

Page 28: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

28Made By Hackereyes

Diskiomo Diskiomo 드라이버 실험 환경드라이버 실험 환경 VMWare 를 사용하여 윈도우즈 2000 Professional Version 에 SCSI 하드

드스크 (Hard Disk) 두 개를 생성 시스템 디스크 (System Disk : Drive C)

“diskio.log” 파일로 E Drive 에 발생한 I/O 저장

잉여 디스크 (Extra Disk : Drive E) 100 메가바이트 (Mbytes) 의 크기 diskiomo.sys ( 하위 필터 드라이버 ) 를 부착

Drive E에 파일 복사와 삭제 연산을 통해 강제로 I/O 발생

실험 프로그램을 작성해 Drive C에 있는 “ diskio.log”에서 계속 로그 (Log) 기록을 읽어 들임

diskiomo.sys 드라이버가 부착되지 않은 곳에 “ diskio.log” 파일을 생성해야 하는 이유

“diskio.log”로 기록하라는 I/O 자체도 “ diskio.log”에 기록하려 하려는 것을 방지하기 위함

Page 29: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

29Made By Hackereyes

실험 환경실험 환경

윈도우즈 2000 Professional 파일시스템 FAT , NTFS

사용 디스크 Drive C : “diskio.log” 파일 저장Drive E : diskiomo 드라이버를 부착

Drive E 크기 100 Mbytes

발생 I/O 의 크기 130 Mbytes 정도의 자료를 이용해약 3.5 Gbytes 정도의 I/O 를 발생시킴

Page 30: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

30Made By Hackereyes

I/O I/O 발생 패턴발생 패턴

JPG 200k~400k 의 작은 크기의 파일 MP3 3M~5M 의 큰 크기의 파일혼합 JPG 와 MP3 를 혼합하여 다중 프로세스를

통해 다량의 분할 (Fragmentation) 발생Database

TPC-H 벤치마크 테스트

Page 31: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

31Made By Hackereyes

실험 환경 구조도실험 환경 구조도

Disk Driver

Drive E

diskiomoDriver

Drive C

diskio.log

File Copy& DeleteProgram

수행

SimulatingProgram

diskio.log 에서Log 를 읽어서 수행

User ModeKernel Mode

Page 32: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

32Made By Hackereyes

diskio.log Structurediskio.log Structure#define READ 'r'#define WRITE 'w'

class Log{public:

char RorW; // Read 인지 Write 인지 [1 Byte]int start; // Start Sector Number [4 Bytes]int length; // 연산할 Sector 길이 [4 Bytes]

Log(){

RorW = ' ';start = 0;length = 0;

}~Log() {}

};

실험 할 때 실제로 필요한 정보만을 얻기 위한 구조체

Page 33: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

Made By Hackereyes

실험 결과실험 결과

Page 34: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

34Made By Hackereyes

diskiomo.sysdiskiomo.sys 의 부착 모습의 부착 모습

Drive E

diskiomo.sys 의

부착 모습

Filter Driver Load Order v1.0.005 실행

Diskperf Driver

PartMgr Driver

Disk Driver

diskiomo Driver

Page 35: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

35Made By Hackereyes

Layered Layered 드라이버의 드라이버의 Tree Tree 구조구조

Device Tree V2.10 실행

Diskperf Driver

PartMgr Driver

Disk Driver

diskiomo Driver

Page 36: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

36Made By Hackereyes

실험 프로그램의 동작 모습실험 프로그램의 동작 모습

Page 37: 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

37Made By Hackereyes

실험 프로그램 정보실험 프로그램 정보Log 파일 정보 실험 날짜 , 실험 환경 , Memo

FTL 알고리즘 정보 알고리즘 이름 , 특이사항 , RAM 사용 크기

플래시 메모리 정보 플래시 메모리 이름 , 섹터 크기 , 스페어 크기 , 페이지 크기 , 블록 당 섹터 수 , 총 블록 개수 , 총 메모리 크기

파일 시스템 Log 정보 읽기 쓰기 비율플래시 메모리 연산 정보 한 I/O 당 실제 플래시 메모리 읽기 ,

쓰기 , 삭제 연산 호출 횟수물리 블록 삭제 정보 총 삭제 연산 횟수 , 최대 삭제 횟수 ,

최소 삭제 횟수 , 차이값 , 평균 , 표준편차

플래시 메모리 에러 확률 읽기 , 쓰기 , 삭제 오류 확률사용 블록 수 전체 블록 중 사용중인 블록 수