Фильтр и скопировать заголовок столбца и вставить в деталях записи (Fixed Width)

Основы

Для APU AMD интерес представляют следующие факторы.

  • Если ваша система будет использовать только вывод консоли, вы захотите использовать для нее драйвер radeon . Активная консоль, управляемая драйвером radeon , сэкономит 8 Вт по сравнению с резервным драйвером и fglrx на A10-6700 (Richland). Если консоль находится в режиме ожидания, radeon сэкономит дополнительно 2 Вт.

  • Функция Turbo Core AMD APU должна быть включена так или иначе. Вопреки тому, что думают некоторые люди, Turbo Core (которое после включения становится автономной функцией APU) отлично работает на уровне APU и имеет разумные варианты использования. Но либо драйвер radeon , либо fglrx должен присутствовать, и в обоих случаях необходимо соблюдать осторожность.

Если вы считаете, что стоит снизить энергопотребление всей системы A10-6700 Richland в режиме ожидания (включая вентиляторы, ОЗУ DDR3-1866 и один твердотельный накопитель) с 40 Вт до 30 Вт, или если вы хотите использовать полный режим Turbo Скорость ядра на более длительный срок (доступная частота Turbo Core основана на общем энергопотреблении чипа, включая графику, а также температуру), тогда вам следует позаботиться.

Все приведенные выше утверждения относятся к моему предыдущему анализу Как настроить Linux для полной поддержки управления питанием AMD APU: Turbo Core, Cool'n'Quiet, Dynamic Power Management?

Имейте в виду, что вы не всегда можете полагаться на по информации из / proc и / sys относительно фактических частот ядер вашего AMD APU. На всякий случай используйте cpufreq-aperf (либо cpupower frequency-info или cpupower monitor ) после modprobe msr .

К сожалению, до Debian Jessie 8.2 включительно, вы не получите все из APU AMD с установкой Debian из коробки .

Debian, вариант 1 : Драйвер fglrx Diver

AMD Linux fglrx включает Turbo Core, что не должно быть сюрпризом.

Однако, хотя APU демонстрируют очень разумное и полезное поведение Turbo Core со свободным драйвером Linux radeon , это не обязательно так, когда вы используете fglrx . Драйвер fglrx , по-видимому, управляет сродством ядра процессов. Может, он даже заменяет микрокод в APU. Но независимо от того, как fglrx работает на уровне детализации, вы получите следующее:

  • В APU с четырьмя ядрами, если у вас есть два процесса, требующих полной производительности, Linux запустит их на двух отдельных APU. модули. (Например, A10-6700 имеет два модуля по два ядра в каждом, и хотя каждое ядро ​​имеет небольшой индивидуальный кэш L3, оба ядра одного модуля используют один кэш L2.) Эта начальная настройка даст вам максимальную производительность, а также высокое энергопотребление. (В этом примере потребляемая мощность A10-6700 увеличится на 70 Вт.)

  • Но fglrx переместит один из процессов на второе ядро ​​другого модуля, если APU станет слишком горячим. (Это снизит энергопотребление A10-6700 на 25 Вт по сравнению с использованием обоих модулей APU.) Предположительно, это сделано для демонстрации высокой частоты ядра в течение более длительного времени. Однако перенесенный процесс, скорее всего, на мгновение фактически остановится из-за того, что кэш L2 не имеет под рукой никаких необходимых данных, и обычно производительность после миграции будет ниже из-за общего кеша L2.

  • Поскольку fglrx не принимает никаких превентивных мер для небольшого снижения частоты ядра до достижения пределов APU, он, следовательно, резко снижает частоту ядра, если процессы выполняются в течение более длительного времени. Это означает, что после всплеска вам придется жить с более низкими частотами, пока ваш APU не остынет.

За исключением демонстрации частоты ядра, поведение fglrx , на мой взгляд, несколько сомнительно; Я считаю, что вы получите лучшую общую производительность с radeon . Но если вам нужна система 2D / 3D и вы считаете такое резкое масштабирование частоты приемлемым, вы можете выбрать fglrx до Debian 7 включительно. Вы можете дополнительно выбрать fglrx для Debian 8, если вы не собираетесь использовать рабочий стол GNOME .

Debian, вариант 2: Драйвер radeon

