/ Dev / zero'dan / dev / null'a DD… gerçekte ne olur?


13

Komutta ne olur

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

Sıfırlar gerçekten nereye gidiyor ve genel olarak ne oluyor? Hız 905 MB / s

Ramdisk yapmak için hız sadece 388 MB / s'dir. Ve eğer ddbenim hdd için hız sadece 63.2 MB / s


1
/dev/nullokuma işlemlerini test etmek / zamanlamak için iyi bir hedeftir . yazma işlemlerini /dev/zerotest etmek / zamanlamak için iyi bir kaynaktır . Bu kaynak ve hedefi tek bir işlemde birleştirmek pek mantıklı değil. Bunun anlamlı bir havai sayı sağlayıp sağlamadığından bile emin değilim.
talaş

@sawdust Başka türlü, değil mi?
Jamie

2
Evet, @ sawdust, yukarıdaki yorumun kötü (yeni başlayanlar için). = / dev / sda = ~ / bigfile.tmp birisinin sabit disk bölümlerinin, içeriklerinin vb. üzerine yazacaktır.
Kevin Traas

2
Partiye oldukça geç kaldığımı biliyorum, ama herkes bunu kendileri için denemek isterse: bu komutu root olarak çalıştırmaya ve dolayısıyla sudo'ya gerek yoktur.
Roel Schroeven

@Jamie Nah, doğru yol.
Avn

Yanıtlar:


14

/dev/zerookunduğunda sonsuz bir sıfır bayt akışı sağlar. Bu işlev çekirdek tarafından sağlanır ve bellek ayrılması gerekmez. Tüm yazarlar /dev/nullsessizce bırakılır.

Sonuç olarak, işlemi gerçekleştirdiğinizde, ddsistem sıfır baytta 500 megabayt basitçe atılır. Geçici bir arabellek dışında, bu işlem öncesinde, sırasında veya sonrasında hiçbir veri depolanmaz.

Transfer hızı /dev/zeroiçin /dev/nullmi işlemci ve ilgili sistem çağrıları hızına göre öncelikle belirlenir. (Sizin durumunuzda, arabellek 500 MB büyüklüğündedir ve bu nedenle işlem belleğinizin hızını da test eder.)


7

Bu komutu sizin için çevireceğim:

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

500M boyutundaki ( = blok boyutundaki) blokları kullanarak (sanal sınırsız 'ın) ddgiriş dosyasından ( if) veri girişini (sanal lavabo deliği) çıkış dosyasına ( ) kopyalayın ve bunu ( ) sadece bir kez tekrarlayın ( )./dev/zero0of/dev/nullbscount1

Genel olarak, bu komut sadece bellek ve veri yolu hızlarını ölçmelidir. Ancak, 500MB RAM'iniz yoksa başarısız olabilir. Dolayısıyla, bir anlamda, işletim sisteminizin büyük bellek yığınlarını ne kadar hızlı tahsis edebileceğini de dolaylı olarak karşılaştırır.


Belleği ölçerse, ramdiske yazmak nasıl yavaşlar?
agz

2
Çünkü ramdisk, çekirdek sürücüsü tarafından korunması gereken bir dosya sistemine sahip olacak şekilde biçimlendirilmelidir. Bu, ramdisk'e yazmanın, verileri kullanıcı alanından çekirdek alanına kopyalamak için ek yüke sahip olacağı anlamına gelir - tam olarak ücretsiz değil. / Dev / zero veya / dev / null ile bu ek yük neredeyse sıfırdır.
mvp

Daha önce hiç "yinelenen veri" görmemiştim. Ben eski SunOS adam sayfalarında dd "kopyala & dönüştür" (cc alınmıştır) anlamına gelir okuma hatırlıyorum.
Dan Pritts

5

/ dev / null bir karadeliktir. Normal yazma işlemlerini sınamak doğru değildir, çünkü normal bir dosyada olduğu gibi diske yazmaz. Kafanın diske yazmasından ziyade, veriler cihaza yazıldıktan hemen sonra atılır, böylece her zaman normal yerel yazmalardan daha hızlı olacaktır.

/ dev / zero , okumalar için benzerdir. Baş hareketinin okunmasını gerektirmez, sadece sınırsız boş karakter kaynağıdır, bu nedenle her zaman yerel okumadan daha hızlı okunur.

Başka bir deyişle, bu bir boşlukta test etmek gibidir ve normal yerel okuma ve yazmaların ne vermesi gerektiği konusunda kesin bir resim vermeyecektir.


Ram da dahil değil sanırım ... peki bu test ... saat hızı nedir?
agz

1
  1. /dev/nullhiçbir yerde değil; üzerine yazılan veriler silinir.

  2. Ramdisk'inizin kullanması gereken bir dosya sistemi vardır. ddbir dosya sistemi girişi oluşturmalı ve dosya sisteminin kurallarına göre yazmalıdır. Ayrıca işletim sisteminiz belleğinizi başka şeyler için aynı anda kullanıyor, böylece yazma işleminiz kalanları alıyor.

  3. SSD olmayan Sabit sürücüler oldukça yavaştır, bu yüzden de doğrudur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.