우리네 장
cp와 mv 중 cpu의 오버헤드를 일으키는 명령어는? 본문
이번에 회사에서 테스트 케이스를 작성하면서, 서버의 테스트 환경을 제한하여 정의할 일이 있었습니다.
( 이렇게 처음부터 작성은 처음이었는데 생각보다 고려할 사항들이 많더라구요..ㅠ )
테스트 하는 작업이 실제 컴퓨터에 어떻게 처리되는지 알기 위해서는,
기본적으로 서버에서 필수적으로 돌려야 하는 프로세스들의 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 |