การกำหนดค่าฮาร์ดแวร์ที่มีประสิทธิภาพสูงสุดคืออะไร?


35

ฉันรู้ว่าตัวเลขมาตรฐานที่แน่นอนจะแตกต่างกันระหว่างผู้ผลิต แต่โดยทั่วไปถ้าคุณพิจารณาเฉพาะแฟลชไดรฟ์ end ที่สูงกว่า, การ์ด SD, และ USB HDD และ Raspberry Pi ของคุณเชื่อมต่อกับเครือข่ายผ่านสวิตช์อีเธอร์เน็ต มุมมองการถ่ายโอนข้อมูล? ฉันแค่ค้นหาคำตอบที่ผู้คนลองใช้การกำหนดค่าตามรายการด้านล่างและได้ผลลัพธ์จริงไม่ใช่ทฤษฎี

เห็นได้ชัดว่าต้องใช้การ์ด SD เพราะต้องใช้เวลาอย่างน้อยส่วนหนึ่งของวงจรการบูต แต่ให้สมมติว่าคุณมีพาร์ติชันข้อมูลเพิ่มเติมในแต่ละอุปกรณ์ด้านล่างซึ่งมีความเร็วในการถ่ายโอนเครือข่ายสูงสุดใน Raspberry Pi?

  1. การ์ด SD
  2. แฟลชไดรฟ์ USB
  3. HDD USB

คำถามนี้ไม่สำคัญเพราะในบางจุดการประมวลผลค่าใช้จ่ายที่เกี่ยวข้องกับหนึ่งในอุปกรณ์จัดเก็บข้อมูลควบคู่กับการสื่อสารอีเธอร์เน็ตอาจส่งผลกระทบต่ออัตราการถ่ายโอนเช่นกันพอร์ตอีเธอร์เน็ตใน Raspberry Pi ถูกควบคุมโดยบัส USB ดังนั้นโดยทั่วไป การประสานงานของการถ่ายโอนข้อมูลอีเธอร์เน็ตและการถ่ายโอนข้อมูลสื่อ USB ฉันไม่ทราบว่าการ์ด SD อยู่บนบัส USB ที่แชร์เดียวกันกับพอร์ต USB และพอร์ตอีเธอร์เน็ต แต่ถ้าไม่ใช่ฉันคิดว่ามันน่าจะเป็นผลประโยชน์ที่ดีพอสมควร

แก้ไขเพื่อรวมการถ่ายโอนเครือข่ายเป็นข้อกำหนดสำหรับการวัดประสิทธิภาพ


1
ปีงบประมาณผู้ตอบแบบสอบถามสามารถใช้sudo hdparm -t /dev/sdxเป็นเครื่องมือที่มีประโยชน์สำหรับการเปรียบเทียบ
Jivings

2
ฉันไม่มีมาตรฐาน แต่เป็นความรู้ทั่วไป: ssd> hdd> แฟลช> sd> สื่อออปติคัล
Alexander

+1 - ข้อดีของพอร์ต SD - อยู่บนบัสเดียวกันกับ USB / อีเธอร์เน็ตหรือไม่ การแบ่งปันข้อมูลบน SD และที่เก็บข้อมูล USB ที่เชื่อมต่อนั้นทำได้ดีกว่าหรือไม่
Jon Egerton

@XAleXOwnZX แน่ใจว่า busses ที่อุปกรณ์เหล่านั้นเปิดอยู่นั้นสามารถจับคู่กับประสิทธิภาพสูงสุดของอุปกรณ์นั่นเป็นลำดับ แต่ฉันเดิมพันว่าตั้งแต่ Raspberry Pi มีเพียง USB คำสั่งของคุณจะเหมือน ssd = hdd = แฟลช> ออปติคัล และ SD อาจอยู่ที่ใดก็ได้ในรายการนั้นขึ้นอยู่กับว่ามีบัสแยกต่างหากจากพอร์ต USB
ด่าน B

นั่นเป็นจุดที่ดี แต่ HDD> แฟลชแน่นอน ฮาร์ดไดรฟ์ USB ของฉันเพิ่มขึ้น 30 mb / s เมื่อเทียบกับแฟลชไดรฟ 5-10 ของฉัน
Alexander

