![폴더 삭제가 병렬화되지 않는 이유는 무엇입니까?](https://rvso.com/image/1642397/%ED%8F%B4%EB%8D%94%20%EC%82%AD%EC%A0%9C%EA%B0%80%20%EB%B3%91%EB%A0%AC%ED%99%94%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
답변1
최신 파일 시스템은 쓰기 중에 항상 데이터 무결성이 유지되도록 노력합니다. 과거에는 이것이 성공적으로 완료되거나 전혀 완료되지 않는다는 점에서 "원자적" 쓰기라고 불리는 것을 들었습니다.
디스크 대기열과 캐시를 무시하고 한 번에 하나의 명령만 실제 디스크에 보낼 수 있으며 삭제 작업은 디렉터리 트리에서 항목을 제거하고 표시하는 최종 쓰기 전에 여러 번의 읽기(디렉터리 스캔 등) 등이 될 것입니다. 공간은 무료입니다.
저널링(디스크 작업이 중단된 시점에 따라 앞뒤로 롤백할 수 있음)의 최신 사용과 결합하면 실제로 디스크 컨트롤러에 대한 작업(읽기/탐색/쓰기)을 대기열에 추가하는 데 병목 현상이 발생할 수 있습니다.
휴지통으로 항목을 이동하는 것은 단순히 폴더를 이동하는 것입니다. 더 이상 필요하지 않은 많은 데이터를 표시하는 대신 폴더 구조를 수정하는 것만으로 항목을 "삭제"할 수 있는 방법이 훨씬 적습니다. 휴지통을 비우면 디스크 공간을 다시 확보해야 하는 작업이 다시 시작됩니다.
답변2
이 작업은 CPU가 아니라 디스크에 의해 병목 현상이 발생합니다. 디스크가 변경 사항을 저장할 수 있는 것보다 CPU를 더 빠르게 만들 수는 없습니다. 따라서 CPU는 추가 작업을 제출하기 전에 디스크가 해당 작업을 수행할 때까지 기다립니다.
이 효과는 파일 시스템 오버헤드가 파일 자체의 크기보다 커서 처리하는 데 비정상적으로 오랜 시간이 걸리는 것처럼 보이는 많은 작은 파일에 대한 작업에서 특히 증폭됩니다.