เกิดอะไรขึ้นในคำสั่ง
sudo dd if=/dev/zero of=/dev/null bs=500M count=1.
เลขศูนย์ไปจริงและโดยทั่วไปจะเกิดอะไรขึ้น ความเร็ว 905 MB / s
ถ้าฉันจะ ramdisk ความเร็วเพียง 388 MB / s และถ้าฉันddไปที่ hdd ของฉันความเร็วก็แค่ 63.2 MB / s
เกิดอะไรขึ้นในคำสั่ง
sudo dd if=/dev/zero of=/dev/null bs=500M count=1.
เลขศูนย์ไปจริงและโดยทั่วไปจะเกิดอะไรขึ้น ความเร็ว 905 MB / s
ถ้าฉันจะ ramdisk ความเร็วเพียง 388 MB / s และถ้าฉันddไปที่ hdd ของฉันความเร็วก็แค่ 63.2 MB / s
คำตอบ:
/dev/zeroให้กระแสที่ไม่มีที่สิ้นสุดของศูนย์ไบต์เมื่ออ่าน ฟังก์ชั่นนี้ให้บริการโดยเคอร์เนลและไม่จำเป็นต้องจัดสรรหน่วยความจำ การเขียนทั้งหมดจะ/dev/nullถูกดร็อปอย่างเงียบ ๆ
ด้วยเหตุนี้เมื่อคุณดำเนินการddระบบจะสร้าง 500 เมกะไบต์ในศูนย์ไบต์ที่จะถูกยกเลิก ยกเว้นบัฟเฟอร์ชั่วคราวจะไม่มีการจัดเก็บข้อมูลก่อนระหว่างหรือหลังการดำเนินการนี้
ความเร็วของการถ่ายโอนจาก/dev/zeroไปยังจะ/dev/nullถูกกำหนดโดยความเร็วของโปรเซสเซอร์และการเรียกระบบที่เกี่ยวข้อง (ในกรณีของคุณบัฟเฟอร์มีขนาดใหญ่ 500 MB และด้วยเหตุนี้การดำเนินการทดสอบความเร็วของหน่วยความจำของคุณเช่นกัน)
ฉันจะแปลคำสั่งนี้ให้คุณ:
dd if=/dev/zero of=/dev/null bs=500M count=1
ข้อมูลที่ซ้ำกัน ( dd) จากอินพุตไฟล์ ( if) ของ/dev/zero(อุปทานไม่ จำกัด เสมือนของ0's) ลงในไฟล์เอาต์พุต ( of) ของ/dev/null(เสมือน sinkhole) โดยใช้บล็อกขนาด 500M ( bs= ขนาดบล็อก) และทำซ้ำ ( count) เพียงครั้งเดียว ( 1)
โดยทั่วไปคำสั่งนี้ควรวัดเพียงความเร็วหน่วยความจำและบัส อย่างไรก็ตามอาจล้มเหลวหากคุณไม่มี RAM 500MB ดังนั้นในแง่หนึ่งก็เป็นเกณฑ์มาตรฐานโดยนัยว่าระบบปฏิบัติการของคุณสามารถจัดสรรหน่วยความจำขนาดใหญ่ได้อย่างรวดเร็วเพียงใด
/ dev / nullเป็นหลุมดำ ไม่ถูกต้องสำหรับการทดสอบการดำเนินการเขียนปกติเนื่องจากไม่ได้เขียนลงดิสก์จริงเช่นเดียวกับไฟล์ปกติ แทนที่จะเขียนส่วนหัวลงดิสก์ข้อมูลจะถูกลบทิ้งทันทีที่เขียนไปยังอุปกรณ์ดังนั้นมันจะเร็วกว่าการเขียนในเครื่องทั่วไป
/ dev / zeroคล้ายกับการอ่าน มันไม่จำเป็นต้องมีการเคลื่อนไหวของหัวอ่านมันเป็นเพียงตัวอักษร null ที่ไม่มีขีด จำกัด ดังนั้นมันจะอ่านเร็วกว่าการอ่านในเครื่อง
กล่าวอีกนัยหนึ่งนี่เป็นเหมือนการทดสอบในความว่างเปล่าและจะไม่ให้ภาพที่ถูกต้องเกี่ยวกับสิ่งที่การอ่านและการเขียนในท้องถิ่นปกติควรให้ผลลัพธ์
/dev/nullไม่มีที่ไหนเลย; ข้อมูลที่เขียนไปนั้นจะถูกลบเพียงแค่
ramdisk ของคุณมีระบบไฟล์ที่ต้องใช้ ddจะต้องสร้างรายการระบบไฟล์และเขียนตามกฎของระบบไฟล์ นอกจากนี้ระบบปฏิบัติการของคุณใช้หน่วยความจำของคุณสำหรับสิ่งอื่น ๆ ในเวลาเดียวกันเพื่อให้การเขียนของคุณได้รับสิ่งที่เหลืออยู่
ฮาร์ดไดรฟ์ที่ไม่ใช่ SSD นั้นทำงานช้ามากดังนั้นจึงถูกต้อง
/dev/nullเป็นสถานที่ที่ดีสำหรับการทดสอบ / ระยะเวลาการอ่านการดำเนินงาน/dev/zeroเป็นแหล่งที่ดีสำหรับการทดสอบ / ระยะเวลาในการเขียนการดำเนินงาน การรวมแหล่งที่มาและปลายทางในการดำเนินการครั้งเดียวไม่สมเหตุสมผล ไม่แน่ใจว่านี่จะให้หมายเลขค่าใช้จ่ายใด ๆ ที่มีความหมายหรือไม่