[ CnUnix ] in KIDS 글 쓴 이(By): belami (__커피__) 날 짜 (Date): 2007년 9월 28일 금요일 오전 10시 30분 29초 제 목(Title): Re: [Q] 파일 빨리 옮기기 > (ufs의 디렉토리 파일 구조를 몰라서 추측만 하는거지만 하나 빼고, 하나 넣는게 > 상당한 부하를 주는 것 같네요.) 만일 한 폴더에 파일 52만개가 모두 다 들어 있는 거라면 그 오버헤드가 맞습니다. 경험치로는 한 폴더에 1만개 이상의 파일이 들어가면 free slot을 찾는 데 시간이 1~2초 이상 들어갑니다. 어제 기준 17시간 동안 30만개 옮긴 거니까 파일당 5초씩 걸린 셈인데 처음엔 그렇게 안 걸렸겠죠. 지금 40만개 완료했으니까, 아마도 지금쯤은 파일 개당 10~20초 가량 걸릴 것 같군요. 디렉토리 구조를 hash 구조로 바꿔주면 이런 문제는 없어집니다. 예) 12345/045/12345.txt 와 같은 식으로 해서 한 폴더에 1만개 이하의 (가능하면 5천개 이하) 파일이 들어가도록. kids 파일을 제가 모두 캐싱을 해서 (kidsb by thread) 여기 로컬폴더에도 250만개 파일이 있는데 (게시물 수 x 2 (html, text)), xcopy로 폴더 목사를 해보니 각 해시 디렉토리의 뒷부분으로 가면 점점 느려지다가 해시 디렉토리명이 바뀌면 다시 아주 빨라지는 게 계속 반복되는군요. 해시 디렉토리를 1000개로 해서 ANonymousOld070925 보드의경우 현재 디렉토리당 930여개 밖에 저장이 되지 않는데도 그래요. 눈에 띄게 속도 차이가 나요. 그리고 이 오버헤드는 directory를 새로 만들거나, tape에서, tar에서 직접 풀거나 하는 걸로 해결이 안됩니다. 문제가 target directory 에서의 free slot 서치에 문제가 있는거라서. 같은 이유때문에, 재난 시 수십만개 파일을 리스토어하게 되면 백업보다 항상 느리고 보통은 백업 시간의 3~10배 가량의 시간이 들게 됩니다. hash 구조를 도입하면 리스토어 시간을 대략 2~3배 이내로 줄일 수 있어요. |