Hello,

Consider the following function:

def check_s3_refcounts():
    """Check s3 object reference counts"""

    global found_errors
    log.info('Checking S3 object reference counts...')

    for (key, refcount) in conn.query("SELECT id, refcount FROM s3_objects"):

        refcount2 = conn.get_val("SELECT COUNT(inode) FROM blocks WHERE 
s3key=?",
                                 (key,))
        if refcount != refcount2:
            log_error("S3 object %s has invalid refcount, setting from %d to 
%d",
                      key, refcount, refcount2)
            found_errors = True
            if refcount2 != 0:
                conn.execute("UPDATE s3_objects SET refcount=? WHERE id=?",
                             (refcount2, key))
            else:
                # Orphaned object will be picked up by check_keylist
                conn.execute('DELETE FROM s3_objects WHERE id=?', (key,))

When I ran cProfile.Profile().runcall() on it, I got the following
result:

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1 7639.962 7639.962 7640.269 7640.269 fsck.py:270(check_s3_refcounts)

So according to the profiler, the entire 7639 seconds where spent
executing the function itself.

How is this possible? I really don't see how the above function can
consume any CPU time without spending it in one of the called
sub-functions.


Puzzled,
        
   -Nikolaus

-- 
 »Time flies like an arrow, fruit flies like a Banana.«

  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to