The Spoils of Law (Moore’s Law)–a New Laptop

I just got a new laptop (Lenovo P51, four-cores, eight-threads, 32 GB RAM, multiple drive bays). My old machine was more than six years old so it was probably overdue. I wanted to record some of the reasons for the upgrade, and the process, if only for myself, so here we go.

One would think that the main reason to upgrade a six-year-old laptop would be the hardware. Bigger, faster, etc., but it turns out that software was as big a factor.

DVD-Video_bottom-sideThe DVD drive had failed (but I never used it) and the SD-Card reader had failed (so I bought an adapter), and the battery was getting feeble (but I’d replaced it once and could have replaced it again). Probably the biggest hardware problem was that it was maxed out at 8 GiB of RAM which feels a bit tight these days.

Meanwhile, on the software side… I’d upgraded from Windows 7 to Windows 10, ‘cause as a developer I needed to be on the latest OS. Unfortunately, my Intel Wi-Fi adapter was not officially compatible with Windows 10 so when I reported five-second hangs to Intel they said ‘tough’. And the hybrid-GPU setup was not compatible with Windows 10, leading to flickering and this occasional epilepsy inducing behavior. It’s still not clear to me why Microsoft’s upgrade advisor didn’t warn me about these problems. No wonder so many people had issues after upgrading.

My laptop also had a long-standing driver bug that meant that sometimes when I closed the lid it would fail to go into standby. If I noticed this and cracked the lid open again then that would tickle some internal state and then it would successfully sleep. If I didn’t notice then the driver would timeout and shutdown the machine. I never figured out which driver was the culprit – I lived with these occasional failures for six years.

The upgrade to Windows 10 on the old laptop also left me with various small defects. Ctrl+Backspace didn’t work in the command prompt, Windows Live Photo gallery would crash if I brought up a context menu with multiple pictures selected, the lock-screen timeout could not be configured separately from the screen-off timeout, etc. Again – the Windows 10 upgrade process was poorly done, especially for something that was forced upon so many of my family members.

Buying a new laptop resolved the hardware issues, and the software issues, and it also gave me six years of hardware progress – which was not as exciting as I had hoped.

Hardware – improvements?

The biggest gain was that I went from 8 GiB of RAM to 32 GiB of RAM, and I could have gone to 64 GiB if I’d felt the need. Yay!

imageBut I thought Moore’s law would do more for me. My new CPU is faster (higher clock rate and better micro-architecture so probably twice as fast?) but nothing dramatic. And while I’d hoped that core counts might have improved in that period of time it was actually a struggle not to regress! I bought a quad-core hyper-threaded laptop in 2011 and it felt more difficult to do that now. Dual-core laptops are insufficient (you need one core for anti-virus, one for your GPU driver to compile shaders, and then at least one for your games) so it frustrates me that they are still the most common configuration. So, faster cores, but the same number of cores as six years ago (eight-core sixteen-thread Intel laptop CPUs are available in 2019).

imageAs part of the upgrade I got a shiny new 2 TB SATA SSD – double the size of my previous one (but be sure to upgrade the firmware). I’m a pack rat and I like having all my media accessible. The SSD upgrade was actually one of the larger obstacles because many laptops now only support M.2 drives. Getting 1 TB M.2 drives is challenging, and forget about 2 TB. I know that the M.2 drives have more than enough capacity for most people, and they’re smaller, and supposedly faster, so I get it, but it was still frustrating. But I ended up with a laptop that can handle two SATA drives plus an M.2 drive, so I could get up to 5 TB of solid-state storage if I wanted to spend $3,400 for it (in 2019 I could get 10 TB of solid-state storage for $1,6090).

My screen resolution stayed the same (my eyes aren’t good enough to justify more than 1080p on a laptop screen), and my screen got slightly smaller (17” laptops are rare and 15.6” actually seems nice).

But hey, it’s two pounds lighter (from 8.0 pounds to 5.875 pounds) than my previous brick, so that’s concrete progress.

Finding a new machine that had a SATA slot, could support lots of memory, had a decent screen size, and a quad-core CPU was actually really hard. I have a long list of laptops that had all but one of these qualities (or all of these but an incredibly bad keyboard or screen), but very few matched my needs. I guess my needs are weird, but I swear my laptop search six years ago was easier.