คำตอบ:


35

ในการเปรียบเทียบคุณต้องกำหนดขีด จำกัด ของคุณเสมอ เพราะถ้าคุณคาดหวังว่าจะได้รับ 100mbs จาก lan นั้นมากกว่าที่คุณหลอกตัวเอง!

ดูการออกแบบบล็อกนี้ของ RaspberryPI Model-B ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นเราจึงสร้างความจริงที่สำคัญมากที่นี่ อีเธอร์เน็ตมีปัญหาคอขวดโดยคอนโทรลเลอร์ USBเนื่องจากรูปแบบบล็อกดิแกรมที่เราสร้างขึ้นจะเชื่อมต่อกับฮับ USB (ไม่มีข้อบ่งชี้ชัดเจนว่ามันใช้บัสอื่นหรือเพียงแค่ USB2?)

โอ้ดู - แผนภาพบล็อกอื่น

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้ที่ให้ความกระจ่างกับสถานการณ์มากยิ่งขึ้น คอนโทรลเลอร์ 10/100 เชื่อมต่อกับฮับ USB - โชคไม่ดีที่ไม่มีข้อมูลระบุว่าฮับสื่อสารกับคอนโทรลเลอร์คอนโทรลเลอร์ lan ได้เร็วแค่ไหน - คาดหวังว่าจะมีการเจรจาความเร็ว usb และแลน สำหรับสภาพแวดล้อม usb ความเร็วสูงแบบผสม

การ์ด SD อยู่ที่ไหน

ปรากฎว่าการ์ด SD เชื่อมต่อโดยตรงกับBCM2835 (หน้า 65)และพวกเขาไปลงในรายละเอียดที่ดีว่าประสิทธิภาพได้รับผลกระทบจากการกำหนดค่าต่างๆ สิ่งหนึ่งที่สำคัญที่ควรสังเกตคือถ้าการ์ด SD มีนาฬิกาเฉพาะมันสามารถทำงานได้อย่างอิสระจากคอร์ CPU / GPU ที่ความเร็วสูงสุด (ไม่ว่าจะใช้การ์ดใดและมาตรฐานใด - คุณจะเห็นว่ารองรับมาตรฐานบางอย่าง)

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นหมายความว่าอย่างไร

หมายความว่าหากคุณเปรียบเทียบกับการ์ด SD ที่เร็วกว่าและไดรฟ์ปากกาเสี้ยว (4gb / 8gb) คุณจะได้รับประสิทธิภาพที่แตกต่างกันมากที่สุด ดังนั้นตอนนี้จึงทำให้เกิดคำถามขึ้นว่า CPU / GPU จัดการกับอุปกรณ์ฝังตัวที่ยอดเยี่ยมนี้อย่างไร (usb / ชิป lan) และความเร็วที่สามารถสื่อสารได้

คุณจะเห็นว่าทฤษฎีสามารถไปได้ไกลแค่ไหนก่อนที่เราจะทำการเปรียบเทียบ? อีกประเด็นสำคัญที่นี่ - วิธีการควบคุมการไหลของข้อมูลของ CPU มันใช้ช่องสัญญาณนาฬิกาแยกตามที่แนะนำหรือไม่

ในโลกอุดมคติคุณจะคิดว่า LAN / USB นี้จะจัดการกับมัน แต่นั่นต้องใช้ MCU .. เราจะเห็น MCY ที่ใดก็ได้ในบล็อกไดอะแกรมนั้น .. ไม่!

ดังนั้น CPU ต้องขอ IO DATA ส่งพอร์ต USB จากนั้นไปที่พอร์ต LAN (ผ่าน HUB USB เดียวกัน) ใช่ .. เพื่อที่จะทำให้เกิดปัญหาความเร็วบางแห่ง

สิ่งที่ดีที่จะต้องทราบว่าเกิดอะไรขึ้นเมื่อคุณคัดลอกไปยังไดรฟ์ปากกา USB และจากการ์ด SD ทั้งหมดผ่าน LAN .. มันจะทำให้เกิดการรับส่งข้อมูล

เราจำเป็นต้องสร้างมาตรฐานด้านต่างๆ

