Oprofile, swap

John Richard Moser nigelenki at comcast.net
Tue Dec 18 08:09:50 EST 2007


I just got my OX laptop (hopefully some kid gets the other one soon... 
or not), and noticed it's slow and kind of buggy.  I think I'll get a 
$25 4GB SD card for a SWAP area...

I should run oprofile too, and have it write to the SD card.  I 
understand what an interpreted language like Python does to the CPU but 
it shouldn't be this bad... it's only going to be like 100 times slower? 
  An actual interpreter will...

  - Put pressure on the data cache as its code grows
  - ... but keep the actual interpreter (code) in cache better
  - Use a relatively large chunk of data for a look-up table
  - ... or use some convoluted and hard to maintain code
  - ... or optimally, a look-up table to start the decoding process, if
    like a CPU bytecode interpreter (Java, CIL) it has an insn + address
    mode + data (not QUITE optimal for Python, but maybe since simple
    addition and call happens)
  - Wind up doing what can easily become a multi-hundred-cycle decoding
    process for each executed bytecode insn

Python rewrites to bytecode (good, interpreting text is slow!  Multiple 
parsing!) but a lot of the main function calls in the API should be C, 
not Python (taking some of the pressure off).  This means Python should 
be doing a lot of logic in native space, rather than interpreting a lot 
(unlike Java, which had its whole library written in Java...)

I suggest taking a look at PyPy for Python, which will dynamic recompile 
Python to native code and likely give some good performance benefits.  I 
really can't stand JIT compilation and would prefer something that takes 
advantage of Mono's own facilities, to centralize the effort in the JIT 
at least (Mono has nice stuff), but IronPython is Microsoft Permissive 
License which is not OSI approved.

As for real solutions, I want to profile things and see where they're 
hanging.  I may need a Python profiler too, to get a look inside the 
Python code and see if some functions there are also bad; oprofile will 
tell me if Python itself is spending an ungodly amount of time in its 
decoder functions but that's it.

-- 
Bring back the Firefox plushy!
http://digg.com/linux_unix/Is_the_Firefox_plush_gone_for_good
https://bugzilla.mozilla.org/show_bug.cgi?id=322367



More information about the Devel mailing list