Как узнать, сколько памяти / процессора использует Unity

Я пытаюсь увидеть, сколько памяти и процессора использует весь рабочий стол Unity. Для этого я попытался взглянуть на процесс Unity, но, поскольку он разделен на многие части, он стал трудным. Я хочу увидеть, сколько Unity в целом потребляет в памяти (и / или процессоре). Есть ли параметр, чтобы увидеть это, скрипт для чтения всех компонентов Unity и их суммирования. Необязательно, включая все зависимые пакеты Unity, такие как Compiz.

2
задан 6 May 2013 в 21:40

1 ответ

Только что написал тот скрипт на python, который выполняет эту работу:

#!/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()

Использование: Просто запустите его, чтобы сказать, что использует Unity (использование памяти + процессор%)

  • [ 118] -c -> преобразовать Кб в Мб

  • -d -> отладка включена

  • -a -> также выполнить работу для вторичные процессы

Например

./script.py -c -d

Вторичные и первичные процессы являются глобальными переменными в верхней части скрипта, поэтому не стесняйтесь редактировать скрипт и включать интересующие вас процессы.

PS: я нахожу использование памяти процессом с помощью pmap -x, который я считаю немного ... чрезмерным (он говорит, что мой X-сервер ест до 70 МБ), но я предполагаю, что разработчики он знает больше, чем я.

0
ответ дан 6 May 2013 в 21:40

Другие вопросы по тегам:

Похожие вопросы: