Follow By Email

Monday, February 27, 2023

[New post] Getting best performance from Thunderbolt on Apple silicon Macs: a practical guide

Site logo image hoakley posted: "Of all the external buses we use to connect peripherals to our Macs, Thunderbolt is the fastest and most reliable, and is least likely to disappoint. As the number of peripherals grows, and we each accumulate more devices, so proper planning becomes more " The Eclectic Light Company

Getting best performance from Thunderbolt on Apple silicon Macs: a practical guide

hoakley

Feb 28

Of all the external buses we use to connect peripherals to our Macs, Thunderbolt is the fastest and most reliable, and is least likely to disappoint. As the number of peripherals grows, and we each accumulate more devices, so proper planning becomes more important if those peripherals are going to deliver the performance they should, and that we expect. This article provides recommendations for connecting Thunderbolt peripherals primarily for Apple silicon Macs, although it doesn't ignore Intel Macs altogether.

Background

Thunderbolt is a high-speed bus for connecting peripherals, that relies on the host Mac and all data devices on the bus having Thunderbolt controllers. In Intel Macs, those are Intel chips supporting two ports per bus, whereas Apple's integrated controllers in Apple silicon chips normally support one port per bus. You can check your Mac's hardware in the Thunderbolt/USB4 section in System Information.

tbolt1

Although this iMac Pro has four ports, those are connected to just two buses. Each of those two buses has up to 32 Gb/s for data transfer. Connect four fast SSDs to those ports, and you'll see that each pair of ports is limited to that maximum.

tbolt2

This Mac Studio M1 Max also has four ports, but each of those has its own bus, and its own 32 Gb/s for data transfer. Connect four fast SSDs to those ports, and you can expect that maximum from each of them even when they are all busy at the same time.

Connected to bus 3 is a Thunderbolt 4 hub, with its own four Thunderbolt ports. The first, listed as Port (Upstream), is that connected to the host Mac, and the other three each have an SSD connected to them. Although each of those ports on the hub supports up to 32 Gb/s data transfer, only one port connects that to the Mac, so the total data transfer to and from devices connected to those three ports can't exceed 32 Gb/s to the host Mac.

In addition to carrying up to 32 Gb/s data between controllers, Thunderbolt also supports DisplayPort 1.4 video, which takes priority over outbound data transfer on the bus.

Prior to the introduction of Thunderbolt 4 hubs, the only way to connect more than one device per Thunderbolt port was to daisy-chain them. As relatively few Thunderbolt peripherals offer a second port to support that, hubs are rapidly becoming the preferred solution. Each Thunderbolt bus can support up to 6 peripherals in a chain; any display(s) should be put at the far end of the chain.

Hardware

You generally get what you pay for. When selecting Thunderbolt peripherals and their cables, don't skimp if you want good performance. Reputable brands tend to be most reliable. Cables should be passive and no longer than 0.8 m whenever possible. If you really do need 2 m cables, then ensure that they're active and not passive, as longer passive cables don't support 40 Gb/s, only 20 Gb/s. These days there's no good reason for buying cables certified for Thunderbolt 3: always go for those properly marked Thunderbolt 4.

If you're buying a Thunderbolt 4 hub, you're unlikely to see significant performance differences between them, as they all use Intel's Goshen Ridge controller JHL8440. You should therefore select a hub on brand quality and features rather than claimed performance.

Displays first

Thunderbolt gives absolute priority to bandwidth required for any displays connected, and when necessary that available to data devices like SSDs will be reduced from its nominal 32 Gb/s. Whenever possible, each Thunderbolt display should be connected direct to a port on your Mac, and you should avoid connecting any other high-performance device to that bus, either in a daisy-chain or through a hub.

That said, when necessary a hub with a connected display can still support acceptable data transfer rates. Because display data are only outbound from the Mac, read speeds of SSDs remain unaffected, although write speeds can fall significantly, depending on the display and the SSD.

SSDs

Once you've allocated a port to your display(s), select any you need for performance-critical storage, normally SSDs. To get full performance approaching the 3 GB/s maximum of Thunderbolt 3 and 4, connect these direct to ports on your Mac so they have their own controller and bus.