ในการสร้างสิ่งที่เราพยายามเปรียบเทียบเราสามารถถามคำถามโลกแห่งความจริง

  1. USB ภายในจัดการข้อมูลจาก SD เร็วแค่ไหน?
  2. CPU ใช้ในการอ่าน / เขียน SD ไปยัง LAN เท่าไหร่?
  3. CPU ใช้ในการอ่าน / เขียนไปยังไดรฟ์ปากกา USB มีเท่าใด
  4. การคัดลอกข้อมูลใด ๆ ส่งผลโดยตรงต่อการใช้งาน CPU หรือไม่
  5. ชิป USB / LAN ในตัวจัดการกับข้อมูลการอ่านจาก 2 แหล่งข้อมูลกลับเข้าสู่พอร์ต LAN ได้ดีเพียงใดและส่งผลต่อ CPU ตามสัดส่วนอย่างไร
  6. ไม่จำเป็นต้องทดสอบว่า LAN จะได้รับเต็ม 10mb / s หรือไม่เนื่องจากมีปัญหาคอขวดโดยสถานะที่เป็นฮับ USB

ตอนนี้คุณรู้ว่าคุณกำลังต่อสู้เพื่ออะไรฉันขอท้าให้คุณตอบด้วยตนเอง

คุณอาจพบว่านี่เป็นจุดเริ่มต้นที่ดีมาก

อ้างอิง

แต่ส่วนใหญ่แล้ว

ความรู้ทางเทคนิคของฉันเองและการประเมินผลฉันได้ทำขึ้นอยู่กับประสบการณ์ที่ฝังตัวของฉันเอง OP ถามคำถามที่ดีมาก แต่ขาดความเข้าใจว่าไม่มีความเข้าใจในเชิงทฤษฎีของระบบคุณจะต้องพยายามประเมิน / แก้ปัญหาในทางปฏิบัติ

ผล

(4) คำตอบนี้แสดงการทดสอบการละเมิดลิขสิทธิ์ของโลก และพิสูจน์ได้ว่าการทำธุรกรรมข้อมูลที่รุนแรงมีอิทธิพลโดยตรงต่อ CPU (ไม่แน่ใจว่าเป็นการ์ด SD หรือกระบวนการเปลี่ยนข้อมูลภายในชิป BCM ไปเป็นชิป USB / LAN)

(6)ได้รับการพิสูจน์แล้วว่าคอขวดเท่านั้นจะเป็นแหล่งที่มา (เช่นการ์ด SD ที่ช้า) ฮับ USB สามารถสูบข้อมูลได้ 90% + แต่คำตอบสำหรับคำถามที่ 4 และ 5 จะมีผลโดยตรงต่อประสิทธิภาพนี้

ดังนั้นการทำวิจัยและสนับสนุนผู้ใช้รายอื่นเราจึงเริ่มสร้างและรับผลลัพธ์เบื้องต้น

นี่เป็นแผนภูมิที่ดีที่จะช่วยให้เห็นภาพสิ่งที่เรากำลังติดต่อด้วย

ป้อนคำอธิบายรูปภาพที่นี่


1
+1 คำตอบที่ดี แม้ว่าคุณจะโปรดให้ข้อมูลแหล่งที่มาสำหรับภาพของคุณหรือไม่
Jivings

1
คำตอบนี้ทำงานได้อย่างยอดเยี่ยมในการเพิ่มรายละเอียดให้กับคำถามที่อธิบายว่าทำไมสื่อจัดเก็บข้อมูลที่แตกต่างกันแต่ละเครื่องจึงอาจมีหมายเลขประสิทธิภาพแตกต่างกันมาก ขอบคุณสำหรับข้อมูลเพิ่มเติมที่ฉันควรเพิ่มไว้ในคำถามด้วยตัวเองตั้งแต่แรก
ด่าน B

