if=/dev/zero 사용

if=/dev/zero 사용

나는알릭스 보드나는 설치했다데비안4알릭스(압출). 한동안 사용해본 결과 이 ​​보드의 쓰기 성능이 상당히 낮다는 것을 알았습니다.

다음 테스트를 실행했습니다.

dd count=100 bs=1M if=/dev/urandom of=/var/www/cgrid/test

이로 인해 다음과 같은 결과가 나왔습니다.

100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 328.903 s, 319 kB/s

이는 운영 체제가 설치된 컴팩트 플래시 카드나 플래시 드라이브에서 테스트를 실행할 때 얻은 속도와 동일합니다. Linux 데스크톱 컴퓨터에서 플래시 드라이브의 성능을 테스트한 결과 동일한 테스트를 통해 약 15.3MB/s를 얻었습니다.

알릭스 보드의 읽기 속도는 약 9MB/s입니다. (사용 테스트 hdparm -t)

내가 받고 있는 느린 쓰기 속도가 운영 체제의 결과인지(컴팩트 플래시 카드에서 직접 실행되지 않고 가상 디스크에서 실행되기 때문에) 아니면 내장된 하드웨어 솔루션이 매우 느린 것인지 궁금합니다.

답변1

나는 이 마더보드가 하드웨어 측면에서 데스크탑보다 느리다고 확신합니다. 그러나 urandom은 상황을 더욱 악화시킵니다.

이 마더보드는 2~3GHz 데스크탑 CPU 대신 500MHz CPU를 사용합니다. 이렇게 하면 if=/dev/urandom시스템이 얼마나 빨리 처리할 수 있는지에 대한 테스트가 더 중요해집니다 urandom. I/O가 아닌 CPU 성능을 비교하고 있습니다.

또한 마더보드에 256M RAM만 있는 경우 100M RAM 디스크 파일을 생성할 때 운영 체제가 스왑을 시작할 수 있습니다. 이런 일이 발생하면 테스트 결과에 큰 영향을 미치게 됩니다. 어쩌면 5천만 개의 파일로 테스트할 수도 있습니다.

if=/dev/zero 사용

를 사용하지 마십시오 if=/dev/urandom. 이 테스트의 비용은 매우 높습니다. 대신 if=/dev/zero.

테스트 1 - 디스크에 100M 쓰기

다음은 역시 100M을 쓰는 가상머신에서의 테스트 결과입니다.

if=/dev/zero

john@U64D211:~$ time dd count=100 bs=1M if=/dev/zero of=test
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.493612 s, 212 MB/s

real    0m0.540s
user    0m0.020s
sys 0m0.516s

if=/dev/urandom

john@U64D211:~$ rm test
john@U64D211:~$ time dd count=100 bs=1M if=/dev/urandom of=test
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 10.8723 s, 9.6 MB/s

real    0m10.909s
user    0m0.004s
sys 0m10.893s
john@U64D211:~$ 

테스트 2 - /dev/null에 100M 쓰기

urandom이 얼마나 비싼지 보여주기 위해 디스크에 아무 것도 기록되지 않도록 /dev/null에 기록해 보겠습니다.

if=/dev/zero

john@U64D211:~$ time dd count=100 bs=1M if=/dev/zero of=/dev/null
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.0240906 s, 4.4 GB/s

real    0m0.061s
user    0m0.012s
sys 0m0.052s

if=/dev/urandom

john@U64D211:~$ time dd count=100 bs=1M if=/dev/urandom of=/dev/null
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 10.4979 s, 10.0 MB/s

real    0m10.555s
user    0m0.024s
sys 0m10.513s

따라서 를 작성할 때 /dev/null거의 99%의 시간이 urandom시스템 호출에 소요됩니다.

PS1: VM에는 4G 메모리가 있습니다.

PS2: 파일 캐싱은 테스트 결과에 어느 정도 영향을 미칠 수 있지만 옵션 간의 차이가 if너무 커서 캐싱 요소를 무시해도 됩니다. 어쨌든 효과는 두 경우 모두에서 작동해야 합니다.

PS3: 평균적인 테스트 결과가 없습니다. 하지만 여러 번 실행해 보았는데 결과는 매우 유사했습니다.

관련 정보