Question Teamgroup MP33 NVMe SSD High Idle Power Draw

jtyubv

Prominent
Aug 6, 2022
29
1
535
I was testing two SSDs and I was surprised to see a large difference in idle power consumption between the two in an HP Elitedesk 800 G4 SFF PC with an i7 8700.
  1. Samsung SM951 (256 GB)
  2. Teamgroup MP33 (1 TB)
What I noticed was that when I had the Samsung drive in the system (with the OS installed on it), the entire system would idle at 5.5 watts (measured with a kill-a-watt from the wall). However, when I had the Teamgroup installed in place of the Samsung (also with the OS installed), the system would idle at 9.9 to 10.5 watts, which seems significantly higher.

Originally I thought this was because the Windows OS was installed on it and maybe the Teamgroup was having problems with that, so I tried it as a secondary drive being completely empty.

But when the Teamgroup was the empty secondary drive (the motherboard has 2 M.2 slots) and Windows was on the Samsung, the system was still idling at 9.9 to 10.5 watts, meaning that the Samsung was drawing so little power that I couldn't even measure it while the Teamgroup SSD seems to consistently be drawing 4 to 5 watts no matter what.

The review suggests it should only be using about 0.4-0.5 watts at idle so something is clearly wrong with my setup.

I'd like to get the idle power draw on these down if possible (I have ten different machines with an MP33s in them, so it adds up) but I don't know what to do. Any advice?
 
I used smartmontools (smartctl) --capabilities to check the power states available for the Teamgroup SSD and this is what I found:

Code:
Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
0 +     6.50W       -        -    0  0  0  0        0       0
1 +     5.80W       -        -    1  1  1  1        0       0
2 +     3.60W       -        -    2  2  2  2        0       0
3 -   0.7460W       -        -    3  3  3  3     5000   10000
4 -   0.7260W       -        -    4  4  4  4     8000   45000

For comparison, here is what the Samsung SM951 looks like:

Code:
Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
0 +     9.00W       -        -    0  0  0  0        5       5
1 +     4.60W       -        -    1  1  1  1       30      30
2 +     3.80W       -        -    2  2  2  2      100     100
3 -   0.0700W       -        -    3  3  3  3      500    5000
4 -   0.0050W       -        -    4  4  4  4     2000   22000

So the maximum power consumption of the lower power states of the Teamgroup are significantly higher than the Samsung (0.74 vs 0.07 and 0.72 vs 0.005), but the actual power consumption I observed is still a lot higher than those values (4 to 5 watts compared to less than 1 as indicated by smartctl).

I guess the Teamgroup is getting stuck in state 1? I'm not sure why this would happen.
 
Perhaps you could set the power state to a particular value and then monitor the power draw.

https://github.com/linux-nvme/nvme-cli

https://github.com/linux-nvme/nvme-cli/blob/master/Documentation/nvme-set-feature.txt

Code:
nvme-set-feature(1)
===================

NAME
----
nvme-set-feature - Sets an NVMe feature, returns applicable results

SYNOPSIS
--------
[verse]
'nvme set-feature' <device> [--namespace-id=<nsid> | -n <nsid>]
              [--feature-id=<fid> | -f <fid>] [--value=<value> | -v <value>]
              [--uuid-index=<uuid-index> | -U <uuid_index>]
              [--data-len=<data-len> | -l <data-len>]
              [--data=<data-file> | -d <data-file>]
              [--save | -s]

DESCRIPTION
-----------
Submits an NVMe Set Feature admin command and returns the applicable
results. This may be the feature's value, or may also include a feature
structure if the feature requires it (ex: LBA Range Type).

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the value sent to the device is displayed

OPTIONS
-------

-f <fid>::
--feature-id=<fid>::
    The feature id to send with the command. Value provided should
    be in hex.

-v <value>::
--value=<value>::
    The value for command dword 11, the value you want to set the
    feature to.

EXAMPLES
--------
* Sets the Power State (PS) to 1  in feature id 2:
+
------------
# nvme set-feature /dev/nvme0 -f 2 /dev/nvme0n1 -v 0x1
------------