1
USB ยังคงอยู่ที่ประมาณ 30 MB / s เช่นสำรองไว้สำหรับเครือข่าย 100 Mbit
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersenใช่ว่าเป็นจริง แต่หนึ่งในคำถามของฉันเกี่ยวข้องกับประสิทธิภาพของฮับ usb ในตัว เร็วจริงๆเหรอ? และมันขึ้นอยู่กับ ARM ซีพียู - และจะเกิดอะไรขึ้นเมื่อคุณคัดลอกแหล่งที่มาของแบบฟอร์ม 2 ผ่าน LAN .. นั่นเป็นสิ่งที่คุ้มค่าในการเปรียบเทียบ ฉันไม่ได้บอกว่ามันจะไม่ทำ - แต่อาจเป็นปัญหาในบางสถานการณ์
Piotr Kula

ดูเหมือนคุณจะมีประสบการณ์ในสาขานี้ คุณวัดได้จริงหรือไม่?
Thorbjørn Ravn Andersen

3

เห็นได้ชัดว่าประสิทธิภาพสูงสุดจะมาพร้อมกับ ramdisk

นั่นจะไม่ใช้งานมากสำหรับอุปกรณ์ที่เชื่อมต่อกับเครือข่าย แต่จากนั้น pi ไม่จำเป็นต้องเป็นตัวเลือกที่ดีที่สุดสำหรับแอปพลิเคชันคงที่นั้น

สำหรับบางสิ่งที่ความยืดหยุ่นของ pi เหมาะสมไม่ซ้ำกันข้อกำหนดหน่วยความจำจริงอาจมีขนาดเล็กพอที่จะเรียกใช้จาก ramdisk อย่างชัดเจนหรือโดยปริยายจาก ram ผ่านกลไกการแคชดิสก์ (linux ramdisks เป็นเพียงแคชดิสก์โดยไม่มีดิสก์สำรองอยู่แล้ว)

คุณยังคงต้องใช้การ์ดในการบู๊ตจากเครื่อง แต่ด้วยข้อดีด้านการใช้งานแรมคุณสามารถทำให้การ์ดอ่านได้อย่างเดียวและลดความเสี่ยงในการทำให้การ์ดเสียหาย


คุณไม่จำเป็นต้องใช้การ์ดในการบู๊ต ระบบปฏิบัติการ / ตัวโหลดบูตต้องใช้! คุณสามารถบู๊ตจาก Serial Interface หรือ LAN หากคุณเปลี่ยน bootloader หากคุณมีความรู้ด้านเทคนิคเพียงพอคุณสามารถเพิ่ม RAM ขนาด 3GB ลงใน RPI ได้ ความจริงก็คือทุกอย่างต้องผ่านฮับ USB ที่โง่! bleeeh
Piotr Kula

bootloader ไม่ใช่อย่างน้อยที่คุณสามารถเปลี่ยนได้ซึ่งอยู่บนการ์ด SD ใช่ไหม คุณอาจสามารถเรียกใช้ boot rom ภายในเพื่อโหลดจากแหล่งอื่นถ้าคุณเปลี่ยน strappings ของขาตั้งค่าบางอย่าง
Chris Stratton

ฉันเกือบจะเป็นบวกกับชิป BCM .. เช่นเดียวกันกับ arduino ที่มี bootloader .. (เช่น BIOS บนพีซี) ต้องมีบางโปรแกรมเริ่มต้นเพื่อโหลดโปรแกรมถัดไปและอื่น ๆ เปลี่ยน bootlaoder บน RPi .. รอหนึ่งหรือสองปี
Piotr Kula

ATMEGA ของ arduino เป็นตัวอย่างของไมโครคอนโทรลเลอร์ที่ออกแบบมาเพื่อทำงานแบบสแตนด์อโลนพร้อมแฟลชภายใน บูลเดอร์ที่ผู้ใช้สามารถปรับแต่งได้ SOC ของ pi ในทางกลับกันดูเหมือนจะมาจากคลาสของชิ้นส่วนของระบบที่ใหญ่กว่าซึ่งต้องการความทรงจำภายนอก โดยทั่วไปแล้วจะมีบูตโหลดเดอร์ แต่เป็น mask rom ที่ไม่สามารถเปลี่ยนแปลงได้เมื่อออกจากโรงงาน ในผลิตภัณฑ์แบบดั้งเดิมที่มีพื้นฐานมาจากสิ่งนั้นจะมีชิปแฟลชภายนอก 4-8 MByte แต่ดูเหมือนว่าปี่จะใช้การ์ด SD แบบถอดได้แทนการหลีกเลี่ยงปัญหาของใครบางคนที่ทำให้ไฟแฟลชดับ
Chris Stratton

