def METHOD_NAME(args):
    pidDirs = glob.glob(os.path.join(BIFROST_STATS_BASE_DIR, '*'))
    pidDirs.sort()
    for pidDir in pidDirs:
        pid = int(os.path.basename(pidDir), 10)
        contents = load_by_pid(pid)
        details = get_process_details(pid)
        cmd = get_command_line(pid)
        if cmd == '' and details['user'] == '':
            continue
        print("PID: %i" % pid)
        print("  Command: %s" % cmd)
        print("  User: %s" % details['user'])
        print("  CPU Usage: %.1f%%" % details['cpu'])
        print("  Memory Usage: %.1f%%" % details['mem'])
        print("  Elapsed Time: %s" % details['etime'])
        print("  Thread Count: %i" % details['threads'])
        print("  Rings:")
        rings = []
        ring_details = {}
        for block in contents.keys():
            if block == 'rings':
                for ring in contents[block].keys():
                    ring_details[ring] = {}
                    for key in contents[block][ring]:
                        ring_details[ring][key] = contents[block][ring][key]
                continue
            for log in contents[block].keys():
                if log not in ('in', 'out'):
                    continue
                for key in contents[block][log]:
                    if key[:4] == 'ring':
                        value = contents[block][log][key]
                        if value not in rings:
                            rings.append( value )
        for i,ring in enumerate(rings):
            try:
                dtls = ring_details[ring]
                sz, un = get_best_size(dtls['stride']*dtls['nringlet'])
                print("    %i: %s on %s of size %.1f %s" % (i, ring, dtls['space'], sz, un))
            except KeyError:
                print("    %i: %s" % (i, ring))
        print("  Blocks:")
        for block in contents.keys():
            if block == 'rings':
                continue
            rins, routs = [], []
            for log in contents[block].keys():
                if log not in ('in', 'out'):
                    continue
                for key in contents[block][log]:
                    if key[:4] == 'ring':
                        value = contents[block][log][key]
                        if log == 'in':
                            if value not in rins:
                                rins.append( value )
                        else:
                            if value not in routs:
                                routs.append( value )
            print("    %s" % block)
            if len(rins) > 0:
                print("      -> read ring(s): %s" % (" ".join(["%i" % rings.index(v) for v in rins]),))
            if len(routs) > 0:
                print("      -> write ring(s): %s" % (" ".join(["%i" % rings.index(v) for v in routs]),))
            if len(contents[block].keys()) > 0:
                print("      -> log(s): %s" % (" ".join(contents[block].keys()),))