Apakah hub USB memengaruhi kinerja?

24

Saya memiliki dua perangkat saya ingin throughput maksimum dan latency dengan ( MIDI drum dan keyboard MIDI misalnya.)

Apakah menghubungkan keduanya ke port USB yang sama melalui hub secara efektif membatasi kecepatan transfer data maksimum menjadi 1/2 untuk masing-masing?

Saya berasumsi ya, tapi saya tidak tahu apakah hub USB memiliki handshaking dan protokol pemberian prioritas tersedia (misalnya, biarkan perangkat dengan buffer data yang dibangun lebih lama berkomunikasi terlebih dahulu).

SwimBikeRun
sumber

Jawaban:

17

Iya nih. Semua perangkat yang terhubung melalui hub USB berbagi bandwidth yang tersedia untuk hub itu. Tidak secara khusus masing-masing 50%. Anda punya 480 Mbit / s untuk bekerja dengan per hub USB 2.0 di komputer . Apa yang saya maksud dengan itu? Komputer Anda memiliki hub USB yang terpasang di dalamnya. Ya, tidak setiap port adalah entitas individual. Dalam kebanyakan kasus, ketika Anda melihat dua port USB ditumpuk satu di atas yang lain, mereka berada di hub bersama secara internal.

Ini juga berlaku dengan dua port berdampingan pada laptop. Jadi, jangan berpikir Anda bisa mencolokkan dua hub ke port USB yang berdampingan, dan memiliki BANYAK port USB untuk menyambungkan perangkat dengan kecepatan transfer data yang tinggi.

Yang benar-benar perlu Anda lakukan adalah melihat kecepatan transfer data yang diharapkan dari perangkat yang ingin Anda sambungkan. Saya berharap bahwa drum MIDI akan dianggap sebagai laju transfer rendah, sementara keyboard akan menjadi laju transfer rendah atau sedang. Ini akan dibandingkan dengan sesuatu seperti kartu suara USB ... yang Anda tidak ingin berbagi hub dengan yang lain.

Dengan hub yang bertenaga, setiap perangkat akan mendapatkan daya yang dibutuhkannya, sementara dengan hub yang tidak memiliki daya, semua perangkat berbagi daya apa pun yang dapat dikeluarkan oleh port USB host. Jadi, ada yang perlu dipertimbangkan juga.

Anda kemungkinan besar sudah tahu, tetapi untuk masalah latensi, driver ASIO4ALL akan menyembuhkan sebagian besar jika tidak semua masalah potensial. Hanya menempatkan itu di sana.

Bon Gart
sumber
+1 untuk ASIO4ALL. menggunakannya untuk membunuh lag saya di Rocksmith. heran doest komunitas tukang batu tahu tentang ini!
camelbrush
Apakah Anda yakin pengontrol audio USB akan mengalami hambatan throughput jika tidak memiliki keseluruhan pengontrol USB ? Saya pikir mereka harus dirancang untuk bekerja pada hub, setidaknya untuk 2 channel audio.
jiggunjer
28

Sebenarnya, saya terkejut bahwa jawaban pertama diterima dan dibatalkan tanpa fakta apa pun untuk mendukung pernyataan tersebut, karena kemungkinan besar itu salah. Baik drum MIDI dan keyboard MIDI hampir pasti perangkat kecepatan rendah, sehingga mereka akan mengkonsumsi kurang dari 1% bandwidth dari hub kecepatan tinggi paling banyak (2 * 1 Mbit / s / 480 Mbit / s * 100% = 0,4% ).

Memang, kehadiran hub akan memperkenalkan latensi, yang berurutan puluhan mikrodetik untuk hub kecepatan rendah atau ratusan nanodetik untuk hub kecepatan tinggi. Dalam kasus terakhir, latensi ini akan hilang setelah Anda menambahkan latensi yang diperkenalkan oleh perangkat lunak MIDI.

