[Wine] Big files; Slow I/O
L. Rahyen
research at science.su
Wed Nov 21 13:38:47 CST 2007
On Wednesday November 21 2007 17:47, Jean-Michel Bruenn wrote:
> Hello again,
>
> i tried a bit arround with debugging. Can you tell me weather these
> messages are important and related to the issue I explained before? Or
> can I safely ignore them?
In short yes, you can ignore them. Long answer below. You can find useful
advises at the end of this message.
> WINEDEBUG="+relay,+file"
>
> ERR:
> 000c:Call advapi32.RegQueryValueExW(0000009c,008a440c
> L"Territory",00000000,7c9bd780,7c9bd77c,7c9bd778) ret=0081159d
> 000c:Call advapi32.RegQueryValueExW(000000a4,008a440c
> L"Territory",00000000,7c9bd764,7c9bd760,7c9bd75c) ret=0081159d
> 000c:Call advapi32.RegQueryValueExW(0000010c,008a440c
> L"Territory",00000000,7c9bd778,7c9bd774,7c9bd770) ret=0081159d
> 000c:Call advapi32.RegQueryValueExW(0000011c,008a440c
> L"Territory",00000000,7c9bd738,7c9bd734,7c9bd730) ret=0081159d
> 000c:Call advapi32.RegQueryValueExW(0000011c,008a440c
> L"Territory",00000000,7c9bd738,7c9bd734,7c9bd730) ret=0081159d
> 000c:Call advapi32.RegQueryValueExW(0000011c,008a440c
> L"Territory",00000000,7c9bd738,7c9bd734,7c9bd730) ret=0081159d
> 000c:Call advapi32.RegQueryValueExW(0000011c,008a440c
> L"Territory",00000000,7c9bd738,7c9bd734,7c9bd730) ret=0081159d
> 000c:Call advapi32.RegQueryValueExW(00000138,008a440c
> L"Territory",00000000,7c9bd270,7c9bd26c,7c9bd268) ret=0081159d
RegQueryValueExW retrieves the type and data for the specified value name
associated with an open registry key. So it *may* be a problem only if called
during unusually slow file operations hundreds times per second and not
during typical (fast) file operations.
To be sure it is better to use profiling tools (see below for more
information).
> WARN:
> There are many warnings, mostly it's about missing .dll and .drv,
> for example:
>
> warn:file:wine_nt_to_unix_file_name L"avicap32.dll" not found
> in /root/.wine/dosdevices/c:/windows/system32
> warn:file:wine_nt_to_unix_file_name L"avicap32.dll" not found
> in /root/.wine/dosdevices/c:/windows
> warn:file:wine_nt_to_unix_file_name L"winealsa.drv" not found
> in /root/.wine/dosdevices/c:/windows/system32/drivers
> warn:file:wine_nt_to_unix_file_name L"winealsa.drv" not found
> in /root/.wine/dosdevices/c:/windows/system32/drivers
Often WINE searches multiples paths to find particular library but if at
least one search succeeds there is no error and you can ignore these warnings
(you can use "grep -v" to filter them out).
> Seems to be search paths related errors, or something like this
> Then i have some:
>
> warn:file:wine_nt_to_unix_file_name L"\\??\\C:\\windows\
> \system32\ \WSOCK32.dll" ->
> "/root/.wine/dosdevices/c:/windows/system32/wsock32.dll" required a
> case-insensitive search
This just means that "windows/system32/WSOCK32.dll" doesn't exist
but "windows/system32/wsock32.dll" does. In Windows file system there is no
difference but most Linux file systems are case-sensitive. So in such
situation case-insensitive search required (this might be slow but can be a
problem only if you search for hundreds or thousands of files per seconds).
> FIXME:
> There are only d3d and dxdiag related messages plus these:
> fixme:win:EnumDisplayDevicesW ((null),0,0x34ef70,0x00000000),
> stub!
> fixme:win:EnumDisplayDevicesW ((null),0,0x34eb2c,0x00000000),
> stub!
> fixme:devenum:DEVENUM_ICreateDevEnum_CreateClassEnumerator
> Category {cc7bfb41-f175-11d1-a392-00e0291f3959} not found
> fixme:devenum:DEVENUM_ICreateDevEnum_CreateClassEnumerator
> Category {cc7bfb46-f175-11d1-a392-00e0291f3959} not found
> fixme:imm:ImmGetIMEFileNameA (0x4090409, 0x7c9bd2c8, 260): stub
These seems to be unrelated.
* * *
I want to give you some recommendations.
First, *do not run WINE as root*! This is strongly discouraged practice. Run
it under your usual user account.
What about debugging. Because you want to find out what functions in WINE are
slow, it is bad idea to just use debugging channels and try to find them
manually. Most likely you just waste a lot of time and find nothing.
What you want to do is to profile WINE not to debug it (in fact there is no
bugs to debug in this case but some inefficiencies in the code). Therefore
proper approach is to use profiling tools to find out what functions are slow
in WINE. Read [1] for a brief introduction. Read [2] to find out how to use
callgrind tool for profiling (see page 39, "Callgrind: a call graph
profiler"); there is some other useful information in this document.
You may want to install kcachegrind and read its help files - this is useful
visual tool, you can use it with callgrind and OProfile. I really recommend
you to read its help - it's short but helpful.
Use Google to find more information.
[1]
http://www.computer.org/portal/cms_docs_ieeecs/ieeecs/Communities/students/looking/2006Fall/02.pdf
[2] http://valgrind.org/docs/iiswc2006.pdf
More information about the wine-users
mailing list