Sharing the bandwidth of a single port on your Mac to a hub, you can still get good performance by connecting them to a hub if there isn't a free port on your Mac. However, a hub increases the risk that they may at times work slower than you expect. The best way to tell if they're susceptible to significant performance reduction is to measure their write speed when connected direct, and compare that with write speed when connected via a hub. If direct and hub speeds are both over 2 GB/s, then they should work well via a hub; if the write speed falls to 1.5 GB/s or less when connected via the hub, then they are more likely to disappoint unless connected direct.

Connecting more than one high-speed device like an SSD to a hub can lead to the faster of them 'stealing' write speed from the slower. This may well be acceptable if the slower is only used for less demanding tasks such as storing backups, but when you need that performance it can be frustrating. Time Machine backups are normally made using throttled output anyway, so limiting their write speed by attaching them to a hub isn't likely to affect the time taken for incremental backups, although it might prolong a first full backup.

Read speeds across SSDs connected to a hub appear more equitably distributed, and less prone to stealing of bandwidth. While the write speed of slower Thunderbolt 3 SSDs can fall below 0.7 GB/s when they have to contend with faster SSDs, read speeds are likely to fall no lower than 1 GB/s at worst. If you need to connect multiple SSDs to a hub and want balanced performance, use the same or similar models, which are likely to perform most evenly when used together.

Other devices

Other slower Thunderbolt devices like most network adaptors, and interfaces for USB-A devices, are normally good candidates for connection to a hub. Remember though that total transfer rates between a Mac and Thunderbolt 4 hub can't exceed the 32 Gb/s or 3 GB/s of that single Thunderbolt bus. For Apple silicon Macs, that's one port per bus, but Intel Macs will share each bus across two ports.

Summary

  • Apple silicon Macs have the benefit of one port for each Thunderbolt bus, offering a full 32 Gb/s or 3 GB/s of data to each device connected directly to that Mac.
  • Use Thunderbolt 4 cables of 0.8 m or shorter wherever possible.
  • Connect displays direct to a port on your Mac, as a first priority.
  • Connect performance-critical high-speed SSDs direct to a port on your Mac, as a second priority.
  • Check write speeds direct and via a hub to decide whether an SSD will perform well on a hub.
  • Beware of faster SSDs stealing write bandwidth from slower ones on the same hub.
  • Put other slower devices on a hub, remaining within its limit of 32 Gb/s or 3 GB/s of data for a single bus.
  • Stress test and tune your Thunderbolt layout so it delivers best performance.

References

Tim Standing's clear account of basic principles

This article is based on a series of articles assessing Thunderbolt performance with SSDs:
General hub performance
Write speed throttling
How faster SSDs can impair performance of slower ones
Three SSDs on one hub.

Comment
Like
Tip icon image You can also reply to this email to leave a comment.

Unsubscribe to no longer receive posts from The Eclectic Light Company.
Change your email settings at manage subscriptions.

Trouble clicking? Copy and paste this URL into your browser:
http://eclecticlight.co/2023/02/28/getting-best-performance-from-thunderbolt-on-apple-silicon-macs-a-practical-guide/

Powered by WordPress.com
Download on the App Store Get it on Google Play
at February 27, 2023
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest

No comments:

Post a Comment

Newer Post Older Post Home
Subscribe to: Post Comments (Atom)

[New post] Godzilla Library Edition by James Stokoe, John Layman, Chris Mowry, Alberto Ponticelli, Dean Haspiel

...

  • [New post] Godzilla Library Edition by James Stokoe, John Layman, Chris Mowry, Alberto Ponticelli, Dean Haspiel
    ...
  • Chocolate Chip M&M Cookies + AUGUST BAKING CHALLENGE
    The universe wants you to make cookies, just sayin'  ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ...
  • Your Guide to Winter Squash
    ...

Search This Blog

  • Home

About Me

PH News Net
View my complete profile

Report Abuse