Juga, protokol USB mendukung prioritas transfer (lihat Transfer interupsi ), yang akan memungkinkan perangkat MIDI untuk hidup berdampingan bahkan dengan hard drive atau pemindai di bus yang sama tanpa banyak berpengaruh pada kecepatan atau latensi transfer mereka. Namun, saya tidak akan membuat pernyataan apa pun karena saya tidak terbiasa dengan perangkat MIDI pada khususnya.

Dmitry Grigoryev
sumber
15

Jawaban singkatnya adalah Anda benar - benar menginginkan hub Multi-TT untuk aplikasi ini, di mana 2 atau lebih perangkat USB Anda kemungkinan 12 Mbit / detik. Cari "Multi-TT" di Amazon, Newegg atau situs lain untuk menemukan hub ini.

Sayangnya, detail teknis penting ini jarang disebutkan. Sebagian besar hub menggunakan desain Single-TT yang lebih murah. Beberapa Multiple TT yang baik jarang diiklankan memiliki fitur ini, bahkan tidak ditandai pada paket. Sayangnya, sebagian besar orang mungkin bahkan tidak pernah mendengar TT, yang mungkin mengapa pemasar tidak repot-repot memberi tahu Anda desain yang digunakan hub mereka.

Anda dapat memeriksa apakah hub Anda memiliki fitur ini menggunakan Windows Device Manager. Cari kata-kata "Hub memiliki beberapa TT" di tab Advanced.

Tangkapan layar Device Manager

Di Linux, tipe hub dapat diperiksa dengan "lsusb -v | grep TT". Saya tidak mengetahui adanya cara sederhana untuk memeriksa Macintosh, kecuali utilitas "USB Prober" yang diterbitkan Apple dalam alat pengembangan Xcode mereka.

TT singkatan dari Transaction Translator. Rinciannya rumit, dan sepenuhnya didokumentasikan dalam bab 11 dari spesifikasi USB, yang merupakan unduhan gratis dari www.usb.org. Namun singkatnya, TT mengkonversi antara 480 MBit / detik dari PC Anda menjadi lebih lambat 12 atau 1,5 MBit / detik.

Biasanya ketika Anda memainkan alat musik itu, pengendali mereka menghasilkan pesan MIDI dan kemudian mengemasnya ke dalam buffer memori, yang menunggu saat PC Anda meminta data. Ketika PC Anda terhubung secara langsung, ia mengirim pesan yang disebut token IN ke instrumen Anda. Instrumen Anda dapat merespons token IN dengan dua cara, baik paket DATA, atau token NAK untuk menunjukkan tidak ada data. PC Anda mengirimkan token IN tersebut dengan sangat cepat, sehingga hasilnya adalah pengiriman acara musik Anda yang hampir seketika sebagai pesan MIDI.

Namun, ketika perangkat MIDI 12 MBit / detik Anda terhubung melalui USB 2.0 HUB, komunikasi yang sangat berbeda terjadi, semuanya pada 480 MBit / detik. PC Anda benar-benar berkomunikasi dengan Penerjemah Transaksi di hub. Ia mengirim 2 pesan. Pertama, pesan SSPLIT (Start Split Transaction) dikirim ke TT. Jika TT tidak sibuk, mengirim pemberitahuan. Kemudian TT mentransmisikan token IN ke keyboard MIDI Anda pada kecepatan 12 MBit / detik yang lebih lambat. Sementara itu, PC Anda dapat berkomunikasi dengan perangkat lain dengan kecepatan 480 Mbit / detik. Keyboard MIDI Anda tidak dapat mengetahui apakah token IN datang langsung dari PC Anda atau dari TT hub. Itu melakukan hal yang persis sama seolah-olah terhubung ke PC Anda. TT di dalam hub menerima respons NAK atau DATA. Saat ini sedang berlangsung, PC Anda mulai mengirim pesan CSPLIT (Complete Split Transaction) ke TT hub. Balasan TT dengan token NYET khusus adalah TT masih sibuk berkomunikasi pada 12 Mbit / detik, atau NAK atau DATA dari keyboard Anda.

