URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 90845
[ Назад ]

Исходное сообщение
"Описание работы динамического управления питанием видеокарт ..."

Отправлено opennews , 15-Июл-13 22:07 
Алекс Дойчер (Alex Deucher), разработчик из компании AMD, опубликовал (http://www.botchco.com/agd5f/?p=57) заметку о том, как работает новый код (http://www.opennet.me/opennews/art.shtml?num=37288) динамического управления питанием для видеокарт семейства Radeon.


Отмечается, что в целом управление питанием на картах Radeon сводится к тому, что в vbios зашиты таблицы состояний управления питанием (power states). Каждое состояние управления питанием состоит из нескольких различных уровней производительности (performance levels). Уровень производительности в конечном итоге сводится к установке некоторой комбинации частот и напряжений питания. Когда выбрано некоторое состояние питания, аппаратное обеспечение автоматически переключает различые уровни производительности на основании уровня нагрузки на GPU.


Состояния управления питанием характеризуют некий относительно высокоуровневый сценарий использования, актуальный в текущей ситуации. Например "работа от батареи" ("battery") или "ориентация на максимальную производительность" ("performance"). Существуют также дополнительные внутренние состояния для UVD и событий, касающихся перегрева GPU. Кроме состояний питания, драйвер также управляет отключением тактовых сигналов (clock gating), а для некоторых чипов обеспечивает и полное отключение блоков (power gating). Разработчик также приводит пример состояний для мобильного APU.

URL: http://www.botchco.com/agd5f/
Новость: http://www.opennet.me/opennews/art.shtml?num=37426


Содержание

Сообщения в этом обсуждении
"Описание работы динамического управления питанием видеокарт ..."
Отправлено commiethebeastie , 15-Июл-13 22:07 
Новое управление питание очень четко работает для серии 6xxx. Я был весьма удивлен. Надеюсь для апушек допилили.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 15-Июл-13 22:54 
Его до мержинга в -rc1 даже пару раз фиксили по мелочи.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 16-Июл-13 14:44 
Также имею честь подтвердить для HD5xxx - работает изумительно. GPU валит на повышенную частоту при малейшей нагрузке, однако без нагрузки сидит на минимуме. И никаких вам мерцаний при изменениии частот. Красота!

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 15-Июл-13 22:20 
интересно а в чем конкретно была засада раньше, когда пытались реверс-инженерить это дело.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено 123 , 15-Июл-13 22:25 
Такие параметры экспериментальным путем выясняют. BLOB тяжко реверсить.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 15-Июл-13 23:58 
Какие "такие"? Значения напряжений и частот в каждом из состояний? Да пожалуйста, берите тулзу RBE и смотрите/правьте.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 17-Июл-13 00:43 
> берите тулзу RBE и смотрите/правьте.

Проблема только в том что каждый производитель сие прописывает в меру своей дури. При том иногда дурь имеет вполне техническое подкрепление (радиатор побольше - максимальные частоты повыше, сэкономили на радиаторе - урезали частоты, etc).

Отрихтовать таблицы самому - это уже для тех кто понимает что он делает. И понимает что вписывание туда абы чего может видяху попросту угробить.


"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 15-Июл-13 23:10 
> интересно а в чем конкретно была засада раньше, когда пытались реверс-инженерить это дело.

Засада в том что
1) Достаточно навороченные наборы состояний.
2) Каждый производитель GPU пишет таблицы в меру своей дурости и они у всех разные.
3) Не все производители заполняют все состояния.
4) У старых GPU сие вроде как несколько отличается.

В результате амдшникам пришлось существенное перепилить все это дело с учетом фактических реалий.


"Описание работы динамического управления питанием видеокарт ..."
Отправлено a , 15-Июл-13 22:26 
А тем временем с момента последнего релиза каталиста прошло 84 дня.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Fyjybv , 15-Июл-13 22:46 
А по-моему это ваше amd давно дало понять, что новый открытый драйвер для них приоритетнее. А не открыли старый из-за того, что его проще переписать, чем поддерживать.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 15-Июл-13 23:12 
> А по-моему это ваше amd давно дало понять, что новый открытый драйвер
> для них приоритетнее.

Клиентура не желает возиться с блобами, по большому счету. Особенно те кому надо вычисления и прочая. А поскольку у амд вычисления на GPU с учетом архитектуры задумана как сильная сторона - довольно странно было бы пичкать клиентуру кактусами против их желания.

