나는 하드 드라이브 속도 벤치마크를 수행 중이었고 어떤 일이 일어나는지 확인하기 위해 다음 명령을 시도하기로 결정했습니다.
dd if=/dev/zero of=/dev/null
취소 후 다음을 얻습니다.
(269 GB, 251 GiB) copied, 107.101 s, 2.5 GB/s
바이트 크기나 개수를 변경하면 다른 결과가 나타납니다.
dd if=/dev/zero of=/dev/null bs=4096 count=2000
(8.2 MB, 7.8 MiB) copied, 0.00134319 s, 6.1 GB/s
dd if=/dev/zero of=/dev/null bs=16384 count=2000
(33 MB, 31 MiB) copied, 0.00305674 s, 10.7 GB/s
실제 드라이브를 읽거나 쓰지 않기 때문에 여기서 실제로 무엇을 측정하고 있습니까? CPU는 얼마나 빨리 0을 생성하여 가상 쓰레기통으로 옮깁니까? 이것은 실제로 나에게 매우 느리게 보입니다.
RAM에 닿을까요? 마더보드 버스가 작동합니까?
이 테스트에는 실용적인 벤치마킹 애플리케이션이 있습니까(예: 여러 세대의 프로세서 비교)?
실제 디스크가 (이론적으로) 무한히 빠르더라도 여기서의 결과는 시스템이 달성할 수 있는 가장 빠른 I/O입니까?
실제로 측정되는 것은 무엇입니까 dd if=/dev/zero of=/dev/null
?
답변1
이것확실히하드 드라이브를 벤치마킹하되 CPU 스레드는 1개만 사용합니다( dd
명령은 단일 스레드 프로세스이기 때문에).
당신이 하고 있는 일은 기본적으로 프로세서에 가능한 한 빨리 블랙홀에 가능한 한 많은 0을 보내도록 요청하는 것입니다.
내 컴퓨터에서 동일한 작업을 수행하면 다음과 같은 결과가 나타납니다.
dd if=/dev/zero of=/dev/null bs=16384 count=2000
2000+0 records in
2000+0 records out
32768000 bytes (33 MB, 31 MiB) copied, 0,018317 s, 1,8 GB/s
간단히 말해서, 당신의 CPU는 내 것보다 낫다 ;-)
Intel(R) 코어(TM) i5-2410M CPU @ 2.30GHz
답변2
물어
실제로 측정되는 것은 무엇입니까
dd if=/dev/zero of=/dev/null
?
운영 체제가 512바이트 0 블록을 읽고 삭제하는 속도를 측정합니다. 이러한 작은 블록을 읽는 것은 효율적이지 않으므로 더 큰 블록 크기에 대해 더 나은 처리량을 얻을 수 있습니다.
Linux 기반 시스템에서 실제로 사용하려면 cat
대신 사용하기 dd
가 cat
훨씬 쉽고 최적화된 것보다 느린 경우가 거의 없습니다.dd