mSATA SSDs with working ALPM

I was wondering if any of you are aware of any mSATA SSD models (suitable for OpenWrt x86 hosts as a boot drive, so pretty much any capacity at around or more than 1GB would be fine) that properly support Aggressive/Active Link Power Management when connected to an appropriate HBA, like Intel's AHCI-compatible SATA controllers.

If you have such a drive in service, you can check the current link power mgmt policy by running

find /sys/ -xdev -name link_power_management_policy -exec grep -H . {} +

For my ports and drive which does not support ALPM, that yields a value of med_power_with_dipm, which is a relatively recent low-power mode said to offer a devent trade-off between power consumption, responsiveness, and compatibility.

Now, if you were to echo min_power into these link-specific sysfs files, ALPM should be enabled. An example command line to automate that would read like this:

find /sys/ -xdev -name link_power_management_policy -exec sh -c 'echo min_power > {}' \;

!WARNING! ALPM has been known to cause data loss with some setups and drives, and there's an extensive list of per-disk quirks in the kernel that prevents enabling it for known-bad ones - however, there's no guarantee that your specific disk is protected by such a quirk if it indeed has trouble with ALPM, which could cause trouble like unexpected reboots, the system locking up, or even data lost on the drive!

After setting the policy to min_power, check for new lines in the kernel's debug ringbuffer via dmesg. For instance, my system logs the following:

[4247483.190309] ahci 0000:00:17.0: port does not support device sleep

... which indicates that my Samsung 840 EVO mSATA SSD does not properly handle ALPM.

I would very much like to know if there are mSATA SSDs that do, and how much power enabling ALPM does save.

root@PC_Engines_APU2:~# find /sys/ -xdev -name link_power_management_policy -exec grep -H . {} +
/sys/devices/pci0000:00/0000:00:11.0/ata1/host0/scsi_host/host0/link_power_management_policy:min_power
/sys/devices/pci0000:00/0000:00:11.0/ata2/host1/scsi_host/host1/link_power_management_policy:min_power

It's been ages since we put together this APU2 so I don't recall which mSATA SSD is inside, any way I can find out without needing to install parted and the likes?

Edit: it's this one, but not much info to be gleaned from it.

Thanks for the data point - unfortunately, it's probably going to be hard to shop for that one in particular :smiley:

Ftr, you can get most basic information about block devices (like vendor, model, etc.) from sysfs, comfortably so via grep -H . /sys/block/*/device/* 2>/dev/null

Okay. Not sure if this helps you any - the vendor is set to 'ATA' and model to 'SATA SSD' (I kid you not).

# grep -H . /sys/block/*/device/* 2>/dev/null
/sys/block/sda/device/device_blocked:0
/sys/block/sda/device/device_busy:0
/sys/block/sda/device/eh_timeout:10
/sys/block/sda/device/evt_capacity_change_reported:0
/sys/block/sda/device/evt_inquiry_change_reported:0
/sys/block/sda/device/evt_lun_change_reported:0
/sys/block/sda/device/evt_media_change:0
/sys/block/sda/device/evt_mode_parameter_change_reported:0
/sys/block/sda/device/evt_soft_threshold_reached:0
/sys/block/sda/device/inquiry:[
/sys/block/sda/device/inquiry:ATA     SATA SSD        02.5
/sys/block/sda/device/inquiry:` 
/sys/block/sda/device/iocounterbits:32
/sys/block/sda/device/iodone_cnt:0x51f
/sys/block/sda/device/ioerr_cnt:0x0
/sys/block/sda/device/iorequest_cnt:0x51f
/sys/block/sda/device/modalias:scsi:t-0x00
/sys/block/sda/device/model:SATA SSD        
/sys/block/sda/device/ncq_prio_enable:0
/sys/block/sda/device/queue_depth:32
/sys/block/sda/device/queue_ramp_up_period:120000
/sys/block/sda/device/queue_type:simple
/sys/block/sda/device/rev:02.5
/sys/block/sda/device/scsi_level:6
/sys/block/sda/device/state:running
/sys/block/sda/device/timeout:30
/sys/block/sda/device/type:0
/sys/block/sda/device/uevent:DEVTYPE=scsi_device
/sys/block/sda/device/uevent:DRIVER=sd
/sys/block/sda/device/uevent:MODALIAS=scsi:t-0x00
/sys/block/sda/device/unload_heads:0
/sys/block/sda/device/vendor:ATA     
/sys/block/sda/device/vpd_pg0:
/sys/block/sda/device/vpd_pg0:������
/sys/block/sda/device/vpd_pg80:�
/sys/block/sda/device/vpd_pg80:DE3507580FEE02015872
/sys/block/sda/device/vpd_pg83:�
/sys/block/sda/device/vpd_pg83:`
/sys/block/sda/device/vpd_pg83:DE3507580FEE02015872
/sys/block/sda/device/vpd_pg83:DATA     SATA SSD                                DE3507580FEE02015872
/sys/block/sda/device/vpd_pg89:�8
/sys/block/sda/device/vpd_pg89:linux   libata          3.004�@
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:�
/sys/block/sda/device/vpd_pg89:@
/sys/block/sda/device/vpd_pg89:�?7�
/sys/block/sda/device/vpd_pg89:?
/sys/block/sda/device/vpd_pg89:ED537085F0EE20108527
/sys/block/sda/device/vpd_pg89:9SMF205.ASATS DS                                �
/sys/block/sda/device/vpd_pg89:@
/sys/block/sda/device/vpd_pg89:/
/sys/block/sda/device/vpd_pg89:@
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:�?
/sys/block/sda/device/vpd_pg89:?
/sys/block/sda/device/vpd_pg89:��
/sys/block/sda/device/vpd_pg89:�@�
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:x
/sys/block/sda/device/vpd_pg89:x
/sys/block/sda/device/vpd_pg89:x
/sys/block/sda/device/vpd_pg89:x
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:g
/sys/block/sda/device/vpd_pg89:L
/sys/block/sda/device/vpd_pg89:D
/sys/block/sda/device/vpd_pg89:�
/sys/block/sda/device/vpd_pg89:k4	}c`i4�c`@
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:��
/sys/block/sda/device/vpd_pg89:�@�
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:@
/sys/block/sda/device/vpd_pg89:@@
/sys/block/sda/device/vpd_pg89:!
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:@
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:
/sys/block/sda/device/vpd_pg89:�
/sys/block/sda/device/vpd_pg89:�%
/sys/block/sda/device/wwid:t10.ATA     SATA SSD                                DE3507580FEE02015872