Тем более что китайцы помнится показали нвидии смачный фак на полмиллиарда баксов т.к. их блоб оказывается под MIPS вообще не собирается. А вот у амд с этим думается никаких особых проблем: atom bios изначально задуман платформенно-нейтральным, драйверу тоже не сильно большая разница где и что.


"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 16-Июл-13 07:42 
Какая внезапность. Двоичный драйвер для х86 не работает на МИПС. Кто бы мог подумать.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 16-Июл-13 14:46 
> Какая внезапность.

Ну а вот у китайцев - миллионы машин на основе MIPS в сфере образования и прочая. Кто бы мог подумать?


"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 16-Июл-13 16:17 
>> Какая внезапность.
> Ну а вот у китайцев - миллионы машин на основе MIPS в
> сфере образования и прочая. Кто бы мог подумать?

И чо? Это голубая пичаль китайцев так-то.


"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 16-Июл-13 19:33 
> И чо? Это голубая пичаль китайцев так-то.

Китайцы готовы платить звонкой монетой. Поэтому большой вопрос у кого в результате будет печаль. Плох тот капиталист который кладет х... на миллионую клиентуру.


"Описание работы динамического управления питанием видеокарт ..."
Отправлено Фтщтнь , 16-Июл-13 21:03 
> А по-моему это ваше amd давно дало понять, что новый открытый драйвер
> для них приоритетнее. А не открыли старый из-за того, что его
> проще переписать, чем поддерживать.

Все гораздо проще, в свете не очень хорошего финансового состояния AMD, им проще разрабатывать драйвера за счет сообщества.


"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 19-Июл-13 00:28 
Если и приоритетнее, то только по одной причине: можно слать патчи раз в полгода и некому будет ныть "а пачиму вы драйвер не выпускаете???".

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 16-Июл-13 00:52 
47 с момента беты.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 16-Июл-13 11:21 
Оговорка по Тихоокеанскому рубежу ? =) Сегодня мы остановим проприетарщину, сегодня опенсорс начнет последнюю битву !

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 16-Июл-13 13:29 
Никаких оговорок. AMD не разрабатывает проприетарный драйвер и изредка высылает патчи в открытый. Действительно, образец поддержки своих клиентов.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 16-Июл-13 14:47 
> открытый. Действительно, образец поддержки своих клиентов.

В данном случае они сделали ровно то что от них хотели. Алилуйя, теперь у радеонов отличное управление питанием.


"Описание работы динамического управления питанием видеокарт ..."
Отправлено linvinus , 16-Июл-13 11:15 
Кто нибудь ещё тестил?
у меня на ноуте карта серии 4xxx.
большой разницы не заметил.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 16-Июл-13 15:14 
> Кто нибудь ещё тестил?

Я тестил. На десктопном HD5xxx работает изумительно. Температура GPU сама понижается на 10 градусов относительно загрузки "все по дефолту". А при малейшей нагрузке GPU лезет по частотам вверх - скорость 3D операций не пострадала.

> у меня на ноуте карта серии 4xxx.
> большой разницы не заметил.

Вы ядру скомандовали radeon.dpm=1 в командлайне? Если да - покажите dmesg, в месте где идет вывод такого добра:

[   4.112767] == power state 0 ==
[    4.112769]     ui class: none
[    4.112771]     internal class: boot
[    4.112773]     caps: video
.... (для всех режимов)

Там же написано и какой power state был при загрузке и на какой драйвер изволил переключиться опосля.

Понаблюдать за щелканием частотами можно как-то так:
while (true) do cat /sys/kernel/debug/dri/0/radeon_pm_info; sleep 2; done;

Температуру GPU можно посмотреть в файлике типа
/sys/class/drm/card0/device/hwmon/hwmon3/temp1_input

Если кажется что текущий power state вам не по вкусу, переключиться на другой можно наэхав нужный в файлик типа /sys/class/drm/card0/device/power_dpm_state

Если карточка не первая в системе то /0/ и /card0/ придется заменить на фактические значения. А hwmon3 - это в моей системе. В других может отличаться. А еще при активном композитинге и прочая - GPU может лезть вверх и от активного вывода на терминал - потому и задержка в 2 сек присобачена.

В целом наблюдения за работой фичи произвели весьма и весьма позитивное впечатление пока-что.


