[Bug 47431] Multiple applications and games show too high CPU usage and UI slowness/ lag with wine-4.11-84-g074abfe097 ( EnumDisplayMonitors implementation uses expensive registry accesses)
wine-bugs at winehq.org
wine-bugs at winehq.org
Sun Jun 30 03:18:36 CDT 2019
https://bugs.winehq.org/show_bug.cgi?id=47431
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Version|unspecified |4.11
CC| |focht at gmx.net
Summary|Steam and wineserver too |Multiple applications and
|high CPU usage |games show too high CPU
| |usage and UI slowness/lag
| |with
| |wine-4.11-84-g074abfe097
| |(EnumDisplayMonitors
| |implementation uses
| |expensive registry
| |accesses)
--- Comment #2 from Anastasius Focht <focht at gmx.net> ---
Hello folks,
confirming. It affects the performance of various apps. In one case, 'Total
Commander' (https://www.ghisler.com/) it adds over 20 seconds to the startup
until the main user-interface is shown. Also during runtime there is noticeable
lag.
--- snip ---
$ WINEDEBUG=+seh,+loaddll,+timestamp,+relay,+x11drv,+system wine64
TOTALCMD64.EXE /i="c:\\totalcmd\\wincmd.ini" /F="c:\\totalcmd\\wcx_ftp.ini"
>>log.txt 2>&1
...
1144.903:0071:Call user32.GetClientRect(000202de,01cca2b0) ret=00887a51
1144.903:0071:Ret user32.GetClientRect() retval=00000001 ret=00887a51
1144.903:0071:Call user32.GetPropA(000202de,0000c03c) ret=0092d25c
1144.903:0071:Ret user32.GetPropA() retval=01d1afa0 ret=0092d25c
1144.903:0071:Call user32.GetWindowPlacement(000202de,01cca118) ret=0088912f
1144.903:0071:Ret user32.GetWindowPlacement() retval=00000001 ret=0088912f
1144.903:0071:Call user32.GetWindowRect(000202de,01cca108) ret=0088917a
1144.903:0071:Ret user32.GetWindowRect() retval=00000001 ret=0088917a
1144.903:0071:Call user32.MonitorFromRect(01cc9f98,00000002) ret=0093d293
1144.903:0071:trace:system:nulldrv_EnumDisplayMonitors ((nil), (nil),
0x7f8456d7cc00, 0x1cc9d80)
1144.903:0071:Call
setupapi.SetupDiGetClassDevsW(7f8456dc0f20,00000000,00000000,00000000)
ret=7f8456d7eac8
1144.903:0071:Call ntdll.RtlAllocateHeap(00010000,00000000,00000030)
ret=7f84546075af
1144.903:0071:Ret ntdll.RtlAllocateHeap() retval=01dd8d80 ret=7f84546075af
1144.903:0071:Call advapi32.RegCreateKeyExW(ffffffff80000002,7f845464ad80
L"System\\CurrentControlSet\\Enum",00000000,00000000,00000000,00020019,00000000,01cc95f0,00000000)
ret=7f845460609c
...
1144.903:0071:Ret advapi32.RegCreateKeyExW() retval=00000000 ret=7f845460609c
1144.903:0071:Call
advapi32.RegEnumKeyExW(000270dc,00000000,01cc9600,01cc95ec,00000000,00000000,00000000,00000000)
ret=7f8454606149
...
1144.903:0071:Ret advapi32.RegEnumKeyExW() retval=00000000 ret=7f8454606149
1144.903:0071:Call advapi32.RegOpenKeyExW(000270dc,01cc9600
L"DISPLAY",00000000,00020019,01cc95f8) ret=7f8454606173
...
1144.904:0071:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=7f8454606173
1144.904:0071:Call
advapi32.RegEnumKeyExW(000270e0,00000000,01cc9170,01cc8f64,00000000,00000000,00000000,00000000)
ret=7f84546054c9
...
1144.904:0071:Call advapi32.RegCreateKeyExW(ffffffff80000002,7f845464ad80
L"System\\CurrentControlSet\\Enum",00000000,00000000,00000000,000f003f,00000000,01cc8d78,00000000)
ret=7f8454604ea1
...
1144.904:0071:Ret advapi32.RegCreateKeyExW() retval=00000000 ret=7f8454604ea1
1144.904:0071:Call advapi32.RegCreateKeyExW(000270f4,0011f4f0
L"DISPLAY\\DEFAULT_MONITOR\\0000&0000",00000000,00000000,00000000,0002001f,00000000,01cc8d80,00000000)
ret=7f8454605313
...
1144.904:0071:Call advapi32.RegSetValueExW(000270fc,7f845464af80
L"ClassGUID",00000000,00000001,01cc8d80,0000004e) ret=7f84546030b7
...
1144.905:0071:Ret setupapi.SetupDiGetClassDevsW() retval=01dd8d80
ret=7f8456d7eac8
1144.905:0071:Call setupapi.SetupDiEnumDeviceInfo(01dd8d80,00000000,01cc9c50)
ret=7f8456d7eba2
1144.905:0071:Ret setupapi.SetupDiEnumDeviceInfo() retval=00000001
ret=7f8456d7eba2
1144.905:0071:Call
setupapi.SetupDiGetDevicePropertyW(01dd8d80,01cc9c50,7f8456dbf770,01cc9c20,01cc9c1c,00000004,00000000,00000000)
ret=7f8456d7eb23
...
1144.905:0071:Ret advapi32.RegQueryValueExW() retval=00000000 ret=7f84546112ee
1144.905:0071:Ret setupapi.SetupDiGetDevicePropertyW() retval=00000001
ret=7f8456d7eb66
1144.905:0071:trace:system:nulldrv_GetMonitorInfo (0x1, 0x1cc9a50)
1144.905:0071:Call
setupapi.SetupDiGetClassDevsW(7f8456dc0f20,00000000,00000000,00000000)
ret=7f8456d7e1fa
...
1144.908:0071:Ret setupapi.SetupDiDestroyDeviceInfoList() retval=00000001
ret=7f8456d7ebb2
1144.908:0071:trace:system:MonitorFromRect (1031,245)-(1464,265) flags 2
returning 0x1
1144.908:0071:Ret user32.MonitorFromRect() retval=00000001 ret=0093d293
...
--- snip ---
All these registry accesses hurt the app performance a lot when specific user32
API is called very often, such as 'user32.MonitorFromRect()'.
https://web.archive.org/web/20190412204700/https://totalcommander.ch/win/tcmd922ax64.exe
$ sha1sum tcmd922ax64.exe
0434912ab8ec1ac38aa7c2d00a06ba8e5f843c8f tcmd922ax64.exe
$ du -sh tcmd922ax64.exe
5.0M tcmd922ax64.exe
$ wine-4.11-192-g90a1e5d943
Regards
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list