취소
다음에 대한 결과 표시 
다음에 대한 검색 
다음을 의미합니까? 

대량의 파일이 있을 경우 원하는 파일을 삭제할때 생길 수 있는 로드에 관련된 질문입니다.

안녕하세요~3월이 다 지나가는데 날씨가 쌀쌀하네요.

일단 설명을 드리자면, 20초마다 Data 파일(.bin)이 생성/저장되고 있는데요, 

7일치 (30240개의 바이너리 file)가 저장된 이후에 file개수가 30240이 넘으면 1분마다 확인하여 제일 먼저 생성되었던 file부터 30240갯수를 넘지 않도록 data file을 삭제하는 방식입니다.

이렇게 저장/생성되는 부분은 총 32개이고 그림 파일로 올려드린 부분을 확인하시면 file이 저장되어 있는 폴더 32개를 찾고 '폴더 열거'로 파일이름 쫙 찾은다음 '배열 개수'를 통하여 30240개가 넘는지 확인하고 넘는다면 '배열 삭제'를 통하여  오래된 data file부터 삭제를 하고 있어요. 

(Data라는 폴더 안에 총 32개의 폴더가 생성되어 있고 각각의 폴더안에 파일이 생성/저장됩니다.1개 폴더당 30240개의 file이 저장되기 때문에 32개의 폴더가 full charge되었다고 하면 967680의 file이..거의  100만개의 file이 있을 수 있겠네요..용량으로 따지면 200gb가 넘습니다..)

문제는 이 routine이 동작하기 시작하면 문제가 생기는 것 같습니다.

저장해주는 부분 이외에도 그래프를 디스플레이 해주는 부분이 있는데, 해당 routine 동작하기 시작하면서 로드가 심각하게 걸리는 것 같습니다. 그래프가 툭툭 끊겨요.

파일 개수도 개수거니와 '배열 개수'를 확인해주는 부분에서부터 몇만개가되는 개수를 확인하고,  '폴더열거'를 통해 파일이름 전부를 읽어와 배열 삭제부분에 1d배열로 넣고 삭제하는 부분에서 로드가 심각하게 걸리는게 아닌가 싶습니다.

'폴더 열거' 나 '배열 삭제' 를 통하지 않은 로드가 가장 적게 걸릴 수 있는 방법이 있을까요? 32개 full charge가 아닌 10개 미만의 폴더에만 file이 꽉차도 로드걸리는 게 심하네요 ㅠ.ㅠ

0 포인트
1/3 메시지
2,016 조회수

안녕하세요 Codeblack님.

만약 파일 이름들을 꼭 불러와야한다면 개선의 여지가 없을듯합니다..

보통 대용량 파일 목록을 구성하실 때는 예상 가능한 방식으로 구현하는데, 그렇지 않은 건가요? 예를들면, Test_result_0001, Test_result_0002 라던지.. 일단 폴더 열거 함수로 수십개나되는 파일리스트를 가져와야 한다면, 이미 대용량 변수가 발생하는 바람에 속도가 느려질 수 밖에 없습니다.

파일명을 예상 가능하다면, Test_result_30240이 완료된 다음 다시 Tes_result_00001을 덮어쓰는 방식으로 구성하시는 것이 별도의 삭제 프로세스가 없기때문에 효율적일 것 같습니다.

0 포인트
2/3 메시지
1,984 조회수

filename을 대략적으로 설명드리자면 파일이 생성된 년도/날짜/시간(시분초)로 구성되어 있습니다. 이외의 정보도 들어가 있으며, filename을 기반으로 리스트화하여 디스플레이 하고 있으며, 해당 리스트 목록을 클릭시 데이터를 출력해서 보여주고 있습니다. 

덮어쓰는 방식은 생각도 못했는데 file name 구성이 정보를 포함하다보니 가능할지 모르겠네요. 생각을 더 해봐야겠습니다.

0 포인트
3/3 메시지
1,978 조회수