"Описание работы динамического управления питанием видеокарт ..."
Отправлено linvinus , 16-Июл-13 23:09 
прошу прощения, промахнулся, мой ответ ниже.

"Описание работы динамического управления питанием видеокарт ..."
Отправлено linvinus , 16-Июл-13 23:10 
> прошу прощения, промахнулся, мой ответ ниже.

и ещё

cat /sys/kernel/debug/dri/0/radeon_pm_info
Debugfs support not implemented for this asic

чтобы это значило? гугл молчит


"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 17-Июл-13 00:41 
> Debugfs support not implemented for this asic
> чтобы это значило? гугл молчит

То что для данного чипа статистика в драйвере не реализована :(. По логике вещей это баг. Хоть простому смертному и не нужны эти цифры, но все-таки...


"Описание работы динамического управления питанием видеокарт ..."
Отправлено anoser_anon , 18-Июл-13 08:12 
http://cgit.freedesktop.org/~agd5f/linux/commit/?h=drm-fixes...

добавили


"Описание работы динамического управления питанием видеокарт ..."
Отправлено linvinus , 16-Июл-13 23:08 
Спасибо что откликнулись.
каталог /sys/class/drm/card0/device/hwmon у меня отсутствует
всё делал как описано в статье.
температуру меряю по показателям процессора, он у меня на одной медной шине с видеокартой.
при включении echo "battery" > /sys/class/drm/card0/device/power_dpm_state
температура падает на 1 градус.

[    2.301263] == power state 0 ==
[    2.301266]     ui class: none
[    2.301268]     internal class: boot
[    2.301271]     caps: video
[    2.301274]     uvd    vclk: 0 dclk: 0
[    2.301276]         power level 0    sclk: 50000 vddc_index: 2
[    2.301278]         power level 1    sclk: 50000 vddc_index: 2
[    2.301279]     status: c r b
[    2.301282] == power state 1 ==
[    2.301284]     ui class: performance
[    2.301285]     internal class: none
[    2.301287]     caps: video
[    2.301290]     uvd    vclk: 0 dclk: 0
[    2.301291]         power level 0    sclk: 50000 vddc_index: 2
[    2.301293]         power level 1    sclk: 50000 vddc_index: 2
[    2.301295]     status:
[    2.301296] == power state 2 ==
[    2.301298]     ui class: battery
[    2.301299]     internal class: none
[    2.301301]     caps: video
[    2.301304]     uvd    vclk: 0 dclk: 0
[    2.301305]         power level 0    sclk: 20000 vddc_index: 1
[    2.301307]         power level 1    sclk: 20000 vddc_index: 1
[    2.301309]     status:
[    2.301310] == power state 3 ==
[    2.301312]     ui class: none
[    2.301313]     internal class: uvd
[    2.301315]     caps: video
[    2.301318]     uvd    vclk: 53300 dclk: 40000
[    2.301320]         power level 0    sclk: 50000 vddc_index: 2
[    2.301321]         power level 1    sclk: 50000 vddc_index: 2
[    2.301323]     status:
[    2.301817] switching from power state:
[    2.301820]     ui class: none
[    2.301822]     internal class: boot
[    2.301825]     caps: video
[    2.301827]     uvd    vclk: 0 dclk: 0
[    2.301829]         power level 0    sclk: 50000 vddc_index: 2
[    2.301831]         power level 1    sclk: 50000 vddc_index: 2
[    2.301832]     status: c b
[    2.301835] switching to power state:
[    2.301837]     ui class: performance
[    2.301838]     internal class: none
[    2.301840]     caps: video
[    2.301843]     uvd    vclk: 0 dclk: 0
[    2.301845]         power level 0    sclk: 50000 vddc_index: 2
[    2.301847]         power level 1    sclk: 50000 vddc_index: 2
[    2.301848]     status: r
[    2.306939] [drm] radeon: dpm initialized


"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 17-Июл-13 00:37 
> Спасибо что откликнулись.

Ну меня амдшная активность проперла и я более-менее изучил вопрос.

> каталог /sys/class/drm/card0/device/hwmon у меня отсутствует
> всё делал как описано в статье.

Это датчик температуры всего лишь. Что-то припоминаю что в 4000 оно может отличаться и/или вообще опциональное, чтоли.

> температуру меряю по показателям процессора, он у меня на одной медной шине с видеокартой.

Достаточно слабая корреляция, думается. Т.е. меряется все-таки в основном температура проца.

> при включении echo "battery" > /sys/class/drm/card0/device/power_dpm_state
> температура падает на 1 градус.

Логично - в battery есть 1 уровень производительности: 200МГц. А в performance - тоже 1, но 500МГц. Логично что на 200МГц видеокарточка кушает меньше. Т.к. до проца как до жирафа - это мало заметно. Но думается батарейку экономит ощутимо (снижается частота в 2.5 раза и понижается напряжение питания).

В целом же сие есть эталонный пример убогого заполнения таблиц состояний питания производителем. Я прямо стесняюсь спросить: а в каталисте то оно чего делает с такими таблицами? Каталист же тоже не волшебник и не имеет права за пределы указанные производителем соваться.

Подозреваю что это изначально задумано производителем довольно деревянно и работает (как минимум в оффтопике) как-то так: пока к ноуту прицеплен адаптер питания, оно жарит на максимуме 500МГц ("pefrormance"). А отцепили адаптер - на 200МГц валит ("battery"). Динамическое масштабирование частоты по нагрузке в такой таблице отсутствует как класс... oO.

Я бы показал эту табличку Дейчеру (на мыло или на форониксе где-нить), думаю грохот кирпичей был бы слышен долго :). Пусть почешет репу что делать с подобным "счастьем" - когда производитель пудак и вообще динамическое масштабирование не заюзал. Реально идиoтское заполнение таблицы. Хотя мало ли, может у этого GPU или конфиги какие-то проблемы если на лету часто переключать частоты, так что производитель был вынужден перейти к такому деревянному сценарию руления питанием. С моей колокольни я могу констатировать крайне печальный набор состояний зашитый в vbios.


