예제 #1
0
def cmd_memdebug(settings):
    # peak memory usage (bytes on OS X, kilobytes on Linux)
    res_usage = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
    if os.uname()[0] == 'Linux':
        res_usage /= 1024; # kilobytes?
    # XXX: http://stackoverflow.com/questions/938733/total-memory-used-by-python-process
    #res_usage /= resource.getpagesize()

    db_size = os.path.getsize(os.path.realpath(settings.dbref[10:]))
    for l, v in (
            ( 'Storage Size', lib.human_readable_bytesize( db_size ) ),
            ( 'Resource Usage', lib.human_readable_bytesize(res_usage) ),
        ):
            log.std('{green}%s{default}: {bwhite}%s{default}', l, v)
예제 #2
0
def rsr_update_metafiles(prog=None, volume=None, volumedb=None, opts=None):
    log.debug("{bblack}rsr{bwhite}:update-volume{default}")
    i = 0
    for path in res.Metafile.walk(prog.pwd):
        print(path)
        i += 1
        new, updated = False, False
        metafile = res.Metafile(path)
        #if options:
        #metafile.basedir = 'media/application/metalink/'
        #if metafile.key in volumedb:
        #    metafile = volumedb[metafile.key]
        #    #log.info("Found %s in volumedb", metafile.key)
        #else:
        #    new = True
        if metafile.needs_update():
            log.note("Updating metafile for %s", metafile.path)
            metafile.update()
            updated = True
        #if updated or metafile.key not in volumedb:
        #    log.note("Writing %s to volumedb", metafile.key)
        #    volumedb[metafile.key] = metafile
        #    new = True
        if new or updated:
            #if options.persist_meta:
            #if metafile.non_zero:
            #    log.note("Overwriting previous metafile at %s", metafile.path)
            metafile.write()
            for k in metafile.data:
                print('\t'+k+':', metafile.data[k])
            print('\tSize: ', lib.human_readable_bytesize(
                metafile.data['Content-Length'], suffix_as_separator=True))
        else:
            print('\tOK')
    volume.store.sync()
예제 #3
0
def main():
    data = confparse.Values(dict(version=1))
    print "=" * 79
    data.hostid = os.popen2("hostid")[1].read().strip()
    data.date = datetime.datetime.now().isoformat()
    print "Date:", data.date  # .isoformat()
    print "Host-ID:", data.hostid
    fssttat = os.statvfs(os.sep)
    print "Filesystem:", os.sep
    print "_" * 79
    data.fs = confparse.Values(dict())
    # finding total inode stats is more involved, block is more simple
    print fssttat.f_bsize, "preferred blocksize"
    print fssttat.f_frsize, "fundamental filesystem block"
    print fssttat.f_blocks, "blocks (total, in units of f_frsize)"
    print fssttat.f_bavail, "available blocks"
    print

    fact = fssttat.f_frsize / 1024
    print "1k blocks"
    print "factor", fact
    _1kblocks = fssttat.f_blocks * fact
    _1kblocks_free = fssttat.f_bfree * fact
    _1kblocks_avail = fssttat.f_bavail * fact
    _1kblocks_used = (fssttat.f_blocks - fssttat.f_bavail) * fact
    _1kblocks_used2 = (fssttat.f_blocks - fssttat.f_bfree) * fact
    print _1kblocks
    print _1kblocks_avail, "available"
    print _1kblocks_free, "free?"
    # print _1kblocks_used, 'used'
    print _1kblocks_used2, "used2"
    print fssttat.f_bfree * fact, "free?"
    print
    print human_readable_bytesize(_1kblocks * 1024, True, False, 0), "in blocks"
    print human_readable_bytesize(_1kblocks_avail * 1024, True, False, 0), "in available blocks"
    # print human_readable_bytesize(_1kblocks_used*1024, True, False, 0), 'in used blocks'
    print human_readable_bytesize(_1kblocks_used2 * 1024, True, False, 0), "in used2 blocks"
    print

    data.fs.inodes = fssttat.f_files
    print "INodes", data.fs.inodes
    #    print fssttat.f_favail, 'inodes free' available to non-super user, same as ffree
    data.fs.inodes_used = fssttat.f_files - fssttat.f_ffree
    print "INodes-Used:", data.fs.inodes_used
    data.fs.inode_usage = int(round(data.fs.inodes_used * 100.0 / fssttat.f_files))
    print "INode-Usage:", data.fs.inode_usage, "(%)"
    data.fs.inodes_free = fssttat.f_ffree
    print "INodes-Free:", data.fs.inodes_free
    data.fs.inode_availability = int(round(fssttat.f_ffree * 100.0 / fssttat.f_files))
    print "INode-Availability:", data.fs.inode_availability, "(%)"
    print "-" * 79
    print "=" * 79
    #    if bencode:
    #        print bencode.bencode( data.copy() )

    # XXX: get a rating based on several
    # resource_space
    # resource_count
    complexity(data)
예제 #4
0
                    t, sa.query(metadata.tables[t].count()).all()[0][0])
        except Exception, e:
            log.err("Count failed for %s: %s", t, e)

    # peak memory usage (bytes on OS X, kilobytes on Linux)
    res_usage = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
    if os.uname()[0] == 'Linux':
        res_usage /= 1024; # kilobytes?
    # XXX: http://stackoverflow.com/questions/938733/total-memory-used-by-python-process
    #res_usage /= resource.getpagesize()

    # FIXME: does not use dbref according to settings, may fail/report wrong file
    db_size = os.path.getsize(os.path.expanduser(__db__))

    for l, v in (
            ( 'Storage Size', lib.human_readable_bytesize( db_size ) ),
            ( 'Resource Usage', lib.human_readable_bytesize(res_usage) ),
        ):
            log.std('{green}%s{default}: {bwhite}%s{default}', l, v)

    log.std('\n{green}info {bwhite}OK{default}')


def cmd_list(settings):
    """
        List to root tags.
    """
    sa = get_session(settings.dbref, metadata=metadata)
    roots = sa.query(Tag).filter(Tag.contexts == None).all()
    for root in roots:
        print(root.name)