Jika Anda memiliki keyboard MIDI dan drum MIDI, apa yang terjadi jika PC Anda ingin mengirim pesan SSPLIT untuk meminta TT berkomunikasi dengan drum, tetapi TT sudah sibuk berkomunikasi dengan keyboard? Dengan hanya satu TT, hub dapat membalas NYET ke permintaan SSPLIT baru, karena sibuk melakukan IN + DATA pada 12 MBit / detik. Anda pasti tidak menginginkan skenario itu!

Beberapa hub TT memiliki TT khusus pada setiap port hilir (tempat Anda mencolokkan perangkat). Dengan beberapa TT, hub selalu dapat menerima permintaan SSPLIT, bahkan ketika TT lainnya sibuk berkomunikasi dengan perangkat hilir lainnya. Dengan hanya satu TT, PC Anda mungkin berakhir menunggu, bahkan melalui banyak bandwidth 480 MBit / detik, karena hub memiliki kemampuan terbatas untuk mengkonversi lebih dari 1 pesan pada satu waktu antara kecepatan yang berbeda.

Deskripsi ini menutupi banyak masalah waktu USB penting yang ditangani TTs, tetapi poin pentingnya adalah hub USB 2.0 dapat menggunakan dua desain yang berbeda. Anda benar-benar ingin menghindari hub Single-TT yang lebih murah.

Kecepatan USB 3.0 & 3.1 disebutkan di tempat lain dalam jawaban ini. Tetapi TTs di hub tidak pernah mengkonversi antara kecepatan 5 atau 10 gigabit dan 480, 12 atau 1,5 kecepatan. Sebaliknya, hub USB 3.0 & 3.1 beroperasi sebagai sepasang hub. Sinyal gigabit memiliki pin khusus di konektor USB yang lebih baru, yang terhubung ke hub yang hanya beroperasi pada kecepatan 5 atau 10 Gbit / detik. Komunikasi simultan 480 Mbit / detik terjadi pada pin asli, sehingga perangkat 12 dan 1,5 MBit / detik dikonversi ke 480 Mbit / detik oleh TT, tetapi tidak pernah menjadi 5 atau 10 Gbit / detik.

Juga disebutkan di tempat lain adalah "kecepatan rendah", yang secara teknis berarti 1,5 Mbit / detik dalam jargon USB, tetapi dapat berarti 1,5 atau 12 Mbit / detik dalam percakapan biasa. 12 Mbit / detik disebut "kecepatan penuh" dalam terminologi USB. Protokol USB MIDI, yang secara teknis merupakan bagian dari "Spesifikasi Kelas Audio", menggunakan protokol "massal" ( bukan protokol interupsi, seperti diklaim dalam jawaban lain). Spesifikasi USB tidak memungkinkan protokol transfer massal untuk kecepatan 1,5 Mbit / detik. Jadi, kecuali jika perangkat MIDI USB sangat melanggar kecepatan USB, itu akan selalu setidaknya kecepatan 12 Mbit / detik. USB MIDI mungkin memiliki kecepatan 480 Mbit / detik, dalam hal ini TTs tidak berlaku. Tetapi sebagian besar produk USB MIDI saat ini masih berkecepatan 12 Mbit / detik.

Jadi, Anda benar - benar ingin memastikan hub USB Anda adalah tipe Multi-TT, jika Anda berencana untuk memaksimalkan kinerja.

Paul Stoffregen
sumber
Bagaimana Anda mendapatkan tampilan yang menunjukkan perangkat yang menggunakan bandwidth dalam gambar Anda? Properti saya bahkan tidak memiliki tab itu.
user5389726598465
3

