SSD 성능 최적화: 접근 패턴과 시스템 설정 가이드
핵심 내용
작은 랜덤 쓰기는 내부 프레그멘테이션을 유발해 성능을 저하시키므로, Clustered block 크기에 맞춘 대량 쓰기가 권장된다.
자세히 보기
SSD의 성능은 데이터 접근 패턴과 시스템 설정에 따라 크게 달라진다. **시퀀셜(Sequential)**과 랜덤(Random) 액세스의 성능 차이는 데이터 크기에 의존적이다. 쓰기 데이터가 Clustered block 크기(일반적으로 16MB 또는 32MB) 이상이라면, 랜덤 쓰기도 SSD의 내부 병렬 처리 능력을 최대한 활용하여 시퀀셜 쓰기와 유사한 스루풋을 낼 수 있다.
반면, NAND 플래시 페이지 크기보다 작은 랜덤 쓰기는 맵핑 테이블 업데이트 빈도 증가와 **내부 프레그멘테이션(internal fragmentation)**으로 인해 성능 저하를 초래한다. 작은 랜덤 쓰기는 물리 공간 전체에 무효화된 페이지를 흩어놓아 Garbage-collection의 효율을 떨어뜨린다. 따라서 버퍼링이 불가능한 작은 쓰기가 아니라면, 단일 쓰레드로 대량의 데이터를 한 번에 기록하는 것이 레이턴시와 스루풋 모두에서 유리하다.
읽기 성능은 쓰기 패턴과 밀접하게 연관된다. FTL이 데이터를 여러 채널로 스트라이핑하여 저장하므로, 연관된 데이터가 동일 블록이나 클러스터링 블록에 함께 기록될 때 병렬 처리를 통해 빠르게 읽을 수 있다. 읽기와 쓰기가 동시에 발생하는 혼합 워크로드는 자원 경합으로 인해 성능이 저하될 수 있으므로, 큰 단위의 요청을 분리하여 처리하는 것이 권장된다.
시스템 설정 측면에서는 파티션을 NAND 플래시 페이지 크기에 맞춰 **얼라인먼트(alignment)**하여 불필요한 읽기-수정-쓰기 사이클을 줄여야 한다. 파일 시스템에서는 TRIM 명령을 활성화하고, 메타데이터 업데이트를 최소화하기 위해 noatime 또는 relatime 옵션을 사용하는 것이 좋다. 또한, SSD는 기계적 이동이 없으므로 I/O 스케줄러를 NOOP 또는 Deadline으로 변경하고, 스왑 사용을 줄이기 위해 vm.swappiness 값을 낮추는 것이 성능 향상에 도움이 될 수 있다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.