More driver bugs

It’s not entirely accurate to say that buying a new laptop resolved my software issues. What actually happened was that I noticed that Chrome would sometimes hang when I resumed from standby. Windows Update didn’t find any new drivers so I grabbed an ETW trace and determined that the Intel Wi-Fi driver was the culprit (I know, I was shocked also). The WPA screenshot below (using ETW wait analysis) shows that chrome.dll called closesocket and this caused that thread to hang for 27.852 seconds. When it resumed running it was because the Wi-Fi stack finally responded (“readied it”, in Windows talk).


imageI already knew I had an Intel Wireless adapter, but the driver signing also showed this:

I used Device Manager to upgrade the Intel drivers which brings up several questions:

  • Why didn’t Windows Update find the new driver?
  • Why did Lenovo ship the laptop without the latest driver (released three months earlier)?
  • What the hell do normal people do? I thought this sort of experience was supposed to be reserved for Linux users.
  • Why can’t Intel write software? Two buggy drivers (at least), and Intel Power Gadget doesn’t work either.

At least my buggy Intel driver isn’t causing blue-screen crashes like it did for some.


A new machine is exciting, but also a huge hassle. I couldn’t buy the laptop with the SSD that I wanted so I couldn’t even use it until I transferred the OS to the new disk (probably should have done a clean OS install, but that can be tough or expensive). Then I started reinstalling software. It is only at this moment that one realizes how much software ones uses on a regular basis. Some of the installers no longer exist (luckily I found an archived copy of the Windows Live installer, and Garmin Training Center can be xcopy installed). Many were on these strange “optical disks” so I used our last remaining DVD drive to copy them (and archive them for posterity). Here’s a list of all the software that I apparently can’t live without, roughly in the order that I installed it:

  • Chrome
  • Office 2010 – needlessly complicated migration process for Outlook that still loses all customizations
  • VS 2017 – and the VS 2015 toolset
  • Perforce – such a pain to upgrade DB, no VS 2017 support, but it’s free
  • UIforETW
  • Windows Live Photo gallery
  • Chromium source
  • SyncToy – I use this to synchronize photos between computers at home
  • Wi-Fi driver upgrade
  • Printer setup
  • WinMerge (now that Microsoft doesn’t ship WinDiff anymore)
  • Google drive sync
  • Adobe Premiere Elements
  • Adobe Photoshop Elements
  • Adobe Lightroom
  • Uninstall Adobe Creative Cloud to get rid of ~11 Adobe processes
  • Fractal eXtreme
  • Garmin Training Center – no installer, had to xcopy the files from the old machine
  • Encarta – I like having an off-line encyclopedia, don’t judge me!
  • Visio
  • Google Earth Desktop version
  • Google Photos Auto upload (different account from Google drive sync)
  • Family Tree Maker
  • Uninstall Lenovo Companion, OneDrive (multiple times), other junk software
  • Patch Lenovo Settings
  • Uninstall Lenovo Settings
  • Intel Power Gadget (doesn’t work)
  • Github Desktop
  • VsChromium
  • Camtasia 8

Tracking down all of the installers was a bit of a pain but now I’ve got a lot more of them archived for next time.

Favorite features

I haven’t bothered configuring the fingerprint reader yet – I’m not sure I trust Windows imageHello and its insistence on a PIN. I wish the home/end/left-ctrl keys were positioned differently, but the keyboard is good enough.

Seeing Task Manager reporting lots of GB available and used for cache always makes me happy.

The best feature is the battery life. My new toy may not imagebe as excitingly faster as I had dreamed of, but going from ~1.5 hours of battery life up to a refreshing 8-10 hours is pretty wonderful.

The laptop has four USB type A sockets and one USB type C socket and they are all powered even when the laptop is sleeping. This means I can charge five devices off of my laptop, including high-speed charging one USB-C device.

Least favorite features

Lenovo is abusing the UserHardErrorEx function to bring up always-on-top dialogs offering upgrades. It’s not confidence inspiring and had my worried but there may be nothing actively dangerous there.