Secara realistis, berbagi satu port USB dengan menggunakan hub untuk memperluas berapa banyak perangkat yang Anda pasang mungkin tidak akan terlalu berarti walaupun Anda menggunakan semua perangkat yang terpasang secara bersamaan. Sebagian besar perangkat tidak akan menggunakan transfer data dalam waktu yang sangat lama. Ini bahkan lebih menjadi masalah jika Anda menggunakan port USB 3.0 atau 3.1, yang masing-masing 10 dan 20 kali lebih cepat dari 2.0, tetapi juga dapat mengirim dan menerima data pada saat yang sama, memberikan daya lebih, dan akan bekerja dengan 2.0 perangkat.

Seperti yang dinyatakan, selama daya yang cukup mengalir melalui setiap perangkat yang terhubung ke port, tidak ada masalah yang terjadi.

Xiro
sumber
1

Hanya kasus saya sebagai contoh USB 3.0 HUB melambat ketika lebih dari satu perangkat terhubung.

Saya memiliki dua set identik: SataIII ke USB3.1 Gen2 Type C Enclosure dengan 480GB SSD.

Jika saya meletakkan SSD di port SataIII, perintah Linux dd membaca lebih dari 500MiB / s.

Jika saya meletakkan SSD di SataIII ke USB 3.1 Gen2 Type C enclosure, Linux dd membaca hampir 413MiB / s, tidak peduli yang mana salah satu dari dua set yang saya gunakan.

Yang aneh datang ketika saya mencolokkan ke USB 3.0 kedua lampiran dan saya meminta linux untuk membaca dari keduanya (tidak peduli apakah LVM stripe, RAID0 atau dua perintah bersamaan), hanya membaca di 2x150 = 300 MiB / s.

Jadi ketika keduanya terhubung, saya kehilangan dekat 413-300 = 113MiB / s kecepatan.

Dengan kata lain:

  • Satu SSD ke USB 3 HUB, saya mendapatkan 413MiB / s baca
  • Dua SSD ke USB 3 HUB, saya mendapatkan 150 + 150 = 300MiB / s dibaca
  • Terpilih baca (per SSD) ketika dua SSD ke hub USB 3 akan kurang dari dekat 413/2 = 206MiB / s tetapi mereka hanya sekitar 150MiB / s masing-masing, tidak> 200MiB / s seperti yang seharusnya.

Saya mulai berpikir masalahnya ada pada protokol USB 3 Hub untuk mengganti data bandwith ke kedua drive, itu menambah overhead yang besar.

Jadi saya dapat mengkonfirmasi hub USB 3 yang saya miliki di tangan saya memperlambat satu SSD lebih dari max bandwith, ketika lebih dari satu terhubung pada saat yang sama.

Selain itu, saya diuji dengan satu SSD dan USB 3.0 stick yang sangat lambat (kurang dari 50MiB / s), kecepatan baca gabungan USB Hub 3 turun menjadi 263MiB / s, jadi saya dapat mengonfirmasi bahwa pembacaan gabungan longgar adalah sekitar 100MiB / s jika saya pasang perangkat penyimpanan USB lainnya.

Dan banyak lagi, dan juga yang terburuk, saya pasang Mouse (atau keyboard), dan kecepatan baca SSD juga dekat 313MiB / s, saya cabut mouse / keyboard dan kecepatan baca SSD kembali ke 413MiB / s, jadi sekali lagi dekat 100MiB / s Kecepatan baca hilang hanya karena mouse terhubung (dan sedang digunakan); jika saya tidak memindahkan kecepatan baca mouse kembali ke 413MiB / s.

Jadi HUB menyebabkan penurunan kecepatan baca besar-besaran (mendekati 100MiB / dtk) pada kecepatan transfer gabungan ketika tidak hanya satu perangkat yang terhubung (dan sedang digunakan), tidak peduli apa pun jenis perangkat yang saya hubungkan, segera setelah ini memiliki lebih dari satu bekerja pada saat yang sama, saya mendapatkan kecepatan baca gabungan dekat 100MiB / s lebih rendah daripada saat menggunakan hanya satu perangkat pada waktu yang sama.

