작업 디렉터리에 파일이 몇 개밖에 없는데 ls와 mkdir이 시간이 오래 걸리는 이유는 무엇입니까?

작업 디렉터리에 파일이 몇 개밖에 없는데 ls와 mkdir이 시간이 오래 걸리는 이유는 무엇입니까?

저는 네트워크 파일 시스템에 많은 파일을 씁니다. 이는 디렉토리 구조의 각 리프 디렉토리에 여러 개의(약 1000개) 파일이 있는 디렉토리 구조로 작성됩니다. 관련 파일을 포함하는 디렉토리 구조 부분은 매우 단순합니다.

ls 또는 mkdir foo를 실행하면 해당 작업에 오랜 시간(약 10분)이 걸립니다.

왜 이런 일이 발생합니까? ls 또는 mkdir과 ​​같은 작업을 보다 시간 효율적으로 실행하려면 어떻게 해야 합니까?

답변1

네트워크 파일 시스템을 사용하고 있으므로 디스크가 아닌 네트워크에 따라 속도가 제한될 수 있습니다.

이를 실행하면 ls기본 작업은 모든 파일을 읽고, 정렬하고, 인쇄하는 것입니다. 이는 각각 ls이 수천 개의 파일 항목을 읽어야 함을 의미합니다. 캐싱이 도움이 될 수 있지만 여전히 느린 프로세스입니다.

마찬가지로, 확인해야 하는 디렉터리를 실행할 때 mkdir해당 디렉터리가 아직 없는지 확인하세요.

해결책은 디렉터리당 파일 수를 줄여 구조가좁고 깊은대신에얕고 넓다.

관련 정보