Measuring my Framework laptop's performance in 3 positions
Monday, April 28, 2025
A few months ago, I was talking with a friend about my ergonomic setup and they asked if being vertical helps it with cooling. I wasn't sure, because it seems like it could help but it was probably such a small difference that it wouldn't matter. So, I did what any self-respecting nerd would do: I procrastinated.
The question didn't leave me, though, so after those months passed, I did the second thing any self-respecting nerd would do: benchmarks.
The question and the setup
What we want to find out is whether or not the position of the laptop would affect its CPU performance. I wanted to measure it in three positions:
- normal: using it the way any normal person uses their laptop, with the screen and keyboard at something like a 90-degree angle
- closed: using it like a tech nerd, closed but plugged into a monitor and peripherals
- vertical: using it like a weird blogger who has sunk a lot of time into her ergonomic setup and wants to justify it even further
My hypothesis was that using it closed would slightly reduce CPU performance, and that using it normal or vertical would be roughly the same.
For this experiment, I'm using my personal laptop. It's one of the early Framework laptops (2nd batch of shipments) which is about four years old. It has an 11th gen Intel CPU in it, the i7-1165G7.
My laptop will be sitting on a laptop riser for the closed and normal positions, and it will be sitting in my ergonomic tray for the vertical one. For all three, it will be connected to the same set of peripherals through a single USB-C cable, and the internal display is disabled for all three.
Running the tests
I'm not too interested in the initial boost clock. I'm more interested in what clock speeds we can sustain. What happens under a sustained, heavy load, when we hit a saturation point and can't shed any more heat?
To test that, I'm doing a test using heavy CPU load. The load is generated by stress-ng, which also reports some statistics. Most notably, it reports CPU temperatures and clock speeds during the tests.
Here's the script I wrote to make these consistent. To skip the boost clock period, I warm it up first with a 3-minute load Then I do a 5-minute load and measure the CPU clock frequency and CPU temps every second along the way.
#!/bin/bash
# load the CPU for 3 minutes to warm it up
sudo stress-ng --matrix $2 -t 3m --tz --raplstat 1 --thermalstat 1 -Y warmup-$1.yaml --log-file warmup-$1.log --timestamp --ignite-cpu
# run for 5 minutes to gather our averages
sudo stress-ng --matrix $2 -t 5m --tz --raplstat 1 --thermalstat 1 -Y cputhermal-$1.yaml --log-file cputhermal-$1.log --timestamp --ignite-cpu
We need sudo
since we're using an option (--ignite-cpu
) which needs root privileges[1] and attempts to make the CPU run harder/hotter.
Then we specify the stressor we're using with --matrix $2
, which does some matrix calculations over a number of cores we specify.
The remaining options are about reporting and logging.
I let the computer cool for a minute or two between each test, but not for a scientific reason. Just because I was doing other things. Since my goal was to saturate the temperatures, and they got stable within each warmup period, cooldowh time wasn't necessary—we'd warm it back up anyway.
So, I ran this with the three positions, and with two core count options: 8, one per thread on my CPU; and 4, one per physical core on my CPU.
The results
Once it was done, I analyzed the results. I took the average clock speed across the 5 minute test for each of the configurations. My hypothesis was partially right and partially wrong.
When doing 8 threads, each position had different results:
- Our baseline normal open position had an average clock speed of 3.44 GHz and an average CPU temp of 91.75 F.
- With the laptop closed, the average clock speed was 3.37 GHz and the average CPU temp was 91.75 F.
- With the laptop open vertical, the average clock speed was 3.48 GHz and the average CPU temp was 88.75 F.
With 4 threads, the results were:
- For the baseline normal open position, the average clock speed was 3.80 GHz with average CPU temps of 91.11 F.
- With the laptop closed, the average clock speed was 3.64 GHz with average CPU temps of 90.70 F.
- With the laptop open vertical, the average clock speed was 3.80 GHz with average CPU temps of 86.07 F.
So, I was wrong in one big aspect: it does make a clearly measurable difference. Having it open and vertical reduces temps by 3 degrees in one test and 5 in the other, and it had a higher clock speed (by 0.05 GHz, which isn't a lot but isn't nothing). We can infer that, since clock speeds improved in the heavier load test but not in the lighter load test, that the lighter load isn't hitting our thermal limits—and when we do, the extra cooling from the vertical position really helps. One thing is clear: in all cases, the CPU ran slower when the laptop was closed.
It's sorta weird that the CPU temps went down when closed in the second test. I wonder if that's from being able to cool down more when it throttled down a lot, or if there was a hotspot that throttled the CPU but which wasn't reflected in the temp data, maybe a different sensor.
I'm not sure if having my laptop vertical like I do will ever make a perceptible performance difference. At any rate, that's not why I do it. But it does have lower temps, and that should let my fans run less often and be quieter when they do. That's a win in my book.
It also means that when I run CPU-intensive things (say hi to every single Rust compile!) I should not close the laptop. And hey, if I decide to work from my armchair using my ergonomic tray, I can argue it's for efficiency: boss, I just gotta eke out those extra clock cycles.
-
I'm not sure that this made any difference on my system. I didn't want to rerun the whole set without it, though, and it doesn't invalidate the tests if it simply wasn't doing anything. ↩
Please share this post, and subscribe to the newsletter or RSS feed. You can email my personal email with any comments or questions.
If you're looking to grow more effective as a software engineer, please consider my coaching services.
Want to become a better programmer?
Join the Recurse Center!
Want to hire great programmers?
Hire via Recurse Center!