RAM module capacity appears to have a significant effect on power draw during suspend.
For example, on my system (full specs in next post):
- With 96GB (2x48GB) installed, suspend draws 1.13W and lasts 2.25 days
- With 16GB (2x8GB) installed, suspend draws 0.33W and lasts 7.82 days
I previously assumed that RAM config had a negligible impact on battery life, and was surprised to find that a 48GB stick draws 10x more power than a 8GB stick in its low power self-refresh state (see table below). It’s a shame that RAM manufacturers don’t list their power consumption specs, but we can collect this information ourselves.
To calculate power consumed by RAM, run two suspend trials of the same duration, but remove a stick for one of the trials. The delta is the power consumption of one of the sticks.
Measurements in miliamps (mA):
RAM | RAM Model | Both populated | One populated | Per-stick | Base |
---|---|---|---|---|---|
2x48GB-5600 | CT2K48G56C46S5 | 73 | 44 | 29 | 15 |
2x8GB-4800 | HMCG66MEBSA092N | 21 | 18 | 3 | 15 |
Measurements in Watts (W):
RAM | RAM Model | Both populated | One populated | Per-stick | Base |
---|---|---|---|---|---|
2x48GB-5600 | CT2K48G56C46S5 | 1.130 | 0.681 | 0.449 | 0.232 |
2x8GB-4800 | HMCG66MEBSA092N | 0.325 | 0.279 | 0.046 | 0.232 |
Please help contribute additional entries by running this test on your machine with whatever RAM you happen to have on-hand. Here’s an example post with results in a format that will be easy to incorporate into the table. I’ll update and reorganize these tables as results are posted.
Testing procedure:
Suspending for at least an hour will help improve measurement accuracy. Make sure your laptop is not charging, and has enough juice to last for the duration of the test. Results will also be more reliable if there are no expansion cards other than USB-C, and no other devices are attached.
Linux
These commands should work on most Linux systems to compare charge before and after a suspend. Start with a quick 5-second test:
date
cat /sys/class/power_supply/BAT1/charge_now
sudo rtcwake -m mem -s 5
cat /sys/class/power_supply/BAT1/charge_now
date
Wrapping with date
is optional for confirming timing.
Battery stats might be on a slightly different path, so you may need to change BAT1/charge_now
to something like BAT0/energy_now
. Note that the units may be different:
energy_now
outputs microwatts (uW), divide by 1000000 for Watts (W).charge_now
outputs microamp-hours (uAh), divide by 1000 for milliamp-hours (mAh).
If that works, go for a full hour. Pasting the whole block should work now without interruption if you’ve already primed your shell with sudo
from the above test.
date
cat /sys/class/power_supply/BAT1/charge_now
sudo rtcwake -m mem -s 3600
cat /sys/class/power_supply/BAT1/charge_now
date
You should see output like the following:
Fri Sep 13 06:20:08 PM PDT 2024
2484000
rtcwake: wakeup from "mem" using /dev/rtc0 at Sat Sep 14 02:20:09 2024
2411000
Fri Sep 13 07:20:09 PM PDT 2024
In this case, battery dropped from 2484000uAh to 2411000uAh, which is 73000uAh or 73mAh. This happened over one hour, so average current draw is simply 73mA. You can convert to mW by multiplying by the battery’s nominal voltage of 15.48V to get 1130mW or 1.13W.
Then remove a RAM stick and repeat the test. You should see lower power consumption. In my case, 44mA. This means that one stick draws 29mA (73mA - 44mA), and we can deduce that the base consumption excluding RAM is 15mA (44mA - 29mA).
AMD shortcut
If you’re on an AMD system, you can let the amd_s2idle.py
script handle most of the above for you. For example, run:
sudo python amd_s2idle.py
Use defaults for everything, except the cycle duration, which you set to 3600 seconds (1 hour). Then the last line printed will be the total consumption, something like:
🔋 Battery BAT1 lost 73000 µAh (1.94%) [Average rate: 0.01A]
Note that the script may require a small typo fix for this to work.
Windows
I don’t know if there’s an equivalent test we could run on Windows, but feel free to share if you have ideas.
Related topics:
[TRACKING] Test results for standby battery use of Expansion Cards
I was failing to reproduce the 0.31W result on my system. My measurements were 3.6x higher at 1.13W. I figured something else must be up, so started investigating RAM’s contribution.
[Battery Life] Impact of RAM / memory configuration + extra data
This is a nice comparison of active power consumption for a variety of RAM configs, but does not explore the suspend use case. I was tempted to just post as a reply there, but figured it would be better to keep a separate topic focused on crowd-sourced measurements of RAM power consumption during suspend.