dront78 27.10.2012 15:21

Tips & tricksKVM + libvirt + PulseAudio

Настраиваем теплый ламповый звук

Сразу оговорюсь на ArchLinux, все пакеты свежие, может не хватать параметров в более старых версиях

Настройки PulseAudio - уменьшаем загрузку CPU
/etc/pulse/daemon.conf

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
;неплохо работает и так
high-priority = no
; аналогично предыдущему пункту
realtime-scheduling = no
; встроенные чипсеты не для меломанов
resample-method=trivial
; такая уж у меня железяка
default-sample-format = s16le
; skype меньше кушает на 48KHz
default-sample-rate = 48000
; но есть ведь и не только skype
alternate-sample-rate = 44100
; такая уж у меня железяка
default-sample-channels = 2


Настройки libvirt - прокачиваем эмулятор
/etc/libvirt/qemu.conf

 1
2
3
4
5
6
7
8
9
10
# пока люди пилят vnc sound support 
vnc_allow_host_audio = 1
# в bugzilla redhat просят настроить selinux, но проще отрубить
security_driver = "none"
# пользователь pulseaudio
user = "megauser"
# группа pulseaudio
group = "users"
# даешь меньше синих экранов
clear_emulator_capabilities = 0


Лирическое отступление на счет user/group
Если очень нужно сделать многопользовательское + pulseaudio + kvm, можно использовать system wide pulseaudio daemon. За подробностями - чем это грозит - в RTFM пульса. В текущем варианте считается что звук будет у megauser - и мне, как megauser'у этого хватает за глаза ;)

Допил xml домена
Считается, что рабочая конфигурация уже есть, надо лишь починить звук на примере ich6 hd audio, который жестко трещит, визжит и не настраивается
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<domain type="kvm" xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
<qemu:commandline>
<qemu:env name="QEMU_AUDIO_DRV" value="pa"></qemu:env>
<qemu:env name="QEMU_AUDIO_TIMER_PERIOD" value="100"></qemu:env>
<qemu:env name="QEMU_AUDIO_DAC_FIXED_SETTINGS" value="1"></qemu:env>
<qemu:env name="QEMU_AUDIO_DAC_FIXED_FREQ" value="48000"></qemu:env>
<qemu:env name="QEMU_AUDIO_DAC_FIXED_FMT" value="S16"></qemu:env>
<qemu:env name="QEMU_AUDIO_DAC_FIXED_CHANNELS" value="2"></qemu:env>
<qemu:env name="QEMU_AUDIO_DAC_VOICES" value="1"></qemu:env>
<qemu:env name="QEMU_AUDIO_DAC_TRY_POLL" value="0"></qemu:env>
<qemu:env name="QEMU_AUDIO_ADC_FIXED_SETTINGS" value="1"></qemu:env>
<qemu:env name="QEMU_AUDIO_ACD_FIXED_FREQ" value="48000"></qemu:env>
<qemu:env name="QEMU_AUDIO_ADC_FIXED_FMT" value="S16"></qemu:env>
<qemu:env name="QEMU_AUDIO_ADC_FIXED_CHANNELS" value="1"></qemu:env>
<qemu:env name="QEMU_AUDIO_ADC_VOICES" value="1"></qemu:env>
<qemu:env name="QEMU_AUDIO_ADC_TRY_POLL" value="0"></qemu:env>
<qemu:env name="QEMU_PA_SAMPLES" value="480"></qemu:env>
</qemu:commandline>
</domain>



В примере не показана настройка остального оборудования, доработан заголовок domain, без которого qemu:env не работает, после чего передаются значения переменных окружения qemu для текущей виртуальной машины. Получить поддерживаемые варианты можно по запросу qemu-kvm -audio-help

В кратце описание следюущее - аудиодрайвер PulseAudio с частотой 100Hz опрашивает звуковые устройства, сконфигурированные фиксировано на 48000Hz 16 бит моно/стерео с размером буфера 480 семплов. Фича поллинга отключена из-за кривых рук программистов бекенда, но можно порбовать заставить ее работать на своем устройстве.

Глюки
Теперь, когда все работает, отпишусь о небольшой донастройке
- в аудио устройствах windows в панели управления апплетом звук параметры качества везде выставлены в соответсвии с настройками, т.е. 48000Hz Stereo 16 bit
- при каждой загрузке винды микшер PulseAudio для qemu сбрасывается в состояние нулевой громкости и звука не слышно. лечится заходом в pulse audio control panel.

вот и все. у меня работает windows 7 64bit home premium official license микрофон и колонки


Тэги: kvm libvirtd Linux pulseaudio
+ 1 -
Похожие Поделиться

predator 27.10.2012 16:10 #
Я так понял, вы запускаете винду в виртуалке? Зачем?
dront78 27.10.2012 18:25 #
работа такая ;)
Sergey Vlasenko 27.10.2012 23:27 #
А почему KVM. Чем руководствовались при выборе виртуализации? Почему к примеру не Xen?

Сам просто интересуюсь вопросом виртуализации windows систем, выбрал vmware ESXi, но он к сожалению не поддерживает мое железо(
dront78 28.10.2012 11:23 #
почему KVM
- mainstream
- легковес
- проблем не больше, чем с остальными системами
- мои вопросы решает на 100%

по опыту с виртуализаторами выходит так - пока не попробуешь, не узнаешь что и как, так что если есть возможность - 10% времени стоит тратить на эксперименты
dront78 28.10.2012 11:28 #
да. еще. вроде по бенчмаркам драйверы с паравиртуализицией съедают не более 3% производительности в _худшем_ случае

для kvm это включает
- сеть
- память
- жесткий диск (при установке на отдельный раздел)

если не нужна 100% виртуализация, лучше присмотреться к lxc контейнерам типа openvz - будет еще быстрее
Sergey Vlasenko 28.10.2012 14:26 #
kvm это же не паравиртуализация в случае Windows. Это аппаратная виртуализация.
Для Windows паравиртуализации вроде нет нигде (даже в Hyper-V).

Поправьте меня если я ошибась
dront78 28.10.2012 20:51 #
паравиртуализация в данном случает относится к драйверам, о которых я написал. об этом можно почитать по ссылке
Sergey Vlasenko 28.10.2012 14:27 #
Судя по тому, что используете ArchLinux это для домашнего использования?
dront78 28.10.2012 20:52 #
для домашнего и рабочего. под виндой крутится специфичный для работы сервер
immortalday 28.10.2012 20:56 #
Хым, у меня на виртуализацию oVirt стоит, это аля виртуализация от rhel, надо сказать отличная штука. тот же kvm, и он мне както больше нравится чем xen )))