상용 컴파일러를 사용하면 tar같은 명령어도 더 빨라지나요???
글쓴이: xoduddk123 / 작성시간: 월, 2014/05/26 - 2:58오후
안녕하세요
임베디드 ARM 환경에서 tar명령어로 240M정도 용량의 압축파일을 해제하고있습니다.
파일의 총갯수는 2만개 정도 됩니다.
여기서 압축을 풀떄 사용하는 tar명령어를 툴체인을 다운받아서 크로스컴파일한 tar 명령어를 사용하고있습니다.
그런데 압축을해제하다보면 시간이 거의 7분가량 걸리는데
이러한 tar 명령어를 일반적으로 사용하는 크로스컴파일러 툴체인말고
상용 컴파일러를사용하면 이러한 작업을 더빠르게할수있나요 ??
이러한 작업을 더 빠르게 할수있따면 몇%나 성능의 향상을 가질수있나요 ??
Forums:
tar 명령의 특성을 고려해 보면 CPU 사용보다
tar 명령의 특성을 고려해 보면 CPU 사용보다 IO 작업에 시간이 많이 소요될 것으로 생각합니다.
그렇다면 상용 컴파일러를 사용한다고 한들 거의 차이가 없을 것으로 예상해 봅니다.
IO 작업 시간을 줄이려면 (읽는 속도도 그렇겠지만) 쓰는 속도가 빠른 매체를 쓰는 것이 답이 되겠지요...
특정 매체에 최적화된 파일 시스템을 사용하는 것도 도움이 될 확률이 크겠구요...
..
윗분 말씀대로
tar 압축 작업시에 zip알고리즘 적용시간을 제외하고는 디스크 액세스 타임이 주로 소모될것으로 생각됩니다.
임베디드 디바이스의 낸드 플래시 혹은 sd카드의 write 스피드가 높은 녀석을 사용하시는것이 더 체감되지 않을까요?
---------------------------------------------------------------
Opensource에 기여하는 것이 꿈입니다.
내가 만든 코드를 모두가 사용할 때 까지~
병목현상이 어디서 나타나는지 알아보세요.
저도 디스크 I/O에 한표. 아마 그 문제가 맞을겁니다. 이외에..
- 실제로 압축이 적용된 파일을 사용하는 경우, 혹시라도 압축해제 연산이 너무 느려서 디스크 I/O보다 늦은 압축해제속도가 나타난다면, 압축률을 낮추는 것이 도움이 될 수 있습니다.
- 디스크 I/O보다 압축해제가 늦은데도 멀티코어 활용이 제대로 되지 않는 상태라면 복수의 압축해제 프로세스를 한번에 돌리는 것이 도움이 될 수 있습니다. (싱글 환경이라면 패스.)
- 작은 파일이 너무 많아서 문제가 생긴다면 디스크 버퍼링에 관한 환경설정 등으로 개선할 수도 있습니다.
- 꼭 필요한 부분만 먼저 해제한 뒤에 나머지는 백그라운드로 천천히 해제하는 방법도 경우에 따라선 사용할 수 있겠네요.
- 데이터 내용이 매번 크게 변하지는 않는다면 변경된 부분만 다운로드하는 형태로의 시스템 형태의 개선을 고려해볼 수도 있습니다. 데이터가 완전하다는 보장을 받는게 골치아파지겠지만..
등등등..
--
뭐...
임베디드에선 싱글 코어래서 빨라지진 않겠지만. (싱글 코어라 가정안에서)
만약 tar가 압축을 해서 gzip을 사용한다면 gzip 자체가
싱글쓰레드래서 속도가 느리다 하더군요.
멀티쓰레드 gzip버젼인 pigz란 프로그램이 있는데 멀티코어에서
tar랑 같이쓰면 속도가 많이 붙는 다라고 하네요.
http://www.zlib.net/pigz/
설정은 tar에서 -I 옵션을 사용하라고 하네요.
아니면 프로그램을 gzip으로 rename하던가
댓글 달기