Profile picture

[Linux] dd 명령어로 I/O 성능 테스트하기

JaehyoJJAng2023년 07월 07일

◾️ dd

dd는 리눅스의 파일시스템에서 block 단위의 파일을 복사하거나 변환할 수 있는 강력한 기능을 가진 명령어이다.

dd는 'data duplication'의 약어이기도 하고, 매우 강력한 명령어이기 때문에 디스크 파괴자(disk destroyer)라고도 불린다.

dd 커맨드는 서버의 디스크 I/O 속도를 측정할 때, 디스크가 가진 읽기/쓰기 성능을 측정할 때 자주 사용된다.


▪️ I/O 성능 측정

▪️ 쓰기(write) 속도 측정

dd if=/dev/zero of=write_test_file bs=1M count=1024 oflag=direct

위의 명령어에서 쓰인 옵션을 살펴보도록 하자.

  • if : 입력 파일, /dev/zero의 경우 리눅스 특수파일로 지정되어 있으며 파일 내용을 0x00로 채워줌.
  • of : 출력 파일, /dev/null의 경우 리눅스 특수파일로 지정되어 있으며 파일로 존재하고 있지만 실제로는 아무것도 없는, 주로 리다이렉션으로 어떤 출력 값을 버릴 때 자주 사용됨. 위 예제에서는 출력을 'write_test_file' 라는 파일명으로 지정하였음.
  • bs : 한 번에 읽고 쓸 파일 크기. 위 예제에서는 1MB로 지정됨.
  • count : 입출력을 반복할 횟수. 위 예제에서는 1024번을 반복(1GB를 쓸 때까지)
  • oflag : cache를 사용하지 않고 직접 Read/Write

위 명령을 실행하면 잠깐의 시간이 지난 후 결과가 나타난다.
image
1GB 분량의 데이터를 전송하는데 걸린 시간으로 0.466814 secs가 걸린 것을 확인할 수 있다.


▪️ 읽기(read) 속도 측정

이번에는 위 예제 쓰기 테스트에서 쓰인 파일(write_test_file)을 읽기 테스트로 측정해보도록 하자.
파일의 내용을 /dev/null로 버리는 형태로 읽기 테스트가 진행된다.

dd if=write_test_file of=/dev/null bs=1024

image
1GB가 읽어졌고 605966893 bytes/sec의 속도가 측정되었다.


Loading script...