Hi Nable,

1. thank you for the patch. Command line testing shows that it does
lower the priority for PulseAudio 5.0 on Windows to "normal".
PulseAudio 1.1 ignores the argument and remains at "high" priority,
even though --help states that it recognizes the argument. 0.9.6
defaults to normal priority anyway. None of them refuse to start when
the argument is passed though.

2. I will incorporate your patch (it's only 1 line after all,) but
after talking with the PulseAudio developers, I will extend it so that
"normal" priority will only be set on Windows XP and Server 2003 /
Server 2003 R2. On Windows Vista / server 2008 and later, we will
continue to default to "high" priority.
(You are welcome to extend the patch to do this, or I will do extend
it later today or tomorrow.)

3. Right now I cannot test the patch with x2goclient because the
WIndows build VM has a networking problem. Mike#1 will fix that
problem sometime this week.

4. My testing reveals the following:
a. I am able to reproduce this bug. See setup #2 below.
b. I encountered a different bug with the virtual hardware (setup #1),
which is fixed by switching to a different sound driver (setup #2). I
will clone this bug report for my setup #1 bug.
c. This bug does not result in high CPU usage until audio is playing,
unlike my bug.
d. Manually  lowering the priority in task manager does appear to be a
valid workaround.

5. All my test details:

setup #1:
Note: default sound driver. I think I have a driverpacks.net driver
pack installed though, so it may not be the default driver for XP
without said driver pack.
Host & Hypervisor: Fedora 20 w/ KVM/virt-manager
VM accessed via: VirtViewer 0.6.0 64-bit for Windows w/ the SPICE protocol
Guest OS: Windows XP SP3 32-bit
vCPUs : 2 (host has 4 cores, core i5 750)
Sound setting in virt-manager: ac97
Sound adapter according to Windows: Intel(r) AC'97 Audio Controller -
SIgmaTel Codec
Driver Provider: SigmaTel
Driver Date: 12/20/2001
Driver Version: 5.10.0.7159

Results with: PulseaAudio 5.0, PulseAudio 1.1, and PulseAudio 0.9.6
launched from the command-line:
The combined CPU usage of pulseaudio.exe + "System" is very high, even
at normal priority, and the VM is extremely slow overall. This occurs
before any sound as playing. In other words, as the process is
started, the CPU usage immediately goes up and the VM immediately
becomes extremely slow. The combined CPU usage is always greater than
or equal to 1 CPU core.See #1 for notes on the behavior of the
priority. And yes, "System" CPU usage is normally 0% or just above 0%,
when pulseaudio.exe is not running.
The attached logs are from said results.

Results with x2goclient 4.0.2.0 (PulseAudio 5.0):
X2Go client GUI is extremely slow for same reason as on the
command-line. Cannot test any further.


setup #2
Note: same as before, except for a different sound driver:
Host & Hypervisor: Fedora 20 w/ KVM/virt-manager
VM accessed via: VirtViewer 0.6.0 64-bit for Windows w/ the SPICE protocol
Guest OS: Windows XP SP3 32-bit
vCPUs : 2 (host has 4 cores, core i5 750)
Sound setting in virt-manager: ac97
Sound adapter according to Windows: Intel(r) 82801AA AC'97 Audio Controller
Driver Provider: Microsoft
Driver Date: 7/1/2001
Driver Version: 5.1.2535.0

Results with: PulseaAudio 5.0, PulseAudio 1.1, and PulseAudio 0.9.6
launched from the command-line:
Whether I have normal priority or high priority, there is no high CPU
usage for either process, and no VM slowdown.

Results with x2goclient 4.0.2.0 (PulseAudio 5.0):
I reproduced this bug reported by Nable. I also observed that lowering
PulseAudio to normal fixes the problem. Only 1 vCPU was maxed out for
me (Nable had single core.) Also, unlike my problem with setup #1, the
VM is not extremely slow. Also, unlike my problem setup #1, CPU usage
is not high until audio is playing. Also, unlike my problem on
setup#1, "System's usage is 0% or a few % like normal.  There seems to
be a 1 second delay in audio, but that may be due to me accessing the
VM over Virt-Viewer. Also, the delay occurs at high priority.

-Mike#2

On Sun, Jun 29, 2014 at 11:47 AM, Nable 80
<[email protected]> wrote:
> Hi Mike!
>
>> Our PA expert will take a look at that (I hope!).
> I've attached possible workaround, although I'm not sure if it's acceptable.
>
> _______________________________________________
> x2go-dev mailing list
> [email protected]
> http://lists.x2go.org/listinfo/x2go-dev
C:\pulseaudio-0.9.6-1.win32\pulseaudio-0.9.6>pulseaudio.exe --verbose 
--high-priority=no --exit-idle-time=-1 -n -F "c:\config.pa"
W: pulsecore/random.c: failed to get proper entropy. Falling back to seeding 
with current time.
W: pulsecore/core-util.c: secure directory creation not supported on Win32.
W: pulsecore/core.c: failed to allocate shared memory pool. Falling back to a 
normal memory pool.
Unable to convert, filtering
E: pulsecore/socket-server.c: socket(PF_INET6): Invalid argument
I: pulsecore/protocol-native.c: loading cookie from disk.
I: pulsecore/module.c: Loaded "module-native-protocol-tcp" (index: #0; 
argument: "port=4720").
Unable to convert, filtering
E: pulsecore/socket-server.c: socket(PF_INET6): Invalid argument
I: pulsecore/module.c: Loaded "module-esound-protocol-tcp" (index: #1; 
argument: "port=4721").
I: pulsecore/source.c: created 0 "wave_input" with sample spec "s16le 2ch 
44100Hz"
I: pulsecore/sink.c: created 0 "wave_output" with sample spec "s16le 2ch 
44100Hz"
I: pulsecore/source.c: created 1 "wave_output.monitor" with sample spec "s16le 
2ch 44100Hz"
I: pulsecore/module.c: Loaded "module-waveout" (index: #2; argument: "").
I: daemon/main.c: Daemon startup complete.
I: daemon/main.c: Got signal SIGINT.
I: daemon/main.c: Exiting.
I: daemon/main.c: Daemon shutdown initiated.
I: pulsecore/module.c: Unloading "module-native-protocol-tcp" (index: #0).
I: pulsecore/module.c: Unloaded "module-native-protocol-tcp" (index: #0).
I: pulsecore/module.c: Unloading "module-esound-protocol-tcp" (index: #1).
I: pulsecore/module.c: Unloaded "module-esound-protocol-tcp" (index: #1).
I: pulsecore/module.c: Unloading "module-waveout" (index: #2).
I: pulsecore/sink.c: freed 0 "wave_output"
I: pulsecore/source.c: freed 1 "wave_output.monitor"
I: pulsecore/source.c: freed 0 "wave_input"
I: pulsecore/module.c: Unloaded "module-waveout" (index: #2).
I: daemon/main.c: Daemon terminated.

C:\pulseaudio-0.9.6-1.win32\pulseaudio-0.9.6>

Attachment: config.test.pa
Description: Binary data

C:\pulse1.1\pulse>pulseaudio.exe --verbose --high-priority=no 
--exit-idle-time=-1 -n -F "c:\config.pa"
I: [(null)] pulsecore/core-util.c: Successfully gained high priority class.
I: [(null)] daemon/main.c: This is PulseAudio 1.1
I: [(null)] daemon/main.c: Page size is 4096 bytes
I: [(null)] daemon/main.c: Machine ID is mothership-xp.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on 
Win32.
I: [(null)] daemon/main.c: Using runtime directory C:\Documents and 
Settings\mike.DEPAULO\.pulse\mothership-xp-runtime.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on 
Win32.
I: [(null)] daemon/main.c: Using state directory C:\Documents and 
Settings\mike.DEPAULO\.pulse.
I: [(null)] daemon/main.c: Using modules directory 
C:\pulse1.1\pulse\lib\pulse-1.1\modules.
I: [(null)] daemon/main.c: Running in system mode: no
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on 
Win32.
W: [(null)] pulsecore/pid.c: Stale PID file, overwriting.
I: [(null)] daemon/main.c: Fresh high-resolution timers available! Bon appetit!
W: [(null)] pulsecore/core.c: failed to allocate shared memory pool. Falling 
back to a normal memory pool.
I: [(null)] pulsecore/cpu-x86.c: CPU flags: CMOV MMX SSE SSE2 SSE3
I: [(null)] pulsecore/svolume_mmx.c: Initialising MMX optimized volume 
functions.
I: [(null)] pulsecore/remap_mmx.c: Initialising MMX optimized remappers.
I: [(null)] pulsecore/svolume_sse.c: Initialising SSE2 optimized volume 
functions.
I: [(null)] pulsecore/remap_sse.c: Initialising SSE2 optimized remappers.
I: [(null)] pulsecore/sconv_sse.c: Initialising SSE2 optimized conversions.
I: [(null)] pulsecore/svolume_orc.c: Initialising ORC optimized volume 
functions.
E: [(null)] pulsecore/socket-server.c: socket(PF_INET6): No error
I: [(null)] pulsecore/module.c: Loaded "module-native-protocol-tcp" (index: #0; 
argument: "port=4720 auth-cookie=C:\\.pulse-cookie").
E: [(null)] pulsecore/socket-server.c: socket(PF_INET6): No error
I: [(null)] pulsecore/module.c: Loaded "module-esound-protocol-tcp" (index: #1; 
argument: "port=4721").
I: [(null)] pulsecore/source.c: Created source 0 "wave_input" with sample spec 
s16le 2ch 44100Hz and channel map front-left,front-right
I: [(null)] pulsecore/source.c:     device.icon_name = "audio-input-microphone"
I: [(null)] pulsecore/sink.c: Created sink 0 "wave_output" with sample spec 
s16le 2ch 44100Hz and channel map front-left,front-right
I: [(null)] pulsecore/sink.c:     device.icon_name = "audio-card"
I: [(null)] pulsecore/source.c: Created source 1 "wave_output.monitor" with 
sample spec s16le 2ch 44100Hz and channel map front-left,front-right
I: [(null)] pulsecore/source.c:     device.description = "Monitor of 
wave_output"
I: [(null)] pulsecore/source.c:     device.class = "monitor"
I: [(null)] pulsecore/source.c:     device.icon_name = "audio-input-microphone"
I: [(null)] pulsecore/core-util.c: Successfully enabled 
THREAD_PRIORITY_TIME_CRITICAL scheduling for thread.
I: [(null)] pulsecore/module.c: Loaded "module-waveout" (index: #2; argument: 
"").
I: [(null)] daemon/main.c: Daemon startup complete.
I: [(null)] daemon/main.c: Got signal SIGINT.
I: [(null)] daemon/main.c: Exiting.
I: [(null)] daemon/main.c: Daemon shutdown initiated.
I: [(null)] pulsecore/module.c: Unloading "module-native-protocol-tcp" (index: 
#0).
I: [(null)] pulsecore/module.c: Unloaded "module-native-protocol-tcp" (index: 
#0).
I: [(null)] pulsecore/module.c: Unloading "module-esound-protocol-tcp" (index: 
#1).
I: [(null)] pulsecore/module.c: Unloaded "module-esound-protocol-tcp" (index: 
#1).
I: [(null)] pulsecore/module.c: Unloading "module-waveout" (index: #2).
I: [(null)] pulsecore/sink.c: Freeing sink 0 "wave_output"
I: [(null)] pulsecore/source.c: Freeing source 1 "wave_output.monitor"
I: [(null)] pulsecore/source.c: Freeing source 0 "wave_input"
I: [(null)] pulsecore/module.c: Unloaded "module-waveout" (index: #2).
I: [(null)] daemon/main.c: Daemon terminated.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on 
Win32.

C:\pulse1.1\pulse>
C:\Program Files\x2goclient\pulse>pulseaudio.exe --verbose --high-priority=no 
--exit-idle-time=-1 -n -F "c:\config.pa"
I: [(null)] daemon/main.c: This is PulseAudio 5.0
I: [(null)] daemon/main.c: Page size is 4096 bytes
I: [(null)] daemon/main.c: Machine ID is mothership-xp.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on 
Win32.
I: [(null)] daemon/main.c: Using runtime directory C:\Documents and 
Settings\mike.DEPAULO\.config\pulse\mothership-xp-runtime.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on 
Win32.
I: [(null)] daemon/main.c: Using state directory C:\Documents and 
Settings\mike.DEPAULO\.config\pulse.
I: [(null)] daemon/main.c: Using modules directory C:\Program 
Files\x2goclient\pulse\lib\pulse-5.0\modules.
I: [(null)] daemon/main.c: Running in system mode: no
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on 
Win32.
I: [(null)] daemon/main.c: Fresh high-resolution timers available! Bon appetit!
W: [(null)] pulsecore/core.c: failed to allocate shared memory pool. Falling 
back to a normal memory pool.
I: [(null)] pulsecore/cpu-x86.c: CPU flags: CMOV MMX SSE SSE2 SSE3
I: [(null)] pulsecore/svolume_mmx.c: Initialising MMX optimized volume 
functions.
I: [(null)] pulsecore/remap_mmx.c: Initialising MMX optimized remappers.
I: [(null)] pulsecore/svolume_sse.c: Initialising SSE2 optimized volume 
functions.
I: [(null)] pulsecore/remap_sse.c: Initialising SSE2 optimized remappers.
I: [(null)] pulsecore/sconv_sse.c: Initialising SSE2 optimized conversions.
I: [(null)] pulsecore/svolume_orc.c: Initialising ORC optimized volume 
functions.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on 
Win32.
E: [(null)] pulsecore/socket-server.c: socket(PF_INET6): No error
I: [(null)] pulsecore/module.c: Loaded "module-native-protocol-tcp" (index: #0; 
argument: "port=4720 auth-cookie=C:\.pulse-cookie").
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on 
Win32.
E: [(null)] pulsecore/socket-server.c: socket(PF_INET6): No error
I: [(null)] pulsecore/module.c: Loaded "module-esound-protocol-tcp" (index: #1; 
argument: "port=4721").
I: [(null)] pulsecore/source.c: Created source 0 "wave_input" with sample spec 
s16le 2ch 44100Hz and channel map front-left,front-right
I: [(null)] pulsecore/source.c:     device.description = "WaveIn on Microsoft 
Sound Mapper"
I: [(null)] pulsecore/source.c:     device.icon_name = "audio-input-microphone"
I: [(null)] pulsecore/sink.c: Created sink 0 "wave_output" with sample spec 
s16le 2ch 44100Hz and channel map front-left,front-right
I: [(null)] pulsecore/sink.c:     device.description = "WaveOut on Microsoft 
Sound Mapper"
I: [(null)] pulsecore/sink.c:     device.icon_name = "audio-card"
I: [(null)] pulsecore/source.c: Created source 1 "wave_output.monitor" with 
sample spec s16le 2ch 44100Hz and channel map front-left,front-right
I: [(null)] pulsecore/source.c:     device.description = "Monitor of WaveOut on 
Microsoft Sound Mapper"
I: [(null)] pulsecore/source.c:     device.class = "monitor"
I: [(null)] pulsecore/source.c:     device.icon_name = "audio-input-microphone"
I: [(null)] pulsecore/core-util.c: Successfully enabled 
THREAD_PRIORITY_TIME_CRITICAL scheduling for thread.
I: [(null)] pulsecore/module.c: Loaded "module-waveout" (index: #2; argument: 
"").
I: [(null)] daemon/main.c: Daemon startup complete.
I: [(null)] daemon/main.c: Got signal SIGINT.
I: [(null)] daemon/main.c: Exiting.
I: [(null)] daemon/main.c: Daemon shutdown initiated.
I: [(null)] pulsecore/module.c: Unloading "module-waveout" (index: #2).
I: [(null)] pulsecore/sink.c: Freeing sink 0 "wave_output"
I: [(null)] pulsecore/source.c: Freeing source 1 "wave_output.monitor"
I: [(null)] pulsecore/source.c: Freeing source 0 "wave_input"
I: [(null)] pulsecore/module.c: Unloaded "module-waveout" (index: #2).
I: [(null)] pulsecore/module.c: Unloading "module-esound-protocol-tcp" (index: 
#1).
I: [(null)] pulsecore/module.c: Unloaded "module-esound-protocol-tcp" (index: 
#1).
I: [(null)] pulsecore/module.c: Unloading "module-native-protocol-tcp" (index: 
#0).
I: [(null)] pulsecore/module.c: Unloaded "module-native-protocol-tcp" (index: 
#0).
I: [(null)] daemon/main.c: Daemon terminated.
W: [(null)] pulsecore/core-util.c: Secure directory creation not supported on 
Win32.

C:\Program Files\x2goclient\pulse>
_______________________________________________
x2go-dev mailing list
[email protected]
http://lists.x2go.org/listinfo/x2go-dev

Reply via email to