полностью отключает питание чипа nvidia
Ну, если провести простой эксперимент, то похоже, что оно-таки спит (suspended ведь именно это означает?).
Повторять не рекомендую - оно не всякий раз обратно без проблем переключается, насколько я знаю. Был баг на одной из недавних версий драйвера nvidia, из-за которого я на своей видеокарте отключил ее графически (выставил профиль Intel) и обратно так и не включил - система не грузилась после перезагрузки и вообще весело было; сейчас вот работает...#где вообще ковыряюсь:
> ls -l /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/driver/module
/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/driver/module -> ../../../../module/nvidia
#активная конфигурация:
> prime-select query
nvidia
#состояние питания:
> cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/power/runtime_status
active
> cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/power/control
on
#меняю конфигурацию:
sudo prime-select intel
#состояние питания:
> cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/power/runtime_status
active
> cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/power/control
on
#перезагружаюсь:
reboot
...
#после перезагрузки:
#активная конфигурация:
> prime-select query
intel
#состояние питания:
cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/power/runtime_status
suspended
cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/power/control
auto
#Что еще изменилось, так это симлинк на модуль ядра испарился, да в выводе lsmod | grep vidia пусто, соответственно
#кроме того, запустить nvidia-settings не получается - ругается что NVIDIA driver is not loaded :))
#Обратный переход успешно удается реализовать вводом:
sudo prime-select nvidia
Интересно что после этого сразу без перезагрузки:
> cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/power/runtime_status
active
> lsmod | grep vidia
nvidia_uvm 786432 0
nvidia_drm 40960 1
nvidia_modeset 1089536 1 nvidia_drm
nvidia 14032896 2 nvidia_uvm,nvidia_modeset
drm_kms_helper 172032 2 nvidia_drm,i915
drm 401408 12 drm_kms_helper,nvidia_drm,i915
ipmi_msghandler 53248 2 ipmi_devintf,nvidia
#И только по-прежнему:
cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/power/control
auto
#вплоть до перезагрузки, после которой все меняется к исходному состоянию
А вообще - недавно скрипт ради интереса писал, он параметры моей батареи выписывает каждые 5 сек (ток, напряжение, остаточный уровень заряда) из файлов /sys/class/power_supply/BAT0/*... Надо будет наверное сравнить в этих двух профилях время работы ноута "от" и "до" при одних и тех же нагрузках (поднять все сетевые интерфейсы, выставить одну и ту же яркость экрана, и поставить ему видео, к примеру, проигрываться - и замерить сколько он продержится от 100% до 20%, и сильно ли повлияет профиль на время работы). Сам скрипт:
#!/bin/bash
#Осталось вынести параметры в командную строку и продумать подставление дефолтных значений, если параметры не переданы
#процент заряда, считающийся "глубоким разрядом"
cap_crit=20
#процент заряда, считающийся "полным зарядом"
cap_full=40
#воспроизводимый звуковой файл:
mysound="/mnt/EXT4part/scripts/AutoBackUp/Event.ogg"
i = 0
cap_last=200
stn_last=""
buf_file="./cur_bat_log.fods"
buf='<?xml version="1.0" encoding="UTF-8"?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.spreadsheet">
<office:body>
<office:spreadsheet>
<table:calculation-settings table:automatic-find-labels="false" table:use-regular-expressions="false" table:use-wildcards="true"/>
<table:table table:name="Лист1" table:style-name="ta1">
<table:table-column table:style-name="co1" table:number-columns-repeated="7" table:default-cell-style-name="Default"/>
<table:table-row table:style-name="ro1">
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Секунда</text:p>
</table:table-cell>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Ёмкость</text:p>
</table:table-cell>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Текущий заряд</text:p>
</table:table-cell>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Напряжение</text:p>
</table:table-cell>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Ток</text:p>
</table:table-cell>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Статус</text:p>
</table:table-cell>
</table:table-row>'
#удаляем буферный файл, если он уже существует
if [ -f $buf_file ]; then rm "$buf_file"; fi
while true; do
clear
cap=`cat /sys/class/power_supply/BAT0/capacity`
chn=`cat /sys/class/power_supply/BAT0/charge_now`
vln=`cat /sys/class/power_supply/BAT0/voltage_now`
cnn=`cat /sys/class/power_supply/BAT0/current_now`
stn=`cat /sys/class/power_supply/BAT0/status`
echo -e "Ёмкость: $cap\nТекущий заряд: $chn\nНапряжение: $vln\nТок: $cnn\nСтатус: $stn"
let "i = i + 5"
#сливаем все в буфер:
buf="$buf\n"' <table:table-row table:style-name="ro1">
<table:table-cell office:value-type="float" office:value="'$i'" calcext:value-type="float">
<text:p>'$i'</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce1" office:value-type="float" office:value="'$cap'" calcext:value-type="float">
<text:p>'$cap'</text:p>
</table:table-cell>
<table:table-cell office:value-type="float" office:value="'$chn'" calcext:value-type="float">
<text:p>'$chn'</text:p>
</table:table-cell>
<table:table-cell office:value-type="float" office:value="'$$vln'" calcext:value-type="float">
<text:p>'$vln'</text:p>
</table:table-cell>
<table:table-cell office:value-type="float" office:value="'$cnn'" calcext:value-type="float">
<text:p>'$cnn'</text:p>
</table:table-cell>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>'$stn'</text:p>
</table:table-cell>
</table:table-row>'
let "os = i % 20"
if [ $os = 0 ]; then
#каждую 20-ю секунду сбрасываем дамп на диск
echo -e "$buf" >> "$buf_file"
buf=""
echo "Файл cur_bat_log.fods дополнен, буфер очищен"
fi
if [[ $cap_last < $cap_full ]]&&[[ $stn_last == "Charging" ]]&&(( $cap >= $cap_full )); then
#полностью зарядился
echo "Полностью зарядился..."
mplayer -really-quiet "$mysound" 2>/dev/null
buf=$buf"\n"' </table:table>
<table:named-expressions/>
</office:spreadsheet>
</office:body>
</office:document>'
echo -e "$buf" >> "$buf_file"
mv "$buf_file" ~/full_charge.fods
exit 0
fi
if [[ $cap_last > $cap_crit ]]&&[[ $stn_last == "Discharging" ]]&&(( $cap <= $cap_crit ))&&[[ $stn == "Discharging" ]]; then
#достигнув 20 % от маскимума выполняем сброс дампа на диск, сохраняем данные, и выключаем машину
echo "Разряжен до $cap_crit..."
mplayer -really-quiet "$mysound" 2>/dev/null
buf=$buf"\n"' </table:table>
<table:named-expressions/>
</office:spreadsheet>
</office:body>
</office:document>'
echo -e "$buf" >> "$buf_file"
mv "$buf_file" ~/full_discharge.fods
echo "Выключение машины..."
shutdown --poweroff now &
exit 0
fi
cap_last=$cap
stn_last=$stn
sleep 5
done
Кому-нибудь интересны результаты такого теста? Делиться графиками, или не надо?