Slight growth of memory detected

Ouverte
#55 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
c, python
Domaine
networking

Piste de recherche

Commencez par reproduire le test de mémoire fourni avec get_active_devices et get_interfaces_info, y compris le cas d’un nom d’interface invalide. Suivez ces points d’entrée à travers les bindings Python et l’implémentation native du dépôt, puis répétez les mesures après toute investigation. Le travail est terminé lorsque les appels répétés ne montrent plus de croissance mesurable de la mémoire.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

help wanted

Get this script (GPLv2 Copyright (c) 2011 Red Hat):

import ethtool
import subprocess, sys, os

max = int(sys.argv[1])
nic = sys.argv[2]
total = 0

def memory():
    """ Get current memory usage in MB """
    command = "ps --no-header -o rss -p %s" % os.getpid()
    p = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
    stdout, stderr = p.communicate()
    return int(stdout) / 1024

def measure(fun, arg):
    """ Run given function on given arg max times """
    global total
    print("\n%s on %s" % (fun, arg))
    start = None

    for i in range(max + 1):
        result = fun(arg)
        if i % (max / 10) == 0:
            current = memory()
            # note the memory after the first round warm-up
            if start is None:
                start = current
            print("%s %% ... %s MB" % \
                    (str(100 * i / max).rjust(3), str(current).rjust(3)))
    increase = current - start
    print("Memory increase: %s MB" % increase)
    total += increase

measure(ethtool.get_active_devices, None)
measure(ethtool.get_interfaces_info, nic)
measure(ethtool.get_interfaces_info, 'bad interface name')

print("\nTotal memory increase: %s MB" % total)
if total > 0:
    sys.exit(1)

And run:

$ python3.6 ~/tmp/memory.py 1000000 ens3
<built-in function get_active_devices> on None
0.0 % ... 10.1328125 MB
10.0 % ... 10.13671875 MB
20.0 % ... 10.13671875 MB
30.0 % ... 10.13671875 MB
40.0 % ... 10.13671875 MB
50.0 % ... 10.13671875 MB
60.0 % ... 10.13671875 MB
70.0 % ... 10.13671875 MB
80.0 % ... 10.13671875 MB
90.0 % ... 10.13671875 MB
100.0 % ... 10.13671875 MB
Memory increase: 0.00390625 MB

<built-in function get_interfaces_info> on ens3
0.0 % ... 10.13671875 MB
10.0 % ... 10.13671875 MB
20.0 % ... 10.13671875 MB
30.0 % ... 10.13671875 MB
40.0 % ... 10.13671875 MB
50.0 % ... 10.13671875 MB
60.0 % ... 10.13671875 MB
70.0 % ... 10.13671875 MB
80.0 % ... 10.13671875 MB
90.0 % ... 10.140625 MB
100.0 % ... 10.140625 MB
Memory increase: 0.00390625 MB

<built-in function get_interfaces_info> on bad interface name
0.0 % ... 10.140625 MB
10.0 % ... 10.140625 MB
20.0 % ... 10.140625 MB
30.0 % ... 10.140625 MB
40.0 % ... 10.140625 MB
50.0 % ... 10.140625 MB
60.0 % ... 10.140625 MB
70.0 % ... 10.140625 MB
80.0 % ... 10.140625 MB
90.0 % ... 10.140625 MB
100.0 % ... 10.140625 MB
Memory increase: 0.0 MB

Total memory increase: 0.0078125 MB
Langage dominant
C
Étoiles
16
Forks
11
Métriques de merge des PR
Aucune PR mergée en 30 j

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de fedora-python/python-ethtool

Toutes les issues de fedora-python/python-ethtool

Issues similaires

Plus d'issues C

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.