Labels

  • 【ANDROID STUDIO】Data Binding
  • 【ANDROID STUDIO】Data Binding Show or Hide Progressbar
  • 【ANDROID STUDIO】Data Binding with object
  • 【ANDROID STUDIO】Live Data
  • 【ANDROID STUDIO】Live Data with Data Binding
  • 【ANDROID STUDIO】View Model
  • 【ANDROID STUDIO】ViewModel Data Binding
  • 【ANDROID STUDIO】ViewModel Data Binding Factory
  • 【FLUTTER ANDROID STUDIO and IOS】Common Weight and Mass Conversions
  • 【FLUTTER ANDROID STUDIO and IOS】custom lite rolling switch
  • 【FLUTTER ANDROID STUDIO and IOS】Managing State
  • 【FLUTTER ANDROID STUDIO and IOS】Simple Stopwatch
  • 【FLUTTER ANDROID STUDIO and IOS】Specify Height and Width in Percent with respect to the screen
  • 【FLUTTER ANDROID STUDIO and IOS】tab key or shift focus to next text field
  • 【FLUTTER ANDROID STUDIO and IOS】Weight Convert
  • 【GAMEMAKER】Display
  • 【GAMEMAKER】Draw Name
  • 【GAMEMAKER】enemy fire continously
  • 【GAMEMAKER】Energy
  • 【GAMEMAKER】Explosion
  • 【GAMEMAKER】Health Bar
  • 【GAMEMAKER】Hearts
  • 【GAMEMAKER】Highscore
  • 【GAMEMAKER】Horizontal Shooter
  • 【GAMEMAKER】Inventory
  • 【GAMEMAKER】keep the player facing the mouse pointer
  • 【GAMEMAKER】one way to do a fog of war
  • 【JAVASCRIPT】implements draggable progress bar
  • 【JAVASCRIPT】Math Quiz GAME export CSV
  • 【LARAVEL】PHPWord pass dynamic values when export to ms docx and download using PHPWord
  • 【PYTHON OPENCV】Image classification in Keras using several models for image classification with weights trained on ImageNet
  • 【PYTHON PYTORCH】metric classification accuracy
  • 【PYTHON PYTORCH】metric classification report
  • 【PYTHON】algorithm compare all classification models
  • 【PYTHON】algorithm evaluation k fold cross validation
  • 【PYTHON】leave one out cross validation
  • 【PYTHON】metric confusion
  • 【PYTHON】metric regression mae
  • 【VISUAL Csharp】Enumerate network resources
  • 【VISUAL Csharp】File Properties
  • 【Visual Studio VB NET】Clear Saved Passwords
  • 【Visual Studio VB NET】Swap mouse button
  • 【Visual Studio VB NET】System Properties Remote
  • 【Visual Studio Visual Csharp】Get computer name
  • 【Visual Studio Visual Csharp】Get Disk Free Space
  • 【Visual Studio Visual Csharp】Get processor type
  • 【Visual Studio Visual Csharp】IP Address
  • 【VISUAL VB NET】Delete Form Data
  • 【VISUAL VB NET】Delete History
  • 【VISUAL VB NET】Hibernate
  • 【VISUAL VB NET】Keyboard Properties
  • 【VISUAL VB NET】Sound
  • 【VISUAL VB NET】Tray Icon
  • 【VISUAL VB NET】Web Browser
  • 【Vuejs】 table implements adding and deleting
  • 【VUEJS】seamless carousel effect Marquee using transition

Blog Archive

  • October 2023 (25)
  • September 2023 (1209)
  • August 2023 (1224)
  • July 2023 (1259)
  • June 2023 (1245)
  • May 2023 (1194)
  • April 2023 (1137)
  • March 2023 (1163)
  • February 2023 (1107)
  • January 2023 (1313)
  • December 2022 (1358)
  • November 2022 (1353)
  • October 2022 (1300)
  • September 2022 (1208)
  • August 2022 (1279)
  • July 2022 (1228)
  • June 2022 (1164)
  • May 2022 (1176)
  • April 2022 (1184)
  • March 2022 (1337)
  • February 2022 (1232)
  • January 2022 (1321)
  • December 2021 (1932)
  • November 2021 (3065)
  • October 2021 (3186)
  • September 2021 (3078)
  • August 2021 (3175)
  • July 2021 (3198)
  • June 2021 (3136)
  • May 2021 (1856)
Powered by Blogger.