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 dd
ke hdd saya kecepatannya hanya 63,2 MB / s
/dev/null
adalah tujuan yang baik untuk operasi pengujian / pembacaan waktu ./dev/zero
adalah 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.Jawaban:
/dev/zero
memberikan aliran nol byte tanpa akhir saat dibaca. Fungsi ini disediakan oleh kernel dan tidak memerlukan alokasi memori. Semua menulis/dev/null
dijatuhkan 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/zero
ke/dev/null
ditentukan 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.)sumber
Saya akan menerjemahkan perintah ini untuk Anda:
Gandakan data (
dd
) dari file input (if
) dari/dev/zero
(persediaan virtual tak terbatas0
) 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.
sumber
/ 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.
sumber
/dev/null
tidak ada dimana-mana; data yang ditulis hanya dihapus.Ramdisk Anda memiliki sistem file yang harus digunakan.
dd
harus 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.Hard drive Non SSD sangat lambat sehingga juga benar.
sumber