This laptop has a serious flaw where it refuses to draw much power when on battery. This causes the CPUs to be aggressively throttled, making it almost unusably slow in some scenarios. It can drive a single core at a reasonable speed, but if multiple cores try to run then their speed can drop as low as 800 MHz, which is a slog. It’s not thermal throttling because it triggers instantly, even at modest temperatures.

imageFor mysterious reasons that are still being investigated the new laptop has WiFi download performance that typically ranges from mediocre to terrible. Lenovo (and, to a lesser extent, Intel) are trying to help, but so far this has been variations on “tweak this setting or upgrade the driver.” I really want a tool that will tell me what is wrong so that we can be more scientific about finding a solution. I hate it when ETW is not obviously helpful. For some reason the upload speeds are consistently good, and are usually faster than downloads! Update from 2022: I’m still using this laptop and the WiFi speeds are fine now. I just measured 346 Mbps down and 225 Mbps up.

About brucedawson

I'm a programmer, working for Google, focusing on optimization and reliability. Nothing's more fun than making code run 10x as fast. Unless it's eliminating large numbers of bugs. I also unicycle. And play (ice) hockey. And sled hockey. And juggle. And worry about whether this blog should have been called randomutf-8. 2010s in review tells more:
This entry was posted in Investigative Reporting, Rants and tagged , , . Bookmark the permalink.

