Есть ли способ оптимизировать мой демон?

Единственное место, где я видел эту информацию, это в virt-manager и в XML-файле ВМ, когда вы их сбрасываете.

выдержка - Источник: x86 Virtualization

Ранее носивший кодовое название "Vanderpool", VT-x представляет собой технологию Intel для виртуализации на платформе x86. 13 ноября 2005 года Intel выпустила две модели Pentium 4 (модели 662 и 672) в качестве первых процессоров Intel с поддержкой VT-x. Флаг процессора для VT-x - "vmx"; в Linux это можно проверить через /proc/cpuinfo, а в Mac OS X - через sysctl machdep.cpu.features.[19]

Итак, искомый флаг - vmx.

CLI

Пример

$ sudo virsh dumpxml visualstudio | grep -A 10 cpu
  2
  
    hvm
    
  
  
    
    
    
  
  

Итак, в приведенном выше выводе вы ищете функцию под названием vmx. Если ее нет, значит она отключена и/или не поддерживается.

GUI

Пример

ss #1

Обратите особое внимание на вашу конкретную версию KVM/virsh, поскольку многие функции доступны только в определенных версиях. Дополнительные сведения см. в этом руководстве под названием: Возможности гипервизора.

ПРИМЕЧАНИЕ: В приведенном выше выводе, если функция обозначена как off, то она не отключена, если написано on, то она включена.

Ссылки

3
30.03.2019, 21:58
1 ответ

Единственное, что я думаю сделать с этим сценарием (, который я не тестировал, поскольку я не работаю в системе Unix с X, и у меня нет монитора HDMI ), кроме его запуска каждую секунду (, что звучит как излишество ), заключается в применении к ней принципа DRY . Это означало бы рефакторинг, чтобы он вызывал только xrandrи pactlв одном месте цикла (, за исключением дополнительного вызова xrandrв тесте ):

.
#!/bin/sh

intern=eDP1
extern=DP1

while true; do
    if xrandr | grep -q -F -e "$extern disconnected"; then
        output_on=$intern
        output_off=$extern
        profile=analog
    else
        output_on=$extern
        output_off=$intern
        profile=hdmi
    fi

    if [ "$previous_profile" != "$profile" ]; then
        xrandr --output "$output_off" --off \
               --output "$output_on" --auto

        pactl set-card-profile 0 "output:$profile-stereo+input:analog-stereo"

        previous_profile=$profile
    fi

    sleep 1
done

Таким образом, вам нужно только изменить параметры вызовов xrandrи pactlв одном месте, и вам не нужно помнить об обновлении нескольких строк кода.

Поскольку скрипт не использует никакихbash-специфических функций, я также изменил оболочку на /bin/sh, которая может быть более легкой -по весу, чем bash.Вы можете явно указать его на исполняемый файл оболочки dash.

Вызов grepисправлен таким образом, что он не производит никаких выходных данных(-q)и так что он выполняет сравнение строк, а не сопоставление с регулярным выражением(-F). -eсообщает grep, что следующее в командной строке — шаблон поиска. Как правило, хорошо использовать -e, если первая вещь в шаблоне — расширение переменной, так как значение, начинающееся с -, может запутать утилиту.

Я также убедился, что вызовы xrandrи pactlвыполняются а не , если значение переменной profileне изменяется между итерациями.

3
27.01.2020, 21:20

Теги

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