April 15th, 2015 • 6:03 pm
This has been a very traumatic few months for me as a Mac user. As indicated in several previous blog posts, I purchased a new Mac Pro along with a new 4K display back in July 2014. The machine shipped with Mavericks and worked pretty well until I upgraded to Yosemite.
I waited until OS X 10.10.1 came out before upgrading, but this was still not cautious enough. I soon realized that, on my Mac Pro, Yosemite suffered from significant responsiveness issues that were not tied to any specific piece of software or to a particularly high level of CPU activity.
When I say “significant”, I really mean it. These were not just slight delays that one can accept to live with in a 1.0 or 1.0.1 version of a new software product until the developers get around to further optimizing the software. These were massive, outrageous delays in seemingly simple tasks, such as switching apps, clicking on menu headings to pull them down, resizing windows, etc.
As an experienced troubleshooter myself, I went through all kinds of steps to try and isolate the problem and hopefully find a solution. Nothing worked. There was not a single application that I could identify as the culprit. It soon became quite clear to me, with my extensive experience as a troubleshooter, that this was a problem with the OS itself.
In desperation, I even went so far as to do a brand new “clean install” of my system and applications — something that I hadn’t done in years. When you use a fairly advanced setup such as mine, with a number of third-party applications and lots of customizations (none of which would qualify as “hacks”, although Apple probably does not do much in-house testing to ensure that utilities such as Default Folder X, Typinator and Keyboard Maestro always work well with their latest system software), doing a clean install is a very tedious, time-consuming process, because you not only have to migrate all your files back and reinstall all your applications, but also restore all the customizations one by one, without relying on existing application support files that might have somehow become “corrupted”.
But I did it, and even before I had completed the process of restoring all my customizations, I knew that the clean install had not solved the issue.
The problem with responsiveness issues is obviously that they are somewhat subjective. I am a fast typist and, generally speaking, a fast GUI user. I even use Keyboard Maestro to automate a number of repetitive interactions with the GUI using macros; those macros effectively mimic the behaviour of an extremely fast GUI user. So I am particularly sensitive to responsiveness issues. And let me tell you, on my machine at least, the situation was a nightmare.
I had all kinds of Keyboard Maestro macros that no longer worked properly because the system was not responsive enough, so I had to artificially add all kinds of built-in delays to the macros to try and make them work with the OS. (And even that only went so far, because the system’s own delays were not consistent and predictable.)
But even in my own “manual” interactions with the Yosemite GUI, I was hampered by all kinds of undesirable delays that would cause me to miss targets, accidentally trigger things I didn’t mean to trigger, etc. It was maddening!
Given that my Mac Pro was a recent purchase and that this was clearly an unacceptable level of responsiveness on a supposedly fast machine, I felt that I had no choice but to go through Apple Care. I won’t get into all the details, because telling them in full would be far too long, but suffice to say that I “burned through” four different “senior representatives”, who all agreed that what I was experiencing was unacceptable, but were at a loss to explain it, let alone reproduce it themselves or get their engineering counterparts to acknowledge the seriousness of the situation and do something about it.
Things were so bad that there was talk, at some point, of downgrading to OS X 10.9, or even of trying to get my Mac Pro’s video cards replaced, in case that might somehow miraculously fix the problem — as if it wasn’t obvious enough that this was a software problem and not a hardware problem.
I spent a lot of time executing troubleshooting tasks for the senior representatives, or for the engineering people that they were talking to about my issues, all the while knowing very well that none of them would do anything to fix the problem.
What was particularly maddening, of course, was that responsiveness issues are hard to capture, and also tend to be intermittent in nature, which means that you often cannot reproduce them on demand. However, I did end up purchasing a piece of software (ScreenFlow) that enabled me to create video captures of some of the most egregious problems, and I was also able to narrow down, to some extent, the circumstances under which the responsiveness problems would occur.
Unfortunately, I also wasted a lot of time on what can only be described, in retrospect, as wild goose chases, because I was seeing various behaviours that seemed to be connected but ultimately proved to be unrelated (or loosely related at best) to my responsiveness issues. For instance, I couldn’t help but notice that Yosemite was eating up the 32 GB of physical RAM on my Mac Pro like candy, and that responsiveness issues seemed to be getting worse the closer I got to 32 GB of memory used. The last senior representative that I talked to seemed to be unable to find out whether this kind of RAM usage was normal in Yosemite or not, and couldn’t explain, for instance, how a single web page left open in Safari could end up using 1.5+ GB of memory all by itself, on top of the memory used by the Safari process itself.
While Apple Care’s representatives proved to be unable to help me in any significant way, I was fortunate enough to get a variety of suggestions and tips from readers of this blog and my Twitter feed. This is how, for example, I found out that having turned the “Reduce transparency” option on in the Accessibility settings in System Preferences was actually causing a significant menu-flashing bug on top of my general responsiveness issues, and I ended up using the “Increase contrast” option in the same Accessibility settings for a while, because it helped reduce the severity of this bug and also, somehow, seemed to slightly alleviate the general responsiveness issues in Yosemite on my machine.
I, of course, had mentioned to the Apple Care representatives that I was also a member of AppleSeed and, as such, had access to early builds of the next system upgrade, OS X 10.10.3. (OS X 10.10.2 had come out early on with no improvements.) I asked whether it was a good idea, in my circumstances, to give those early builds of 10.10.3 a try. The representative that I was in touch with at the time was obviously at a loss himself and figured that I didn’t have much to lose. So I did proceed with the installation.
The very first 10.10.3 build available through AppleSeed included the new Photos application, but did nothing to alleviate my problems, so I was not particularly hopeful that things would get better in subsequent builds (worried as I was that the focus would be mostly on this new Photos application and not on fixing bugs).
But then two things happened. I got a tip from a reader about this post on Reddit, which suggested a link between responsiveness issues in Yosemite and a specific kernel extension (AppleGraphicsPowerManagement.kext). I was intrigued, because I had always suspected (with my limited knowledge of the engineering underpinnings of OS X) that, in the effort to minimize battery consumption for laptop computers, Apple had gone too far in implementing mechanisms that put all kinds of things to sleep automatically when idle. Certainly, several of my responsiveness issues looked like problems where, when I was clicking on something, the computer system appeared to be somehow “waking up”, and only responded to my clicks after a few seconds. And of course, my responsiveness issues had everything to do with the GUI, i.e. with “graphics”, and I had been suspecting problems with graphics drivers all along.
And then within a few hours of that discovery, AppleSeed released a new build of the OS X 10.10.3 update, which I installed, and which included a number of updated versions of kernel extensions, including this particular one (and several other graphics drivers)!
I soon realized that this update was a major step forward, that it clearly addressed several of the issues that I had been experiencing. For instance, the menu-flashing bug was completely gone. There would still be the occasional slight delay between a click on a menu heading or button and the appearance of the actual menu, but there was no longer a problem with the menu flashing and disappearing before I had a chance to make a selection.
Most important, however, was the fact that the general problem with the massive delays that I had been experiencing on my Mac Pro was gone.
I am not sure I can convey how relieved I felt at this point. I immediately communicated with the Apple Care senior representative that I was in touch with. He, of course, had no inkling that this particular build might feature any bug fix that would address the problem that we had been discussing for over two months. He was just as pleasantly surprised to hear about this.
While I was expressing my huge relief to him, I also made it quite clear that I didn’t feel that this outcome made everything alright and that everything that had come before then was forgotten (let alone forgiven). For one thing, I had no guarantee (nor did he) that whatever this particular build fixed would not be broken again in subsequent builds. Since no one on the engineering side had communicated with him about the fact that this build might contain a fix, we had no idea whether the fix was even intentional — and not simply an accidental by-product of some other improvement or optimization.
In fact, I was so worried about this that I refrained from installing any subsequent builds of the 10.10.3 update until the official update came out last week. I wanted to make sure that I had a system that worked, and given that I was otherwise very busy, the easiest solution was to do nothing. Then when the update finally came out, I made sure I had an up-to-date backup of my existing system that was updated right before I installed the update, and I made sure I immediately tested the final version of the update to confirm that the responsiveness problems had not come back. (They had not.)
I also made it quite clear to the senior representative that I felt that there had been massive communication issues between the engineering side and the customer service side at Apple, and that this had caused me and him to waste lots of time on wild goose chases and other useless (in retrospect) troubleshooting steps. While he himself was at least getting paid for dealing with me, I, on the other hand, had no way to get any compensation for the countless hours I had spent on troubleshooting this problem. If at least Apple’s engineers had said, early on, “Yes, we know that there is a major responsiveness issue for some users, and we’re working on a fix, which should be available around such and such a date”, then we would not have wasted so much time!
There is a part of me that still hasn’t forgiven Apple for this, and maybe never will. The whole experience has been very traumatizing, and I am really angry at Apple for having caused me to waste so much of my time on trying to fix a problem that I could do nothing about. As I said to the senior representative, “the impression of callousness on the part of Apple’s engineers will take a very long time to dissipate”. I realize that this particular problem probably only affected a small minority of users, but when someone goes through four different senior representatives, provides reliable scenarios for reproducing specific issues, provides graphic evidence in the form of screen captures (the engineers even asked me to record a video of my monitor with my iPhone at some point!), and clearly demonstrates that he is no fool and knows what he is talking about, the issue has to be treated more seriously and professionally, with a more acceptable level of… responsiveness in the communication itself.
I cannot help but feel, at times, that Apple’s engineers think that they are above all this and incapable of making such egregious mistakes that cause significant hardship for some of their users. While I agree that customer complaints might not always be entirely legitimate and that some users are fussy and moan about things that, in the big picture, are really rather small potatoes, this was not one of those cases. The issues I had were very real, and the very fact that they were suddenly fixed by a single system update proves that they were.
Because of the lack of communication, I still don’t know if Apple’s engineers even realize that they have fixed those significant responsiveness issues for me (and hopefully others). Part of me is still afraid that I might encounter a regression in a future system update. But at least now I had an official version of Yosemite that I can fall back on if things go awry again.
In closing, I should also stress that this is not the end of my complaints about responsiveness in Yosemite. There are still multiple aspects of the GUI in Yosemite that don’t feel right to me. The responsiveness issues are no longer egregious to the point that I find them unbearable, but there are still problems, including several bugs that I identified in the process of trying to further circumscribe the issues that were specific to my Mac Pro and mistakenly took as manifestations of these issues, when in fact they were just made more visible and noticeable by the massive delays that my responsiveness issues were causing.
I still often notice, for example, a slight delay between the time I click on a menu heading in the toolbar and the time the blue highlighting behind the heading comes on and the menu below gets drawn. It’s a small fraction of a second, but it’s noticeable. It doesn’t affect my ability to use the menu, but it makes the whole process feel slower.
The particular problem that I identified in this blog post about the blue highlighting for the “ ” menu is still there. It’s cosmetic, but it looks sloppy.
The bug in OS X’s Preview that causes it to fail to keep up with fast window resizing (especially when using a Keyboard Maestro macro) is still there.
And there are, more generally, multiple situations where you can almost witness the process of Yosemite “building” the user interface in real time. For example, yesterday I posted on Twitter a link to this video recording that I created and that shows what happens when I play back, in slow motion, a video recording of System Preferences drawing the “General” preference pane in real time in Yosemite. This video clip, which is effectively the recording of the playback of a recording, shows that there is a delay of 0.07 second between the time the contents of the “General” preference pane appear and the time some of the blue highlighting that should be part of the UI appears (the blue highlights on the radio buttons, the blue highlights on the arrows for the pop-up menus, etc.).
Why is there such a delay? It is not caused by some background activity that would happen to be slowing my system down at the time. The 0.07-second delay happens each and every time I access the “General” preference pane. It’s a small delay, but it’s noticeable. And it certainly contributes to the feeling that Yosemite is slow, even if it’s not really that slow.
I don’t know what Apple did to the GUI in Yosemite. They clearly rebuilt a lot of things (the font change to Helvetica playing an important part in this process), and in the process they created a lack of smoothness, fluidity, and zippiness that is really quite disturbing. It makes you feel like you using a system that is somehow more “fragile”, less reliable, less solid and could fall apart at any point — something that Apple’s engineers have decided is “good enough” for most people, but that more demanding, more attentive users will find rather disappointing and unworthy of Apple’s legendary attention to detail (which is becoming more and more of a legend and less and less of a reality with every passing year, I am afraid).
I cannot finish this post without thanking all the Betalogue readers and Twitter followers who have written to me to share their own stories and offer suggestions, tips, or simply commiseration. Unlike Apple’s customer service, they were actually able, collectively, to make a difference for me, and I can only hope that, with this blog post, I in turn might able to make a difference for other users.