Linux 디스크 쓰기 속도는 dd 명령에 따라 다릅니다 bs dd if = / dev /

dd 명령으로 확인하면서 디스크 쓰기 차이가 너무 많이 존재하는 이유 without bswith bs

dd if = / dev / zero of = / tmp / test.log count = 100000000

100000000+0 records in
100000000+0 records out
51200000000 bytes (51 GB) copied, 289.564 s, 177 MB/s

dd if = / dev / zero of = / tmp / test1.log bs = 1G count = 50 oflag = dsync

50+0 records in
50+0 records out
53687091200 bytes (54 GB) copied, 150.427 s, 357 MB/s

dd if = / dev / zero of = / tmp / test2.log count = 100000000

100000000+0 records in
100000000+0 records out
51200000000 bytes (51 GB) copied, 288.614 s, 177 MB/s

dd if = / dev / zero of = / tmp / test3.log bs = 1G count = 50 oflag = direct

50+0 records in
50+0 records out
53687091200 bytes (54 GB) copied, 109.774 s, 489 MB/s

나는 고글을 옮겼 지만 구체적인 예를 얻지 못했지만 여기 에는 좋은 동굴이 거의없는 좋은 기사가 있습니다.



답변

bs매개 변수 dd가 없으면 장치의 표준 블록 크기 (대개 512 바이트)가 사용됩니다. 즉,

  • 512 바이트의 페이로드마다 요청 오버 헤드가 발생합니다.
  • 512의 블록 크기가 장치에 대한 최적의 블록 크기가 아닌 경우 (예 : 512 에뮬레이션 또는 SSD가있는 4K 섹터) 장치를 최적의 작업 지점에서 멀리 떨어 뜨립니다.

하드웨어에 따라 bs장치 캐시에 맞을 수록 더 작은 숫자로 더 나은 숫자를 얻을 수 있습니다 . 예를 들어 1GB 캐시가있는 RAID 컨트롤러의 경우 10MB 블록 크기를 시도 할 수 있습니다.