Saya juga telah menguji dengan tiga perangkat: SSD + Mouse + Keyboard, saya masih kehilangan kecepatan yang hampir sama, sekitar 100MiB / s.

Jika saya membaca dari hanya satu SSD, tetapi keduanya terhubung, saya juga mendapatkan 413MiB / s.

Harga USB 3.0 Hub sekitar 20 €, bukan yang murah.

Kesimpulan: USB HUB 3.0 kehilangan banyak kecepatan transfer MiB / s ketika lebih dari satu perangkat terhubung (dan mentransfer) pada saat yang sama, siapa yang tahu mengapa! mungkin karena itu membagi transfer waktu dengan jumlah perangkat (cukup kerja) atau mungkin karena memiliki overhead yang besar pada perangkat bersepeda, dll.

Semoga ini bisa membantu seseorang mengidentifikasi masalah, semua tes dilakukan di Linux Live SystemRescueCD (versi terakhir) dengan perintah dd dengan status = kemajuan, ukuran blok satu megabyte dan hitung sama dengan seribu (membaca total 1GiB), dest device / dev / null.

Saya berencana (ketika / jika saya akan kaya) untuk membeli USB 3.x HUB lain, kali ini 3.1 Gen 2 untuk memeriksa apakah terjadi hal yang sama atau merek yang memiliki algoritma firmware yang buruk.

Laura
sumber
SSD sangat berbeda dari perangkat dalam pertanyaan. Setiap SSD mencoba untuk mentransfer data lebih dari bandwidth port USB 3. Jadi Anda kehilangan banyak bandwidth hanya karena tabrakan.
fixer1234
1

Ketika saya menggunakan koneksi langsung antara komputer laptop saya, yang memiliki 750GB 5400rpm hard drive, dan 8GB hard drive eksternal saya, kecepatan transfer sebenarnya jauh lebih lambat daripada ketika saya menggunakan hub USB. Sebagai contoh, saya baru-baru ini menyalin dan menempel empat film menambahkan hingga sekitar 120GB data. Inilah yang terjadi.

  1. Pertama, saya menyalin empat film menambahkan hingga 120GB data pada hard drive laptop saya, dan kemudian menempelkannya ke satu hard drive eksternal 8GB. Butuh sekitar 80 menit untuk transfer, karena kecepatan transfer data hanya sekitar 30mbs. Kecepatan transfer data memiliki lonjakan yang berkisar antara 20mbs hingga 35mbs.

  2. Kedua, saya kemudian menghubungkan hard drive eksternal 8GB lainnya yang merupakan model yang sama persis. Kali ini saya menggunakan hub USB 3.0 4-port. Kali ini kecepatan transfer data jauh lebih cepat - kadang-kadang lebih dari 90mbs. Kecepatan transfer data memiliki lonjakan berkisar antara 50mbs hingga lebih dari 90mbs. Hanya butuh 30 menit untuk mentransfer data.

  3. Ketiga, sebagai percobaan, saya menghubungkan kedua hard drive eksternal 8GB secara bersamaan melalui hub USB 3.0. Saya menyalin keempat film dengan data 120GB dari satu hard drive ke yang lain. Kali ini transfernya bahkan lebih cepat dari sebelumnya. Kecepatan transfer data sekitar 150mbs, dan tidak ada lonjakan sama sekali dalam kecepatan transfer. Itu adalah garis tetap 150mbs sepanjang waktu.

Saya telah melakukan percobaan dengan transfer data besar lainnya. Untuk beberapa alasan, koneksi USB 3.0 langsung ke hard drive eksternal jauh lebih lambat daripada ketika hub USB 3.0 terlibat. ... Apakah ada yang tahu mengapa ini terjadi?

mike_mgoblue
sumber