"Описание работы динамического управления питанием видеокарт ..."
Отправлено linvinus , 17-Июл-13 12:31 
>Достаточно слабая корреляция, думается. Т.е. меряется все-таки в основном температура проца.

согласен, но моя цель охладить процессор.
уже через год использования ноута температура процессора под нагрузкой начала подниматься до 100 градусов, так что любое понижение температуры для меня очень актуально.
ноут HP tx2550er
пока помогала периодическая чистка радиатора, но всё равно ноут горячий.

спасибо за консультацию! буду разбираться дальше


"Описание работы динамического управления питанием видеокарт ..."
Отправлено Аноним , 17-Июл-13 15:22 
> согласен, но моя цель охладить процессор.

Тогда загнать в состояние "battery", как вы и сделали. Скорость графики разумеется просядет, но если это не волнует...

> уже через год использования ноута температура процессора под нагрузкой начала
> подниматься до 100 градусов, так что любое понижение температуры для меня очень актуально.

Баллончик со сжатым воздухом для продувки радиаторов от пыли вам в руки :).

> пока помогала периодическая чистка радиатора, но всё равно ноут горячий.

Ну так это стандартные грабли ноутов - радиатор пылью забивается. Там в целом системы охлаждения хиленькие. Потому что большие системы охлаждения размещать негде, а сильно гнать воздух - соседство с турбиной истребителя пользователям не нравится. Ну вот и получается весьма компромиссное решение: или совсем дохлый процессор, или греется. Чудес не бывает. А т.к. юзается где попало + в мощном ноуте воздух продувать надо все-таки сильно, чтобы не перегревался - оно превращается в мини-пылесос. Ну и забивается кулер пылью в результате.

Если хочется любой ценой температуру скостить - тогда логично проц даунклокнуть, средствами биоса или просто порулить планировщиком в пингвине, например зарезав максимальную частоту (со всеми вытекающими, как то более тормозная работа). Думается начальный radeon кушает шибко меньше чем мощный процессор, особенно на максимуме. Но еще логичнее почистить систему охлаждения, т.к. с номинальными режимами она должна бы все-таки справляться.


"Описание работы динамического управления питанием видеокарт ..."
Отправлено linvinus , 17-Июл-13 22:46 
Да всё так и есть.
Полностью разбираю, вынимаю материнку, снимаю радиатор, чищу, собираю обратно.
проц на 500Mhz, работает firefox без флеша - температура 59-65.
сегодня ещё хард заменил на WD5000LPVT,старый st9160827as грелся сильно, этот тоже греется но ощутимо меньше.