[Wine] Big files; Slow I/O

L. Rahyen research at science.su
Tue Nov 27 07:40:52 CST 2007


On Tuesday November 27 2007 12:36, Jean-Michel Bruenn wrote:
> Hello,
>
> this problem still isn't fixed. Nobody knows what to do and what it
> could be. Not in IRC, not in Bugzilla nor here. My last try: anyone
> else here some ideas? Profiling shows that there are a lot of
> "HeapAlloc" and shouldn't be. (Please take a look in the profiling logs
> in one of my previous mails)

	That's because this problem is "hidden". For example if poor performance is 
because of HeapAlloc() calls then this isn't useful information by itself - 
we need to know what function is calling it so much times! What to do next? 
Try to find out what functions are calling HeapAlloc() and how much times. 
How? Use Valgrind.
	Generally Valgrind is excellent and useful tool but unfortunately it is 
*terrible* for profiling DirectX games (not only because of big overhead but 
it also may crash or prevent a game from working correctly). However even if 
it fail to work perfectly it *may* give some useful clues in its logs.
	Install recent Valgrind and run your game like this:

rm -f callgrind.out.*;
valgrind --trace-children=yes --tool=callgrind game.exe

	If you cannot exit from game correctly kill it (the game *not* Valgrind). 
Then open non-empty callgrind.out.* files (for simple single-process games 
without threads you will have one big callgrind.out.*) in kcachegrind. Please 
note that kcachegrind can open only one file at a time (but you can open 
multiple instances of it of course).
	Now (hopefully) you can view visualized "Call graph" for any CPU-time 
expensive function and you can easily find out what procedures are calling 
it.
	If you will post any callgrind.out.* files make sure to compress them with 
bz2.


	If Valgrind fail to work for you, try to use OProfile to create call-graph. 
Personally, I never did this but I can give some useful links:

http://oprofile.sourceforge.net/doc/interpreting-callgraph.html
http://oprofile.sourceforge.net/patches/
http://ipaqprofiling.blogspot.com/2006/05/vizualizing-oprofile-call-graph-report.html

	This is what I found after quick search. I've never used OProfile for 
creating call-graphs so I don't know how useful they are in practice.
	At least call-graphs from Valgrind are very useful but as I said it may not 
work for some games at all.



More information about the wine-users mailing list