우리네 장

cp와 mv 중 cpu의 오버헤드를 일으키는 명령어는? 본문

OS

cp와 mv 중 cpu의 오버헤드를 일으키는 명령어는?

qpmi1zm29 2024. 3. 8. 17:16

이번에 회사에서 테스트 케이스를 작성하면서, 서버의 테스트 환경을 제한하여 정의할 일이 있었습니다.

( 이렇게 처음부터 작성은 처음이었는데 생각보다 고려할 사항들이 많더라구요..ㅠ )

 

테스트 하는 작업이 실제 컴퓨터에 어떻게 처리되는지 알기 위해서는, 

기본적으로 서버에서 필수적으로 돌려야 하는 프로세스들의 cpu나 io 작업을 파악할 필요성이 있었고,

테스트하는 작업의 성능만을 측정할 수 있도록 기타 자원 사용률은 최소로 하는 것이 목표였어요.

 

저는 작업을 테스트 하기 위해, N개의 이벤트를 발생시켜야 했는데, 

해당 이벤트가 생성되도록 하는 명령어가 2가지였습니다.

바로 cp와 mv였어요!

 

결과만 놓고 본다면 두 작업 모두 같은 이벤트를 발생하고 결과도 동일하지만, 테스트하는 작업에 의도하지 않은 부가적인 오버헤드를 최대한 줄이기 위해서 두 명령어의 cpu 사용률을 비교하였습니다.

( 다른 프로님의 제안이었는데, 말 듣기 정말 잘했..ㅠ.ㅠ )

 

결과적으로 mv가 cp보다 리소스 사용량이 적습니다.

 

대상으로 하는 파일의 크기가 얼마인지에 따라 리소스 자원량은 달라지기 때문에 절대적인 수치를 근거로 말 할순 없지만,

- CP : 복사하고자 하는 파일의 내용을 저장하는 별도의 메모리 공간 + 새로운 곳에 파일을 쓰지 위한 메모리 / CPU / DISK IO 작업 필요

- MV : 파일의 디렉토리 정보만 수정 = 즉 메타정보만 별경하면 되므로 특이점의 리소스 사용하지 않음

 

※ 추가적으로 Network I/O 또한 Disk I/O를 사용합니다. 전달받은 정보를 어플리케이션으로 전달하기 위해 커널쪽에서 버퍼를 사용하기 때문이죠!, 그래서 Disk I/O는 I/O 동작들에서 기본적으로 필요한 작업이라고 생각하시면 됩니다. ※ 

'OS' 카테고리의 다른 글

성능 측정을 위한 OS 알기 #1- bounded process  (2) 2024.03.18
우분투는 Dash shell!  (2) 2024.03.08
[ 동기화 #5 ] 모니터 in JAVA  (2) 2023.12.27
[ 동기화 #4 ] 모니터  (1) 2023.12.27
가시성 feat.volatile  (0) 2023.12.27