Como ver quanta memória / cpu Unity está usando

2

Estou tentando ver quanta memória e CPU o desktop Unity inteiro está usando. Por isso, tentei olhar para o processo Unity, mas como ele é dividido em muitas partes, tornou-se difícil. Eu quero ver quanto Unity como um todo, está consumindo na memória (e / ou CPU). Existe um parâmetro para ver isso, um script para ler todos os componentes do Unity e resumi-los. Opcionalmente incluindo todos os pacotes dependentes do Unity como o Compiz.

    
por Luis Alvarado 27.11.2012 / 21:10

1 resposta

1

Acabei de escrever o script python que faz o trabalho:

#!/usr/bin/env python

import os, sys

primary_processes = { "unity-panel-service", "unity-applications-daemon", "unity-files-daemon", "unity-gwibber-daemon", "unity-music-daemon", "unity-shopping-daemon", "unity-lens-video", "hud-service", "zeitgeist-fts", "zeitgeist-datahub", "zeitgeist-daemon", "zeitgeist-fts" }

secondary_processes = { "lightdm", "X", "gnome-session", "gnome-settings-daemon", "gnome-keyring-daemon", "compiz", "pulseaudio", "gnome-fallback-mount-helper", "nautilus", "gconf-helper", "gconfd-2", "gtk-window-decorator", "indicator-printers-service", "indicator-sound-service", "indicator-session-service", "indicator-messages-service", "indicator-application-service", "ubuntu-geoip-provider", "gnome-screensaver", "gnome-pty-helper", "update-notifier", "deja-dup-monitor" }

debugOn=False

def getPID(curProc):
    try:
        return os.popen("pidof "+curProc).read().strip()
    except:
        return "0"

def getProcMemUsage(curProcID):
    """
    Returns curProc's mem usage of curProcID in Kbytes
    """
    if(curProcID=="0" or curProcID==""):
        return 0

    try:
        if debugOn:
            print curProcID+": "+os.popen("pmap -x "+curProcID+" | tail -1 | awk '{print $3, $2}'").read().strip()

        return int(os.popen("pmap -x "+curProcID+" | tail -1 | awk '{print $3}'").read().strip())
    except:
        return 0

def getProcCpuUsage(curProcID):
    """
    Returns curProc's % cpu usage
    """

    if(curProcID=="0" or curProcID==""):
        return 0

    try:
        percentage=os.popen("ps aux | grep "+curProcID+" | grep -v grep | awk '{print $3}'").read().strip()
        if debugOn:
            print curProcID+": "+percentage+"%"
        return float(percentage)
    except:
        return 0

def KbToMb(curKB):
    return "{0:.2f}".format(curKB/1024.0)


def main():
    sumKB=0
    sumCPU=0

    if "-d" in sys.argv:
        global debugOn
        debugOn=True

    if "-a" in sys.argv:
        for proc in primary_processes :
            procpid=getPID(proc)
            sumKB += getProcMemUsage(procpid)
            sumCPU += getProcCpuUsage(procpid)
        for proc in secondary_processes :
            procpid=getPID(proc)
            sumKB += getProcMemUsage(procpid)
            sumCPU += getProcCpuUsage(procpid)
    else:
        for proc in primary_processes :
            procpid=getPID(proc)
            sumKB += getProcMemUsage(procpid)
            sumCPU += getProcCpuUsage(procpid)

    if "-c" in sys.argv:
        print str(KbToMb(sumKB))+" MB"
    else:
        print str(sumKB)+" KB"
    print str(sumCPU)+"% CPU"

main()

Uso: Basta executá-lo para dizer o que a unidade usa (uso de memória + cpu%)

  • -c - > converte Kb para Mb

  • -d - > depuração está em

  • -a - > também faz o trabalho para processos secundários

Por exemplo,

./script.py -c -d

Os processos secundário e primário são variáveis globais no topo do script, portanto, sinta-se à vontade para editar o script e incluir os processos nos quais está interessado.

PS: Eu acho o uso de memória de um processo usando pmap -x , que eu acho um pouco ... excessivo (diz que meu servidor X consome até 70 MB), mas eu acho que os desenvolvedores de sabe mais do que eu.

    
por hytromo 06.05.2013 / 20:56