디지털 라이브러리[ 검색결과 ]
SSD의 수명 및 성능 향상을 위한 F2FS 파일 시스템의 DISCARD 명령어 관리 기법
http://doi.org/10.5626/JOK.2024.51.8.669
DISCARD 명령어는 유효하지 않는 파일 시스템의 블록 정보를 SSD에 전달함으로써 SSD의 수명과 성능을 향상시키는데 도움이 되는 인터페이스이다. 그러나, F2FS 파일 시스템에서 DISCARD 명 령어는 유휴 시간에만 처리되기 때문에 수명과 성능의 향상에 한계를 보인다. 본 논문에서는 짧은 유휴 시 간에 DISCARD 명령어를 효율적으로 처리하기 위한 EPD 기법과 DISCARD 명령어를 덮어쓰기 명령으 로 대체하기 위한 세그먼트 할당 기법인 PSA기법을 제안한다. 제안 기법의 효과를 평가하기 위해 다양한 워크로드를 기반으로 실험을 진행하였으며 실제 SSD에서의 수명과 성능을 확인하였다. 그 결과, 제안 기 법이 기존 F2FS 대비 Write Amplification Factor (WAF)를 최대 40%, 처리량을 최대 160% 향상시킬 수 있음을 확인하였다.
OLTP 워크로드에서 쓰기-웜 페이지에 대한 고찰
http://doi.org/10.5626/JOK.2023.50.11.1002
버퍼 교체 정책의 중요한 목적 중 하나는 버퍼 풀에 자주 접근되는 데이터를 캐싱하여 디스크 I/O를 최소화하는 것이다. 그러나, 버퍼 풀에 참조 빈도가 높은 페이지들이 효과적으로 저장됨에도 불구하고, 적은 양의 페이지들에 의해 과도하게 많은 디스크 I/O가 발생할 수 있다. 이는 버퍼 풀에서 페이지가 축출될 때, 상대적으로 참조 빈도가 높은 쓰기-웜 페이지(Write-Warm Page)가 쫓겨나 해당 페이지에 대한 버퍼 풀 반입과 반출 과정이 반복되기 때문이다. 본 논문에서는 이러한 현상을 "웜 페이지 스레싱((Write-)Warm Page Thrashing)"이라고 정의하며, 디스크로 플러시 되는 페이지 중 10%에 해당하는 페이지들이 약 41%의 디스크 쓰기를 발생시키는 쓰기-웜 페이지의 존재를 확인하였다. 특히, 이는 읽기 대비 쓰기가 느린 플래시 저장장치에서 성능에 악영향을 미칠 수 있기 때문에, 이를 검출하고, 스레싱을 방지하는 새로운 버퍼 관리 정책을 필요로 한다.
MQSim-E: 엔터프라이즈향 SSD에 특화된 NVMe SSD 시뮬레이터
http://doi.org/10.5626/JOK.2022.49.4.271
SSD와 같은 저장장치 시스템의 연구에서는 시스템 내부의 SW/HW의 동작 방식을 정확히 모사하는 시뮬레이터가 중요한 역할을 한다. 본 논문에서는 NVMe SSD의 연구에 광범위하게 사용되는 MQSim이 엔터프라이즈향 SSD의 개발에 부적합함을 보이고 엔터프라이즈향 SSD에서 채택되는 최적화 기법들을 지원하는 MQSim-E 시뮬레이터를 제안한다. MQSim-E는 기존의 MQSim에 비해 플래시 메모리의 병렬성을 적극적으로 활용하며 가비지컬렉션의 성능 오버헤드를 최소화하여 엔터프라이즈향 SSD에서 중요한 설계 목표인 IOPS는 최대 210% 개선하며 꼬리 응답시간은 최대 16,000% 감소시켜 상용 엔터프라이즈향 SSD의 특성이 정확히 반영되도록 개선하였다.
연속성을 고려한 해시 기반의 플래시 변환 계층
http://doi.org/10.5626/JOK.2020.47.8.717
SSD의 용량이 크게 증가하면서 SSD의 내부 데이터 관리를 위해 더 큰 용량의 DRAM이 필요하게 되었다. DRAM의 비용이 SSD의 전체적인 비용을 결정하는 중요한 요소이기 때문에 성능의 감소 없이 DRAM의 비용을 줄이는 것이 중요하다. 본 논문에서 우리는 이 목표를 달성하는 새로운 해시 기반의 기법을 제안한다. 기존의 해시 기반방식과는 다르게 우리의 기법은 논리주소의 연속성을 활용하여 garbage collection 오버헤드를 효과적으로 감소시키는 가상블록 테이블 기법을 제안한다. 실험 결과는 SEQhFTL이 평균적으로 PFTL의 39%에 해당하는 DRAM 사용량을 보이면서 PFTL과 비슷한 수준의 오버헤드를 갖도록 줄였다.
오픈 채널 SSD에서 성능 간섭 제거를 위한 호스트 수준 I/O 스케줄러
http://doi.org/10.5626/JOK.2020.47.2.119
최근 솔리드 스테이트 드라이브(SSD)가 하드 디스크 드라이브(HDD)에 비해 높은 I/O 성능 및 낮은 에너지 소비를 제공함에 따라 여러 사용자가 자원을 공유하는 데이터센터 및 클라우드 컴퓨팅 환경에서 SSD의 사용이 확장되고 있다. 이러한 전환에 따라, 각 사용자에 서비스 품질(Quality of Service)을 보장하는 방법에 대한 연구가 활발히 이뤄지고 있다. 이전에 제안된 Workload-Aware Budget Compensation (WA-BC) 스케줄러는 NVMe SSD를 여러 가상머신이 공유하는 환경에서 각 가상머신의 QoS를 보장한다. 하지만 WA-BC 스케줄러는 가상머신별 워크로드 특징을 알아내기 위해 멀티 스트림 SSD를 부적절하게 사용한다는 점에서 취약하다. 우리는 이와 같은 취약점을 보완하여 오픈 채널 SSD를 여러 사용자가 공유하는 환경에서 사용자 간 성능 간섭을 제거하는 호스트 수준의 I/O 스케줄러를 제안한다. 제안된 스케줄러는 SSD 스트림을 사용자별로 할당하지 않고도 워크로드 특징을 I/O 요청의 연속성을 통해 파악한다. 이는 제안된 스케줄러가 호스트 수준의 스케줄러이나 오픈 채널 SSD의 특성을 활용하여 디바이스 내부의 정보를 스케줄링에 반영할 수 있기에 가능하다. 워크로드의 특성을 통해 SSD 내 I/O 간섭을 발생시키는 가비지 컬렉션에 대한 기여도를 파악하고, 기여도가 높은 사용자에 대해 처벌함으로써 우리는 스토리지 자원을 공유하는 여러 사용자 간에 발생하는 성능 간섭을 제거할 수 있음을 본 연구에서 보인다.
NVMe 인터페이스 지원 멀티코어 SSD 시뮬레이터 개발
http://doi.org/10.5626/JOK.2018.45.5.427
SSD 스토리지는 새로운 호스트 인터페이스의 채택, 멀티코어를 사용한 멀티 채널/웨이 입출력 병렬화의 활용 등을 통해 성능/용량 모두에서 향상을 지속하고 있다. 최신 SSD의 구조를 설계하기 위해서는 최신 SSD에 적용된 기법들을 지원하는 새로운 SSD 시뮬레이터의 개발이 필수적이다. 본 논문에서는 멀티 FTL 코어 동작의 모사가 가능한 SSD 시뮬레이터인 Virtual-machine based NVMe SSD SIMulator (VNSIM)을 개발한다. VNSIM은 전체 입출력 스택을 모사하는 시뮬레이터로서, 2개 이상의 Flash Translation Layer (FTL) 코어가 동작하는 SSD 구조를 모사하고 평가할 수 있는 환경을 제공한다. 최신의 호스트 컨트롤러 인터페이스인 NVM Express를 지원하고, 페이지 캐시 레지스터 모사를 포함하는 플래시 입출력 에뮬레이터를 개발하여 플래시 입출력 성능을 시뮬레이션한다. 삼성 950 Pro NVMe SSD와의 성능 비교 검증 결과 6.2%~8.9%의 오차율을 보였다.
멀티큐 SSD를 위해 멀티코어 확장성을 제공하는 공정한 입출력 스케줄링
최근에 제안된 NVMe 기반의 멀티큐 SSD는 여러 개의 코어들이 전담 큐들을 통해 병렬적으로 입출력을 수행함으로써 높은 SSD 대역폭을 제공한다. 이러한 멀티큐 SSD에 대해서 입출력 응용마다 대역폭 지분을 제공하기 위해서는 각 코어에게 대역폭 지분을 제공하는 것이 요구되며, 이를 위한 공정지분 스케줄링이 필요하다. 본 논문은 멀티큐 SSD를 위해 멀티코어 확장성을 제공하는 공정 큐잉 알고리즘을 제안한다. 제안하는 알고리즘은 무작위 선택 기법을 이용하여 코어간 동기화 오버헤드를 최소화하고 각 코어가 가중치에 비례하는 대역폭을 수신하도록 한다. 실험 결과, 제안하는 알고리즘은 block-mq를 사용하는 커널에서 정확한 대역폭 분할 효과를 보여주며, 코어 개수에 상관 없이 기존 FlashFQ 스케줄러보다 우수한 성능을 보여준다.
MySQL InnoDB엔진의 Secondary Index Scan을 위한 Prefetch 기능 구현
플래시 SSD는 기존 하드디스크에 비해 높은 에너지 효율성, 외부 충격에 강한 내구성, 높은 입출력 처리량 등 여러 장점을 지니고 있다. 따라서 3D-NAND 및 V-NAND 등 단위 용량 당 비용을 획기적으로 개선하는 최신 기술의 등장과 맞물려서, 플래시 SSD가 많은 영역에서 하드디스크를 급격하게 대체하고 있다. 하지만, 주로 하드디스크를 가정하고 개발된 기존 데이터베이스 엔진은 플래시 SSD의 특성 (예를 들어, 내부 병렬성)을 제대로 활용하지 못하고 있다. 본 논문에서는, 더 빠른 질의 처리를 위해 플래시 SSD에 내재한 내부 병렬성을 활용하는 방법으로, MySQL InnoDB엔진에서 보조 인덱스(Secondary Index)를 이용한 스캔을 위해 비 동기적 입출력을 활용한 Prefetch 기능을 구현하였다. Prefetching을 사용한 스캔 기법은, 기존 InnoDB엔진의 보조 인덱스 스캔과 비교해서, 데이터 페이지 크기가 16KB일 경우, 약 3배 이상, 데이터 페이지 크기가 4KB일 경우, 약 4.2배 이상 성능 향상을 보인다.
가상화 환경 IoT 게이트웨이의 성능 향상을 위한 SSD 캐시 기법
스토리지는 응용 프로그램의 성능에 가장 큰 영향을 주므로 가상화된 IoT 게이트웨이를 사용한 홈 클라우드 환경에서 매우 중요하다. 스토리지의 성능 향상을 위해 SSD와 같은 고성능의 디스크를 캐시로 사용해 왔으나 취약한 쓰기 성능과 제한된 셀 수명 문제로 인해 주로 읽기 전용 캐시로 사용하였다. 그러나 사용자 응용의 성능 향상을 위해서는 읽기 작업뿐만 아니라 쓰기 작업의 성능도 매우 중요하다. 본 논문은 이러한 환경에서 읽기 및 쓰기에 모두 사용 가능한 새로운 SSD 캐시 기법을 제안한다. 실험을 통해 본 캐시 기법이 응용 프로그램의 임의 쓰기 작업을 순차적 동작으로 변환시켜 성능 향상을 이룰 수 있음을 확인하였다.
응용프로그램의 기동시간 단축을 위한 파일 시스템 수준의 SSD 캐싱 기법
응용프로그램의 기동 시간은 기기에 대한 사용자 체험에 영향을 주는 중요한 지표로 보조 기억 장치의 성능에 의해 큰 영향을 받는다. 하드디스크 대신 SSD를 사용하게 되면 기동 시간을 크게 낮출 수 있지만 비용 대비 성능을 고려하면 작은 용량의 SSD를 하드디스크의 캐시로 쓰는 것이 현실적인 대안이 될 수 있다. 본 논문에서는 파일시스템 수준에서 하드디스크 상의 블록을 SSD로 이주시키는 기법을 제안한다. 제안한 기법은 기존의 SSD 캐싱 기법들에서 요구되던 캐시 데이터의 사상에 필요한 주 메모리, CPU, 그리고 사상 정보의 유지를 위한 SSD 공간 사용의 부가적인 오버헤드가 없다. 8개의 응용프로그램을 이용한 실험에서 메타데이터와 데이터 블록을 모두 SSD에 캐싱한 경우에 기동시간이 평균 56% 단축됨을 확인하였다.