DD dari / dev / nol ke / dev / null ... apa yang sebenarnya terjadi

13

Apa yang terjadi pada perintah

sudo dd if=/dev/zero of=/dev/null bs=500M count=1. 

Ke mana nol sebenarnya pergi dan secara umum apa yang terjadi? Kecepatannya adalah 905 MB / s

Jika saya dd ke ramdisk kecepatannya hanya 388 MB / s. Dan jika saya ddke hdd saya kecepatannya hanya 63,2 MB / s

agz
sumber
1
/dev/nulladalah tujuan yang baik untuk operasi pengujian / pembacaan waktu . /dev/zeroadalah sumber yang bagus untuk operasi penulisan pengujian / penghitungan waktu . Menggabungkan sumber dan tujuan ini dalam satu operasi tidak masuk akal. Bahkan tidak yakin apakah ini memberikan nomor overhead yang berarti.
serbuk gergaji
@sawdust Sebaliknya, bukan?
Jamie
2
Ya, @sawdust, komentar Anda di atas tidak menyenangkan (untuk pemula). of = / dev / sda akan menimpa partisi hard drive seseorang, konten, dll dari = ~ / bigfile.tmp akan menjadi contoh yang lebih baik untuk digunakan ...
Kevin Traas
2
Saya tahu saya cukup terlambat ke pesta, tetapi kalau-kalau ada yang ingin mencoba ini sendiri: tidak perlu menjalankan perintah ini sebagai root, dan karenanya tidak perlu untuk sudo.
Roel Schroeven
@ Jamie Nah, ini jalan yang benar.
Awn

Jawaban:

14

/dev/zeromemberikan aliran nol byte tanpa akhir saat dibaca. Fungsi ini disediakan oleh kernel dan tidak memerlukan alokasi memori. Semua menulis /dev/nulldijatuhkan diam-diam.

Akibatnya, ketika Anda melakukan dd, sistem menghasilkan 500 megabyte dalam nol byte yang dibuang begitu saja. Kecuali untuk buffer sementara, tidak ada data yang disimpan sebelum, selama, atau setelah operasi ini.

Kecepatan transfer dari /dev/zeroke /dev/nullditentukan terutama oleh kecepatan prosesor Anda dan panggilan sistem yang relevan. (Dalam kasus Anda, buffer berukuran 500 MB, dan karenanya operasi menguji kecepatan memori Anda juga.)

bwDraco
sumber
7

Saya akan menerjemahkan perintah ini untuk Anda:

dd if=/dev/zero of=/dev/null bs=500M count=1

Gandakan data ( dd) dari file input ( if) dari /dev/zero(persediaan virtual tak terbatas 0) ke file output ( of) dari /dev/null(lubang pembuangan virtual) menggunakan blok ukuran 500M ( bs= ukuran blok) dan ulangi ini ( count) hanya sekali ( 1).

Secara umum, perintah ini harus mengukur hanya memori dan kecepatan bus. Namun, mungkin gagal jika Anda tidak memiliki 500MB RAM tersedia. Jadi, dalam arti tertentu, ini juga secara implisit menentukan seberapa cepat OS Anda dapat mengalokasikan potongan memori besar.

mvp
sumber
Jika ukuran memori, bagaimana bisa menulis ke ramdisk jauh lebih lambat?
AGZ
2
Karena ramdisk masih harus diformat untuk memiliki sistem file, yang harus dikelola oleh driver kernel. Itu juga berarti menulis ke ramdisk akan memiliki overhead menyalin data dari userspace ke dalam ruang kernel - tidak benar-benar gratis. Dengan / dev / nol atau / dev / null, overhead ini hampir nol.
mvp
Saya belum pernah melihat "data duplikat" sebelumnya. Saya ingat membaca di halaman manual SunOS lama yang merupakan singkatan dari "copy & convert" (cc diambil).
Dan Pritts
5

/ dev / null adalah lubang hitam. Itu tidak akurat untuk menguji operasi penulisan normal karena tidak benar-benar menulis ke disk seperti file normal. Daripada memiliki kepala tulis ke disk, data dibuang segera setelah menulis ke perangkat, jadi itu akan selalu lebih cepat daripada menulis lokal yang normal.

/ dev / zero mirip untuk dibaca. Itu tidak memerlukan gerakan kepala untuk membaca, itu hanya pasokan karakter null yang tidak terbatas, sehingga akan selalu membaca lebih cepat daripada membaca lokal apa pun.

Dengan kata lain, ini seperti pengujian dalam kekosongan dan tidak akan memberikan gambaran yang akurat tentang apa yang harus dibaca dan ditulis oleh orang normal.

MaQleod
sumber
Ram juga tidak terlibat saya berasumsi ... jadi apa tes ini ... kecepatan clock?
AGZ
1
  1. /dev/nulltidak ada dimana-mana; data yang ditulis hanya dihapus.

  2. Ramdisk Anda memiliki sistem file yang harus digunakan. ddharus membuat entri sistem file dan menulis mengikuti aturan sistem file. Juga OS Anda menggunakan memori Anda untuk hal-hal lain pada saat yang sama sehingga operasi penulisan Anda mendapatkan apa yang tersisa.

  3. Hard drive Non SSD sangat lambat sehingga juga benar.

cybernard
sumber