Der Speicher auf dem Server meines Labors (Ubuntu) füllt sich ständig, weil die Benutzer nie alte Notebooks herunterfahren. Ich würde gerne eine bessere Vorstellung davon bekommen, wie viel Speicher jedes Notebook aufnimmt. Ich kann die (grobe) Speichernutzung für alle Jupyter-Notebooks zusammenfassen, die von jedem Benutzer ausgeführt werden, aber ich möchte die Gesamtspeicherauslastung jedes einzelnen Notizbuchs abrufen, damit ich diese bestimmten Speicherschweine herunterfahren kann (oder einem anderen Benutzer sagen, sie ist unten). Ich habe schnell den folgenden Code zusammengestellt, um ca. Mem. Verwendung pro Jupyter-Kernel, aber ich weiß nicht, wie Sie die Kernel-IDs einem bestimmten Notebook zuordnen.Jupyter-Notebook: Speicherverbrauch für jedes Notebook
import os
import pwd
import pandas as pd
UID = 1
EUID = 2
pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
df = []
for pid in pids:
try:
ret = open(os.path.join('/proc', pid, 'cmdline'), 'rb').read()
except IOError: # proc has already terminated
continue
# jupyter notebook processes
if len(ret) > 0 and 'share/jupyter/runtime' in ret:
process = psutil.Process(int(pid))
mem = process.memory_info()[0]
# user name for pid
for ln in open('/proc/%d/status' % int(pid)):
if ln.startswith('Uid:'):
uid = int(ln.split()[UID])
uname = pwd.getpwuid(uid).pw_name
# user, pid, memory, proc_desc
df.append([uname, pid, mem, ret])
df = pd.DataFrame(df)
df.columns = ['user', 'pid', 'memory', 'proc_desc']
df
machen werde weiter: Pakete in der aktuellen Kanäle fehlt: - pwd' . eine andere Lösung, die 'pwd' nicht benötigt. Ich bin auf Windows-Server mit Anaconda Python 2.7. – ihightower