Как уже упоминалось, драйвер radeon обеспечивает гораздо более низкое энергопотребление в консольном режиме и более плавную работу с Turbo Core.Цена, которую вам придется заплатить, - это худшая поддержка 3D.

  • Debian 6 (Squeeze): даже с Linux 3.2, доступным в качестве резервного порта, драйвер radeon не будет обрабатывать функцию Turbo Core вашего APU.

  • Debian 7 (Wheezy): Linux 3.16 доступен в качестве резервного порта. Выполните обновление до Linux 3.16 (если этому не препятствуют другие требования) и см. Ниже.

  • Debian 8 (Джесси): на основе Linux 3.16. См. ниже.

Флаг, отвечающий за обработку Turbo Core, называется bapm ; он находится в файле trinity_dpm.c драйвера radeon . До Linux 3.16 он всегда был отключен из-за проблем со стабильностью некоторых конфигураций. Начиная с Linux 3.16, были запланированы два изменения:

  • Значение для bapm может быть указано как параметр модуля (см. здесь ).

  • Значение bapm по умолчанию установлено равным 1 для систем Kaveri, Kabini и настольных систем Trinity, Richland (см. здесь ), что приводит к включению Turbo Core.

Это означает, что с текущими ядрами Linux вы, скорее всего, получите наилучшее качество (Turbo Core, энергосберегающая консоль) из коробки (например, это верно для текущих установщиков ArchLinux).

К моему большому удивлению, даже с установщиком Debian Jessie 8.2 вам нужно позаботиться о двух вещах :

  • Следуя своей политике, Debian не предоставляет требуемый микрокод по умолчанию. Вы захотите предоставить его: Добавьте non-free и contrib к соответствующим записям в / etc / apt / sources.list и запустите sudo apt-get update , а также sudo apt-get install firmware-linux-nonfree

  • Интересно, что, несмотря на значения по умолчанию 3.16, Turbo Core не работают в той же системе, в которой преуспел недавний ArchLinux. Возможно, ядро ​​Debian 3.16 слишком старое для включения значений по умолчанию, или что патч Debian для изоляции микрокода имеет некоторый побочный эффект. В любом случае Turbo Core можно включить для Debian Jessie при наличии микрокода, указав значение bapm во время загрузки: добавьте radeon.bapm = 1 к значению ] GRUB_CMDLINE_LINUX_DEFAULT в / etc / default / grub и запустите sudo update-grub

После этих двух изменений Turbo Core и низкое энергопотребление консоли сработали для меня как шарм.

1
09.03.2019, 15:46
3 ответа

Очевидно, вы хотите добавить 5-й символ каждой строки заголовка в конец каждой строки заголовка, отличной от -. В Авке:

awk 'BEGIN{OFS=FS=""} /^H/ {x = $5} /^D/ {$(NF+1) = x} 1'

или (чуть больше ввода, но без сравнения регулярных выражений)

awk 'BEGIN{OFS=FS=""} $1=="H" {x = $5} $1=="D" {$(NF+1) = x} 1'

Аналогично в Perl:

perl -F'' -ple '$_.= $x if $F[0] eq "D"; $x = $F[4] if $F[0] eq "H"'

Для умышленно извращенных

sed -e '/^H/ {p;s/.$//;h;d;}' -e '/^D/ {G;s/\n....//;}'
2
27.01.2020, 23:32

При использовании GNU awk предполагается, что не все добавляемые числа будут состоять из одной цифры

gawk 'match($0, /^H0*([0-9]+)/, m) {n = m[1]} /^D/ {$0 = $0 n} 1' file
0
27.01.2020, 23:32

Как правило, Bash не следует использовать в качестве текстового процессора, но это должно решить вашу задачу, если не опубликованы лучшие решения:

#!/bin/bash

input=/path/to/input
output=/path/to/output

while read -r record; do
    if [[ "${record:0:1}" == 'H' ]]; then
        x=$(awk -vr=${record//[[:alpha:]]/} 'BEGIN{print r / 1}')
        echo "$record"
    elif [[ -z "$record" ]]; then
        echo
    else
        echo "${record}${x}"
    fi
done <"$input" >"$output"

Будет прочитан ваш ввод строка за строкой. Если запись начинается с H, она захватит число и разделит его на 1 (, чтобы удалить ведущие нули )и сохранить это в переменную x, а затем echoзапись для выходного файла. Если запись представляет собой пустую строку, на выходе будет просто echoпустая строка. Если запись не начинается с H, она будет echoс переменной xв конце.

0
27.01.2020, 23:32

Теги

Похожие вопросы