Я пытаюсь увидеть, сколько памяти и процессора использует весь рабочий стол Unity. Для этого я попытался взглянуть на процесс Unity, но, поскольку он разделен на многие части, он стал трудным. Я хочу увидеть, сколько Unity в целом потребляет в памяти (и / или процессоре). Есть ли параметр, чтобы увидеть это, скрипт для чтения всех компонентов Unity и их суммирования. Необязательно, включая все зависимые пакеты Unity, такие как Compiz.
Только что написал тот скрипт на 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 (использование памяти + процессор%)
-d -> отладка включена
-a -> также выполнить работу для вторичные процессы
Например
./script.py -c -d
Вторичные и первичные процессы являются глобальными переменными в верхней части скрипта, поэтому не стесняйтесь редактировать скрипт и включать интересующие вас процессы.
PS: я нахожу использование памяти процессом с помощью pmap -x
, который я считаю немного ... чрезмерным (он говорит, что мой X-сервер ест до 70 МБ), но я предполагаю, что разработчики он знает больше, чем я.