LINUX.ORG.RU

[РЕШЕНО] Лагает звук AC97 в qemu-kvm виртуалке с WinXP

 , ,


0

1

Извиняюсь за изъезженную тему, но уже всё перепробовал…

Есть виртуальная машина QEMU+kvm, на ней стоит Win XP. Проблема - лагает звук. Эмулируемое звуковое устройство - Realtek AC97. На хосте alsa. Физически на хосте SoC Intel Haswell-ULT с интегрированным звуком. Запускаю примерно так:

QEMU_AUDIO_DRV=alsa \
qemu-system-x86_64 \
    -enable-kvm \
    -cpu host \
    -drive file=/mnt/pvt/vm/winxp.vdi,if=ide,index=0,media=disk \
    -nic user,model=virtio,hostname=winxp \
    -boot menu=on \
    -vga virtio \
    -device ac97 \
    -m 500M \
    -monitor stdio

Из того что пробовал для решения проблемы:

  • Настройка звука в QEMU - советуют ставить оф.драйвера Realtek, не помогло (в той теме речь про Win 8, я соответственно ставил икспишные)

  • Менял AC97 на ICH6 (-device intel-hda), появляется новое устройство, не знаю где взять драйвера для XP.

Я в курсе что можно пробрасывать интегрированную звуковуху в qemu, видимо это и буду делать следующим шагом, но меня просто удивляет - вроде же типичнейшее окружение для того времени и частая проблема при эмуляции ac97, форумы пестрят темами «qemu ac97 crackling sound», неужели до сих пор нет типового решения?

По-моему, тут случай корректной эмуляции. Большинство кодеков AC'97 хрипели, пердели и отваливались. Именно по этому даже сейчас звуковых карт типа live5.1 или vortex2 как грязи.

Khnazile ★★★★★ ()

Поддержка XP-оффтопа давно прекращена. Установи актуальную ОС или обнови эту.

Причин, по которым звук в XP-оффтопе может тормозить очень много. Здесь вряд ли смогут подсказать. Попробуй обратиться на винфак. Может волшебный драйвер подберут. В мастдае такое иногда прокатывает.

Novec1230 ()

Пофиксил. Теперь звук отличный. Из обсуждений в инете на данную тему, с некоторого момента понял, что проблема хрипящего звука вызвана настройками семплинга на хосте и клиенте. Вероятно можно решить играясь с семплингом в PulseAudio. Но конкретно здесь нашёл решение, которое сработало из коробки без необходимости ставить пульсу, spice и т.д.

То есть у меня оно сработало под чистой alsa + ac97 в qemu.

    QEMU_AUDIO_DRV=alsa \
    QEMU_ALSA_ADC_BUFFER_SIZE=1024 \
    QEMU_ALSA_ADC_PERIOD_SIZE=256 \
    QEMU_ALSA_DAC_BUFFER_SIZE=1024 \
    QEMU_ALSA_DAC_PERIOD_SIZE=256 \
    QEMU_AUDIO_DAC_FIXED_SETTINGS=1 \
    QEMU_AUDIO_DAC_FIXED_FREQ=44100 \
    QEMU_AUDIO_DAC_FIXED_FMT=S16 \
    QEMU_AUDIO_ADC_FIXED_FREQ=44100 \
    QEMU_AUDIO_ADC_FIXED_FMT=S16 \
    QEMU_AUDIO_DAC_TRY_POLL=1 \
    QEMU_AUDIO_ADC_TRY_POLL=1 \
    QEMU_AUDIO_TIMER_PERIOD=50 \
    qemu-system-x86_64 ... # <далее прежние опции>

SetTimerService не помогал.

Cheater ()
Ответ на: комментарий от anonymous

ШинХР плохо переносит виртуалки

Не знаю, у меня Windows XP в VirtualBox работает быстрее, чем Windows 10, на которой запущен VirtualBox. Скорость переключения контекстов в Windows XP на виртуальной машине быстрее чем в Windows 10 или Linux на реальном железе.

X512 ★★ ()
Ответ на: комментарий от anonymous

avx контекст сохраняет? нет? ну вот те и «быстрее»

Зачем сохранять не нужное, если от этого только тормоза? В процессоре есть возможность детектировать использование расширенных регистров и сохранять только если надо.

Пусть только программы, использующие AVX, тормозят.

X512 ★★ ()
Последнее исправление: X512 (всего исправлений: 1)