นั่นน่าสนใจ. ดังนั้นมันคือพาร์ทิชัน FAT ที่มีข้อมูลการบูตนี้หรือไม่? หรือมันถูกเก็บไว้ที่อื่นในส่วนที่ซ่อนอยู่ของ SD? ในนั้นคุณสามารถลองได้ง่ายขึ้นพยายามเปลี่ยนเส้นทางการโหลดไปยัง "แฮ็ค" บนอุปกรณ์อื่น ...
Piotr Kula

0

USB HDD หรือ USB SSD ควรให้ประสิทธิภาพที่เร็วที่สุด การ์ด SD เขียนประมาณ 12 MB / s สำหรับอุปกรณ์ class10 และ USB สามารถรับได้สูงสุด 30 MB / s

ฉันไม่เห็นด้วยว่าฮับ USB กำลังคอขวดอีเธอร์เน็ตบน RPi เพราะ HUB สามารถรักษา 400 Mbit / s และอีเธอร์เน็ตเป็น 100 ดังนั้นในทางทฤษฎีแล้วมันสามารถรักษาพอร์ตได้ถึง 4 x 100 mb / s ที่รวดเร็ว


ทุกคลาส 10 SD ฉันเคยทดสอบคือ> 19mb / s เขียน ฉันมีคลาส 6 ที่ทำได้ 14mb / s SanDisk Extreme SD ที่อ้างว่า 45mb / s บรรลุการอ่าน 50mb / s และการเขียน 47mb / s ซึ่งน่าประหลาดใจ Lexar 400x SD นั้นเร็วที่สุดเท่าที่ฉันเคยทดสอบที่ 70mb / s อ่าน แต่ประมาณ 30mb / s เขียน บน USB 2.0 ไม่มีความแตกต่างระหว่างการ์ด SD แบบเร็ว HDD และ SSD อินเทอร์เฟซ USB 2.0 ทั้งหมดที่ฉันทำมีฝาปิดที่ประมาณ 35mb / s ฉันเห็นไดรฟ์ USB 2.0 thumb ที่ครอบคลุมประมาณ 10mb / s และบางส่วนต่ำกว่านั้น ธัมบ์ไดรฟ์ USB 3.0 จำนวนมากมีความเร็วในการเขียนสูงสุดที่ 10-20 mb / s แม้แต่ในพอร์ต USB 3.0!
Therealstubot

0

ฉันได้สูงสุด 4Mb / s โดยใช้แฟลชไดรฟ์ USB และเหมือนกันกับ USD HDD ในขณะนี้เพียงแค่ปล่อยไฟล์ผ่าน 'โฮมกรุ๊ป' ของเครือข่าย windows ไปยังอุปกรณ์ที่เชื่อมต่อกับ Raspberry

ฉันคาดว่าจะมีอย่างน้อย 10 ครั้ง แต่ฉันไม่สามารถจัดการให้โอนได้เร็วขึ้น ฉันลอง FTP ถ่ายโอนโดยตรงไปยัง USB HDD (อุปกรณ์นี้ถ่ายโอนที่ + 60Mb / s เมื่อเชื่อมต่อกับแล็ปท็อปของฉัน) แต่ผลลัพธ์ไม่ดีมาก 100KiB / s! ส่งผลให้มีการรับส่งข้อมูลเป็นชั่วโมง ๆ เพียงไม่กี่ 100 MB

ตอนนี้ฉันย้าย HDD ระหว่างแล็ปท็อปและ Raspberry Pi สำหรับการถ่ายโอนข้อมูล :-(


ฉันคิดว่าคุณมีปัญหาเกี่ยวกับการกำหนดค่า / เครือข่ายเพราะฉันสามารถอัปโหลดไฟล์ไปยัง USB Stick โดยตรงได้ถึง 24 Mbps และฉันคิดว่าฉันสามารถทำได้ดีกว่ากับอีเธอร์เน็ตแทน Wi-Fi vsftpdฉันได้ใช้
Morgan Courbet
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.