30 Responses to The Spoils of Law (Moore’s Law)–a New Laptop

  1. Gavan says:

    Interesting post – always nice to have some new hardware. I’ve read this a few times and tried searching for it – but I can’t see the actual Lenovo model number / name in the blog entry. Are you able to share the model that you purchased? I’m looking for a laptop at the moment too as my old clunker macbook pro has a faulty screen now and is relegated to clamshell mode – and I’m interested in trying a windows 10 machine (my other laptop next to my work desktop is so old that it can’t be upgraded beyond Windows 7). I always find it an agonising process trying to choose a new laptop so I’m interested in other peoples choices so I have even more configs to ponder. I’m currently considering a Dell Inspirion 2 in 1 with 16GB/512GB and i7. One of the challenges I faced (which I hit when I went to buy a HP Spectre x360) is that some ultrabooks (I’m looking at you HP) don’t have cable lock sockets – which is a corporate requirement.

  2. Sven says:

    Had an X201T which developed an angular sensitivity. That is: WiFi would work perfectly when the machine was tilted to any 45 degree angle, but would near cut out when laid flat. Give it a try!

    • brucedawson says:

      I have seen signs of that, although the results are not quite consistent enough for me to be sure. So far I’ve just experimented with rotating the laptop while keeping it level – tilting it 45 degrees from level seems… tricky?

  3. Gonçalo says:

    In case you didn’t know, you can switch the Function and Left Control keys in the BIOS setup in Lenovo laptops that were released in the last couple of years.

    • brucedawson says:

      Oooh! Thank you! I will definitely do that. I can get used to the Ctrl key not being in the corner, but it confuses my muscle memory whenever I switch computers. It’s just too bad that the key caps are different sizes so I can’t swap them.

  4. Sam says:

    I would buy a beefy 17″ P71 Lenovo if they were created with a centered keyboard WITHOUT the number pad. Alas, those types of keyboards have disappeared for larger laptops. My W520 has speakers on either side of the keyboard, which seems rather intuitive for a centered keyboard.

  5. Vsevolod says:

    We’ve had an issue at work with Win 10 (on Surface) and wifi and specifically download speed, and it was resolved by tweaking the MTU value on the access point (I guess it would work on the adapter too?) And I also think that Wireshark could show packet loss that would result from incorrect MTU. Maybe this helps.

  6. Scott says:

    The good folks at Defrag Tools have posted WinDiff to their OneDrive. I prefer WinMerge personally but if you need WinDiff this is a good spot to get it.

  7. Martin Ba says:

    Any reason you choose a i7-7700HQ, when you can get an i7-7820HQ for the P51? (If ya feeling wasteful, you even could get a Xeon E3-1535M)

    Or was it just availability?

    • brucedawson says:

      I must have decided that the extra cost for the 7820 was not justified (I don’t remember how much extra they wanted, but I guess I felt that a .1 GHz bump plus 2 MB extra cache didn’t justify it). The Xeon was definitely too much extra, for unclear gain. In fact, the Xeon appears to be a Skylake based product instead of Kabylake, so extra money for arguably a step backwards.

      I also had concerns that getting a Xeon processor might have hurt battery life – I don’t know if that is justified.

      The Lenovo purchasing site (all laptop purchasing sites) do a terrible job of selling you on why you should spend more money for various upgrades, so I bought the upgrades that I knew were valuable.

  8. Raul says:

    Make sure to get the latest microcode update for your CPU, since it’s affected by the recently discovered Intel hyper-threading bug, which may cause data corruption or other weird things!

  9. Paul Walmsley says:

    One thing I highly recommend when installing a new system is Chocolatey

    When I set up a new machine a few weeks ago I hated the prospect of reinstalling everything, but by using Chocolatey I did the install in half the time. All those command line utils, language interpreters, 7zip explorer addins, sysinternals suites, git,… Also it sets up the path so you don’t have to spend ages faffing around with the path variable.

    • Martin Ba says:

      First time savings with chco?
      Or just that reinstalling went easier, because you already had a choco list?

      • Paul Walmsley says:

        Both. First time savings because ‘choco install -y python3’ is much easier than hunting around for the latest version of an app, downloading and clicking through the installer. Subsequent reinstalls are easy because you have the list of packages to hand. Also easier to keep up to date with latest versions and security updates.

  10. Astarbucks says:

    Agree with @Евгений Сыромятников, you should have kept your gun powder dry for just a little while longer. At Computex a little while ago, AMD had already demo-ed a working laptop with the AMD Mobile Ryzen – 4 x Ryzen cores + 11 Vega CUs.

    Quad cores will be standard fare in a few months, with PS4 quality graphics! You’d be paying only half what Intel gouged you for!

  11. King Kong says:

    It is very rare that I find someone who also understands that it is senseless to have more than 1920×1080 on a 15.6″ screen. Apparently most people think a car with a top speed of 500mph can get you to your office faster than a Camry.

    Does 32GB RAM require a souped up model or is it just a matter of swapping the chips on a mainstream model?

    • brucedawson says:

      The Lenovo P51 can be configured on their site with up to 64 GB of RAM. Most laptops don’t allow that much memory for some reason.

      With a fast SSD I probably could have managed fine with 16 GB of RAM, but not less, and going to 32 GB was cheap future-proofing.

      If my eyes were 15 years younger I would have gone for higher resolution. Then I could have used it. Oh well.

      • Chris VanBrederode says:

        Memory limitations are more often function of the CPU now-a-days, since the memory controller is part of the “uncore” on the CPU package.

        64 GB is the i7-7700HQ’s limit according to Intel’s ARK database: Similarly, my ole’ desktop i5-4460 is limited to 32 GB, regardless of how I spend on a MB.

        • brucedawson says:

          My wife’s old desktop computer is limited to 4 GB of RAM and my previous laptop was limited to 8 GB of RAM. Ah, those primitive days. It’s nice to finally be able to configure a machine with enough memory.

        • brucedawson says:

          I’ll bet some memory limitations are a matter of marketing/price-discrimination. If a company wants to differentiate its high and low-end laptops then it can artificially restrict the amount of RAM supported on the low-end machine in order to prevent it from being used for serious work.

  12. Will Guthrie says:

    I found a similar problem as you a few years ago when I bought my new laptop for school. It seems that the mainstream market’s focus is on light, cheap and mobile (laptops are way cheaper than I remember them being). Next time you’re looking I would recommend getting something outside of the main laptop brands. I can personally recommend Sager/Clevo. They’re more expensive than a lenovo or dell but can come with full sized (non M version) GPUs, desktop CPUs and are designed to be further customizable/worked on at home.

  13. Konstantin Akimov says:

    How fast a chromium could be built at your laptop?

    • brucedawson says:

      The last time I tried it took one hour fifty-one minutes. That’s with these settings:

      target_cpu = “x86”
      use_jumbo_build = true
      enable_nacl = false
      remove_webcore_debug_symbols = true

      The Chrome build is very parallelizable so more cores would help significantly.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.