SSD는 파일을 수정하거나 삭제할 때, HDD처럼 바로 덮어쓰기 하는게 아니라, 삭제flag를 박아놓고 다른 빈 공간에서 쓰기작업을 하죠. 그리고 시간 여유가 있을 때, 삭제flag 박아놓은 공간을 청소(진짜로 삭제)해서 빈 공간으로 만들구요. (SSD는 빈 공간을 확보하는 작업이 HDD보단 복잡합니다. 삭제대상 주변 데이터도 같이 휩슬려가니까, 휩슬려간 데이터 복원을 해야해서..)
문제는 여유공간이 너무 작으면, 삭제 표시 해 놓고 청소작업 미뤄놓는걸 못하다보니, 뭔가 쓰기/수정 작업을 할 때마다 실시간으로 삭제처리까지 동시에 해야하니까 속도가 느려집니다.
이 여유공간을 확보하기 위해, 사용자가 접근하지 못하는 여유공간을 미리 잡아놓는 경우도 있구요.
overprovisioning은 대충 엔드유저용은 7퍼센트 쯤 되서 최악의 경우 성능이 1/14쯤까지도 떨어질 수 있습니다. 최악의 경우까지 가지 않게 막지만요. 그리고 sequential write를 하면 사용 용량에 따른 성능차이 없습니다. 성능차이를 보려면 4kb와 같이 작은 단뉘오 random write를 범위 넓게 해야 하고요.
요새는 SSD 자체에 따로 여유공간을 둬서 크게 지장은 없어요
SSD는 파일을 수정하거나 삭제할 때, HDD처럼 바로 덮어쓰기 하는게 아니라, 삭제flag를 박아놓고 다른 빈 공간에서 쓰기작업을 하죠.
그리고 시간 여유가 있을 때, 삭제flag 박아놓은 공간을 청소(진짜로 삭제)해서 빈 공간으로 만들구요.
(SSD는 빈 공간을 확보하는 작업이 HDD보단 복잡합니다. 삭제대상 주변 데이터도 같이 휩슬려가니까, 휩슬려간 데이터 복원을 해야해서..)
문제는 여유공간이 너무 작으면, 삭제 표시 해 놓고 청소작업 미뤄놓는걸 못하다보니, 뭔가 쓰기/수정 작업을 할 때마다 실시간으로 삭제처리까지 동시에 해야하니까 속도가 느려집니다.
이 여유공간을 확보하기 위해, 사용자가 접근하지 못하는 여유공간을 미리 잡아놓는 경우도 있구요.
빈공간을 거의 두지 않고 지속적으로 사용했을때 GC가 비 효율적으로 작동해서 그런건데요.
저런 태스트는 별 의미가 없죠...
나래온 돌리면 속도 100메가 이하로 떨어지는 SSD들도 저걸로는 휙휙 날아다닙니다