21 comments

  • tombert 3 hours ago
    I had the 2019 Macbook Pro i9, so I think a function to determine thermal throttling could be written very simply:

        function isThermalThrottling() {
            return true; 
        }
    
    Seriously, I loved that computer for the most part but I was a little annoyed that I paid a lot of money for the i9 CPU just to get worse performance than the i7.
    • scarecrowbob 33 minutes ago
      I am writing this comment from a 2019 i9. I have to charge it from the right hand ports. I think that is dumb, but it did solve the issue. I have no idea how I came to that conclusion (i almost certainly read about it somewhere), but there were certainly a couple of weeks where it was driving me crazy.

      A dumb thing for sure. I still like macos better than windows and I'm heavily invested in a production workflow with logic. Moving to linux would be my next move, but after making that dumb change it's quite a functional machine.

      • tombert 6 minutes ago
        FWIW, I replaced that MacBook with a Thinkpad (AMD Edition) about a year, and i have been extremely with it. Not only was it one of the easiest Linux installs I have ever had, but the hardware feels solid, the keyboard (while not one of the legendary classic Thinkpad keyboards) is nice to type on, the 4K screen looks nice, and everything just feels well built and snappy.

        Outside of the terrible speakers, it is a nearly perfect computer. I don’t really mind a crappy speaker on a laptop since it usually lives on mute and when I need decent-enough quality audio I will plug in headphones or Bluetooth to a speaker, but YMMV.

        Still, if this computer ever breaks then I will likely buy another thinkpad.

      • auscompgeek 8 minutes ago
        It was definitely a relatively well known problem with the 2019 MBP on the internet at some point. I found a Reddit thread linking to a news article about this. https://www.reddit.com/r/mac/comments/vi3grj/you_should_char...

        It was so much of a problem that at work we added a check that you were charging from the right ports to our internal doctor script (think like `brew doctor`).

      • j45 3 minutes ago
        You were not alone.

        The epic takedown post of the issue on stackexchange which proved it is below, I ended up at it from somewhere on social I think.

    • j45 10 minutes ago
      There is one pretty epic stackoverflow post that AI searches probably won't find.

      It turned out a lot of the thermal throttling (kernel_task usage) on the i9 macbook pros went away if you plugged in the power on the right side, instead of the left.

      Why turned out to be a chip (thunderbolt I think) that didn't have enough cooling.

      https://apple.stackexchange.com/questions/363337/how-to-find...

      One could also put quiet cabinet fans under the i9 Macbook Pro to make it draw air away and run markedly faster. [1]

      That, combined with the keyboard failures, meant I could put a wireless keyboard on top of the laptop keyboard and use it, with fans underneath.

      This is how I took it to the Apple store for warranty repair, which made a point of it having a pretty massive design flaw.

      I asked them this if it was a feature of all macbooks when you buy the fastest ones to have to cool it the right way and not use the keyboard in case there might be dust in the air. The laptop was way too overspecced.

      The i9 laptops were made far too thin to cool themselves appropriately in any situation, full stop.

      All to say, if I could detect which USB-C port was pulling power in, on those laptops, I could guess pretty accurately what will happen on that i9.

      It's sad to know the M4 Max Macbook Pro has the same issue, even though the laptop is thicker. Doesn't make me want to upgrade anymore.

      [1] https://www.amazon.com/AC-Infinity-MULTIFAN-Receiver-Playsta...

    • lbourdages 1 hour ago
      I had that laptop and it is the worst computer I have ever owned. As soon as you booted the fans would start spinning. There were sometimes kernel panics when plugging or unplugging Thunderbolt devices.

      I have an M1 Max MBP now and it has been absolutely perfect.

    • merb 3 hours ago
      I had that problem as well. Especially when connected to two external monitors. I did not love the machine and the M1 Max was such a big upgrade because of that and I could upgrade to the m3 max later and give my m1 to somebody else. Both apple silicon machines are going strong for a long time I guess.
    • LoganDark 1 hour ago
      I had a Mid-2015 MacBook Pro with an i7 and I still ran the fans at full speed at all times (actually above full speed). I had a couple fan failures due to that, but otherwise I think it was worth it.
      • j45 2 minutes ago
        2014-15 were among the best macbooks ever made. All laptops fail eventually from pushing them extremely hard.
  • motoboi 1 hour ago
    Hypothesis: it’s not the CPU, it’s the USB controller saturating the thermal mass.

    So instead of the CPU or GPU going bonkers, the body gets too hot and they lose thermal dissipation capacity for the normal usage and then overheat and then throttle. They go 100% on the graphs because the throttling reduces frequencies and then load becomes too heavy.

    Experiment other adapters and monitors.

    • scarecrowbob 32 minutes ago
      Switching which side I charge my 2019 mbp i9 effectively solved my throttling issues, so your premise might be correct as I understand it.
  • Neywiny 6 hours ago
    Seems like good work. From what I've heard developing on MacOS has not gotten easier over the years. I do question the point, though. I suppose there's merit in knowing if your configuration causes thermal throttling, but what are you able to do about it? There's no fan profile to tweak or anything. Can you undervolt them?
    • angristan 6 hours ago
      > but what are you able to do about it?

      On Macbooks with fans, I started tuning my fan curve with iStat Menus (https://bjango.com/help/istatmenus7/fans/#custom-fan-curve) because I noticed the default curve was lagging behind and thermal throttling kicked in before the fan even reach max speed.

      For Apple Silicon specifically, I recently discovered that there is a "high power mode" (https://support.apple.com/en-us/101613) that allows the fans to run at higher speed. So I don't use the custom fan curves anymore, it helped me a lot (but it does get quite noisy on a 14" M4 Max)

      For a Macbook Air, not much you can do besides closing stuff, or elevating the macbook and pointing a fan at it or things like that... but yeah it's a bit desperate!

      • somat 5 hours ago
        An open question on fan curves

        Environment: I am currently playing with a pid control function for my gpu fan, that is instead of saying "map temp x to fanspeed y"(fan curve) say "set fan to speed needed for temp z"(pid control)

        Question: is there a reason pid type control is never a thermal option? Or put another way, is there something about the desired thermal characteristics of a computer that make pid control undesirable?

        As a final thought, I have halfway convinced myself that in a predictable thermal system a map would match a set of pid parameters anyway.

        • embedding-shape 5 hours ago
          > "set fan to speed needed for temp z"(pid control)

          Why though? I generally don't care about the specific temperatures of my CPU and GPU, just that they don't get too warm, so for the CPU (AIO) I basically have "0% up until 45C, then increment up to 100% when it hits 90C" and the same for the GPU except it's always at 10%.

          I guess I could figure out target temperatures, and do it the other way, but I'm not sure what the added complexity is for? The end results (I need at least) remains the same, cool down the hardware when it gets hotter, and for me, the simpler the better.

          I also have two ambient temperature sensors in the chassi itself, right at the intake and the outtake. The intake one is just for monitoring if my room gets too warm so the computer won't be effective at cooling (as the summers here get really warm) and the outtake one is to check overall temperature and control the intake fans. In reality, I don't think I need to do even this, just the CPU+GPU temperature + set fan speed based on that feels simple enough to solve 99% of the things you'd like to be able to do here.

          • somat 4 hours ago
            In my case the gpu fan was not changing speed automatically, (something, something, linux) which I discovered after an embarrassingly long time of poking at other things trying to figure out why my system was crashing so much. And now instead of doing the sane thing and figuring out how to get the fan speed map to work, I thought about it and came to this conclusion "I want my temps to be set value, say 45C, why not use a closed loop controller to find the fan speed necessary for that temp at any load?"

            And now am about halfway through building pid fan control software and a janky gpu temp simulator so I can get some intuition on tuning the pid parameters before I set it on my actual gpu. you know, the fun part of computing. But now I am worried that perhaps there is a real reason nobody does it this way.

            • embedding-shape 4 hours ago
              Aren't you ultimately gonna have to figure out why you cannot change the speed on the GPU, regardless of the approach? And then you're just back at square one?

              I think no one is doing it that way, because there is simply no need for it. Sure, when I'm 3D printing some material it sometimes need the heatbed to be exactly 45C or whatever, but why would I care about the specific temperature of my GPU? As long as it's not throttled when GPU utilization is at 100%, I'm good to go.

              KISS :)

          • Forgeties79 4 hours ago
            This could be total nonsense and I am definitely out on a limb here, but I remember from my amateur crypto mining days (almost 15 years ago wow) that keeping everything relatively consistent is better for the longevity of your hardware (GPU/CPU mainly). Some people obsessed over getting temps as low as possible but that’s not very productive, diminishing returns and all of that. There is just generally a healthy temperature to keep things operating at most of the time, coupled with how hard you push the component in question (while not putting too much strain on your fans either). Basically: swinging/fluctuating is not good, consistency is good.

            Again though I could be totally off. I just remember that being spread around as “conventional wisdom.”

            • embedding-shape 4 hours ago
              > Basically: swinging/fluctuating is not good, consistency is good.

              Yeah, I'd understand not wanting to go between 0C and 90C over and over. But my GPU idles at around 35C, maxes out at 85C or something, and going back and fourth will surely be preferable than staying with a single temperature but voltage clock the card. Especially considering performance.

              But again, I'm using my card for ML, number-crunching, simulations and VFX, you might be right that the use case of cryptocurrency mining prefers a different thermal profile.

            • The_President 4 hours ago
              You're speaking the truth, as this is not nonsense - it is correct. At the micro level, thermal expansion/contracting is occurring across the variety of the circuit board materials and components. Hot is fine (not too hot), but it is the consistency that makes for longetivity.

              I limit power consumption profiles and clock speeds unless higher power is required, and combine that with an oversized cooling system - keeps regular temps consistent.

              • Forgeties79 3 hours ago
                Yeah that was my understanding as well. Basically it comes down to how much you are warping/straining the materials. It all seems rather intuitive to me but this is not my area of expertise and just because something makes sense doesn’t mean it’s correct lol
        • mveety 1 hour ago
          > Question: is there a reason pid type control is never a thermal option? Or put another way, is there something about the desired thermal characteristics of a computer that make pid control undesirable?

          I've only every seen something like this in really high reliability equipment because they're worried about repeated thermal expansion causing cracks in the boards/solder joints. There is, often, heaters available for use if the temperature gets too low. For most equipment I think that the juice just isn't worth the squeeze so it isn't done.

        • kec 4 hours ago
          PID loops work best when you have active control for both heating and cooling. PIDs are also best when you have a single optimal point you’re aiming at, there’s a kind of fundamental mismatch here in that there isn’t really a “too cold” for your system, you’re just aiming to keep the system below an upper limit while hopefully keeping fan noise to a minimum (otherwise you’d just send it and run at max 24/7).
          • Espressosaurus 4 hours ago
            A simple PID wants to keep it at a setpoint, but it’s easy enough to layer a target change on top of it, some hysteresis so it’s not pulsing on and off, perhaps with control authority depending on the the target, etc. but then that gets complicated and usually manufacturers aren’t going to expose those sorts of tunings to the user.

            For most people a fan curve is more obvious to work with and it’s largely good enough without the irritating behaviors insufficiently tuned control loops can exhibit.

      • tyre 2 hours ago
        It would be cool if the bottoms of MacBooks weren’t flat and instead wavy or rippling to increase surface area. There are probably a lot of cool designs (ayyyyy) you could machine in.
        • Marsymars 2 hours ago
          There are laptops like that (e.g. the fanless Lenovo Chromebook Plus 14). No idea if it was actually engineered like that for thermal reasons.
        • LoganDark 1 hour ago
          Is there a value to increasing surface area on the top or bottom case of a MacBook? I'd imagine most of the thermal management is achieved by fan-directed airflow through the internal heatsinks and convection through the keyboard.
    • vunderba 5 hours ago
      I've been using Macs-Fan-Control since I picked up a Mac M1 a few years back and it works great. It lets you control the fan RPM based on CPU Core values.

      I adjusted it to ramp the fans up at more conservative values because otherwise during intense usage periods it would hit 90C+.

      https://github.com/crystalidea/macs-fan-control

    • jtbayly 6 hours ago
      I wanted this app to exist. Now it does!

      I sometimes face thermal throttling because a process has gone wacko, and all I have to do is kill it. But first I have to notice it.

      I rarely notice until half my battery is gone!

      • Neywiny 6 hours ago
        You know what, fair point. I know because my fans go haywire (except that one time my fans decided to just not work until I ran some incantations. The joys of Linux). If you're passively cooled, you get no feedback on CPU load. Makes sense.
        • angristan 5 hours ago
          Indeed, that's why apps like iStat Menus, Stats, Sensei etc (for macOS at least) are very useful, I keep the CPU usage and power usage in my menu bar at all times, this is very useful on battery. For example I know that my Macbook Air idles at ~2W-5W, so if I'm doing nothing special and it's using 15W, a process is doing some funny stuff
        • jtbayly 6 hours ago
          Yeah I’m on a MacBook Air, so no fans.
    • nicoburns 5 hours ago
      > but what are you able to do about it

      Quit some apps probably. I often have a bunch of stuff running in the background that I haven't bothered to close yet. It also sounds like it'd be good for detecting software that's gotten stuck in a busy loop or similar.

      And/or possibly take a tea break while it chills out.

    • giancarlostoro 5 hours ago
      I use TG Pro on my Macbook Pro to auto-cool my Mac. It drives me crazy that Apple lets your Mac burn to a crisp before kicking on the fans.
      • varenc 3 hours ago
        Is Apple actually letting the Mac burn to the point at which it has damage or other negative consequences? I've definitely observed they delay the fans until they're absolutely needed, but I trust their thermal management to not actually cause harm. (besides a warm lap)
    • embedding-shape 5 hours ago
      > but what are you able to do about it?

      Depends on the environment, back when I had a MacBook, they still had fans, but the new ones are all passive, I think. So then the surface (or lack of it) below it would matter the most. If you keep it in your lap, on top of a hairy blanket, it'll be a lot effective at getting rid of the heat compared to if you have it sitting on a stone table, as just one example.

      Edit: Seemingly the split of Air/Pro being passively/actively cooled seems to still apply today, so then checking fans, their performance and intakes/outtakes for chaff tends to be the best way, if you have a Pro.

      • hu3 5 hours ago
        New macbooks still have fans. Depending on the model.
      • saagarjha 5 hours ago
        MacBook Air is passive, MacBook Pro is not
    • amelius 6 hours ago
      You can move to a colder place or turn the room temperature down.
      • nottorp 6 hours ago
        In the northern hemisphere you can just open a window at this time of the year.

        Remember to put your coat and hat on!

  • scottlamb 2 hours ago
    > I know it’s thermal throttling because I can see in iStat Menus that my CPU usage is 100% while the power usage in watts goes down.

    There's another possibility. If your battery is low and you've mistakenly plugged it into a low-power USB-C source (phone charger), you will also see 100% CPU usage, low power usage, and terrible performance. Probably not the author's problem, but it's been mine more than once! It might be worth adding something to detect this case, too. You can see your charger power under "System Information"; I assume there's an API for it also.

    • wincy 43 minutes ago
      I have an M1 MacBook Air and do a once weekly virtual D&D session with some friends. I hook it up to my 4K monitor, and I assumed it had to do with that. It kept becoming a slideshow (unless I put an ice pack under it!) and I realized it’s because the battery life is so good it’s the only time of the week I charge the thing, so charging the battery was making the poor laptop a hot mess that was thermal throttling like crazy. This is with a nice dock that can push around 100W, so it isn’t necessarily an underprovisioned charger.

      I started charging it an hour or two before our session, and the issues stopped.

    • hinkley 2 hours ago
      While I have definitely done this a few times, one of my MacBooks could draw more power than the power supply could deliver and there was a particular computer game that I discovered I could “only” play for about five hours before the laptop shut itself off. Because it was having to draw supplemental power from the batteries to keep up.

      IIRC the next generation of MacBook was the one that came with the larger power brick, which didn’t at all surprise me after that experience. Then they switched to GaN to bring the brick size back down.

    • morning-coffee 2 hours ago
      > I know it’s thermal throttling because I can see in iStat Menus that my CPU usage is 100% while the power usage in watts goes down.

      When I read this I wondered "Why isn't core temperature alone not a reliable indicator of thermal throttling?". Isn't that the state variable the thermal controller is directly aiming to regulate by not letting it exceed some threshold?

      • angristan 1 hour ago
        My M4 Max Macbook Pro can run for a while at like 105°C and fans to the max before throttling, when it starts throttling it doesn't exceed that threshold, and then the temperature goes down for a while before throttling stops
    • angristan 2 hours ago
      Interesting, yeah iStat Menus reports the wattage of the charger, sometimes I've charged my mac with like a 5 or 10W charger and I didn't have that issue But now that rings a bell, I think a coworker had that issue recently. I wonder why that happens
  • e40 4 hours ago
    He could get notarization and code signing for free if he puts it into Homebrew. I would love to get it via that distribution mechanism.
    • xenonite 3 hours ago
      This is great to hear.

      Is there a similar free way for getting Windows signatures?

    • angristan 4 hours ago
      Oh really? TIL, I thought it was dependant on the app developer. I can look into it, thanks!
  • marksomnian 5 hours ago
    Site appears to be hugged to death, repo is: https://github.com/angristan/MacThrottle
    • angristan 4 hours ago
      Oops, I fixed it, I have not very important Cloudflare Workers in front of the blog (which is on Cloudflare Pages) and somehow they were in fail closed mode and not fail open :(
  • ksec 2 hours ago
    I really wish Apple uses Vapour Chamber cooling for next MacBook Air M5.

    On my MacBook Pro, I have come to the conclusion that Apple priorities low noise level over heat dissipation. And I have my Mac fan control to have a minimum fan speed.

  • twilo 6 hours ago
    You can just ping your CPU usage to the menu bar and monitor that. I have CPU and total system wattage up there so I always know if something weird is going on.

    https://github.com/exelban/stats

    • angristan 6 hours ago
      Yeah! That's how I initially suspected that it was thermal throttling because I saw in iStat Menus that my wattage was going down for a constantly high CPU usage
  • atymic 2 hours ago
    Found https://github.com/macmade/Hot which works for my intel mac :)
    • tamimio 1 minute ago
      Thanks for sharing it, will try it now. I found an iMac 2017 the other day at the thrift store for $20, it’s been very good so far but will see if it throttles or not.
  • nazgu1 6 hours ago
    There is a problem/bug with thermal pressure notifications. Did you stumbled upon such issue with your app? https://github.com/macmade/Hot/issues/73
    • angristan 6 hours ago
      Ah! Yeah I did notice that using `ProcessInfo.processInfo.thermalState`, the state didn't update unless I restarted the process (reproducible even with a swift script). But this issue doesn't happen with the technique I use right now (the thermald notification)
      • nazgu1 6 hours ago
        Thanks, I will check your approach. And your app as well, looks beautiful and useful.
        • angristan 5 hours ago
          Thank you for the kind words :)
  • luxuryballs 3 hours ago
    This is the type of software you hope Apple will “Sherlock” and bake into the OS!
  • carterschonwald 4 hours ago
    Mac fan control seems to track component temps which is pretty nice
  • tonymet 2 hours ago
    I hope this great tutorial encourages more developers to build native apps. Still the best development and consumer experience .
  • the_black_hand 5 hours ago
    My 2017 macbook is basically brick. Crazy how just opening chrome sets off fans like a jet engine. How much cpu can checking gmail really use?

    Foolish me is considering buying a new macbook this year. I have no choice because Apple and Microsoft will do everything in their power to ship the shittiest personal computing products every year.

    • lanyard-textile 4 hours ago
      The butterfly keyboard of that era was a large enough signal, to me, that high quality engineering results were compromised.

      They produced a laptop that you can't type efficiently on?? That misses key strokes?! I had to slow my typing on those keyboards!

      So, imagine the incredible contempt I have had for Apple for failing such a basic delivery. Still, their new silicon machines managed to turn my opinion around -- quite the 180. The speed improvement is genuinely remarkable, and the modern build quality otherwise seems excellent to me.

      It's worth another try imo.

    • throwaway270925 1 hour ago
      Yeah, 2016-2019 were severely cooling constrained unfortunately.

      If you want to keep using it (maybe not as your main machine) there are some workarounds and fixes:

      The simple software only way is to deactivate Turbo and/or HT. Less performance but also less power use meaning less heat. And checking gmail or browsing the web you probably wont notice much of a difference.

      Or you can open it up and add thermal pads to your VRMs, finally giving them adequate cooling. Just dont touch the bottom of your macbook afterwards or rest it on your bed or couch, that thing can get hot!

    • dplgk 29 minutes ago
      I recommend taking the bottom panel off and cleaning out dust from the fans and air ports
    • Arn_Thor 3 hours ago
      I'm sorry you're saddled with an Intel Mac. The Apple Silicon Macs really changed everything. Clearly Apple is capable and willing of shipping extremely good and performant hardware, even though historically they haven't always done so. I do blame Intel for their monopoly on mediocraty for the late-10s Macbooks though.
      • bigyabai 2 hours ago
        Now put Linux on it. Just like new!
  • rkagerer 6 hours ago
    This would be a really useful thing to indicate via an unobtrusive LED on the chassis somewhere.
    • echoangle 6 hours ago
      Why would you take an LED over something on the screen? The notification is only really relevant while the laptop is open, and the screen is going to be on anyways.
    • alexford1987 3 hours ago
      There is no way Apple would do this on a MacBook Air, which is able to be passively cooled because of the type of use cases/users it is primarily designed for, most of whom never hit throttling. The light would only confuse almost everyone.
  • mschuster91 5 hours ago
    Another thing to keep in mind with MacBook Pro models or any other device that has fans... if you have cats, dogs or other heavily shedding animals, you must regularly (for me, once a year, for people with German Shedders more like once a quarter) open them up and thoroughly clean them.

    The amount of fur that manages to squeeze everywhere is insane.

    • vunderba 5 hours ago
      Husky/Pyr owner here - I have to systematically blow out all of my electronics because she molts enough fur to start my own Etsy brand of stuffed animals.

      The WORST thing, though, is that all her fur makes its way into all my musical instruments, including underneath each individual key of my upright piano (now effectively a felt piano).

  • gigatexal 3 hours ago
    neat! got it installed. thank you.

    you could easily put this in the App Store (maybe?) and I'd have thrown a few bucks your way.

  • sys_64738 6 hours ago
    brew install stats
  • Bad_Initialism 2 hours ago
    It won't run on a MacBook Air M1 running Sonoma. Only Tahoe.

    Come along with me! We'll destroy the planet so fast that we'll all be cinders before you know it.

    All we have to do is gobble the marketing speak so fast and make everything shiny and new, and we'll all be dead before you can say "Greta Thunberg."

    Come die with me for thin and for stylish. Kill the animals with me for "sleek".

    Die. With. Me. Now! I made an app!

  • edwardtay 4 hours ago
    Nice work! This is a practical tool that fills a real gap. A few thoughts:

    1. Have you considered adding historical tracking/graphing? Being able to see throttling patterns over time would be super valuable for understanding workload impacts and diagnosing thermal issues.

    2. What metrics are you pulling to detect throttling? CPU frequency scaling, temperature sensors via IOKit, or something else? Would be interested in the technical details.

    3. Integration with menu bar apps like iStat Menus or Stats could be useful - or even just exporting metrics to a format they can consume.

    4. For M-series chips, have you noticed different throttling behavior compared to Intel Macs? The efficiency/performance core split makes this more complex.

    5. Any plans to add alerts/notifications when throttling occurs? Or maybe even automated actions (like pausing backup processes when thermal throttling is detected)?

    One use case: this would be great for developers running heavy builds or ML training. Knowing when your machine is throttling helps decide whether to optimize code, get better cooling, or just wait it out.

    • widhhddok 4 hours ago
      The account that posted this comment seems to be a bot account - and one that doesn't even read the article in it's context.
      • angristan 3 hours ago
        Agreed, half of these questions are answered in the post. Also, looking at the account's comment history confirms that it's karma-farming with comments or something like that
      • ChadNauseam 4 hours ago
        One thing that annoys me about LLMs is how they say stuff that's dumb but sounds smart. For example:

        > Have you considered adding historical tracking/graphing? Being able to see throttling patterns over time would be super valuable for understanding workload impacts and diagnosing thermal issues

        Would it actually though? Is anyone going to ever check if their laptop was throttling at 6pm yesterday evening and then remember what they were found at that time and try to "understand workload impacts"? It's the type of thing that might come in kinda useful once in a while, not "super valuable". Idk, I notice this trend with LLMs a lot. Often what they say just doesn't really make sense when you think about it.