Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Very high memory usage when running under sudo in Linux

Ouverte
#180 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
32/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
linux, python

Piste de recherche

Commencez par le reproducteur minimal en Python et comparez les mesures de mémoire avant et après softioc.iocInit lors d’une exécution normale et sous sudo. Étudiez le chemin d’initialisation atteint par softioc.iocInit ; le travail est terminé lorsque l’exécution sous sudo n’affiche plus l’augmentation d’environ 950 MB, tout en préservant le démarrage normal de l’IOC.

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

Description

bug

Hi all,

It seems that creating and initializing an IOC takes up a crazy high amount of memory when ran under sudo. This is not the case when ran as user. Here is a minimal example to demonstrate:

import psutil
from softioc import softioc, builder, asyncio_dispatcher

def print_memory_usage(loc: str):
    print(f"{loc:32s}: {psutil.Process().memory_info().rss:,}")

print_memory_usage("Before PV")
pv = builder.longOut("myVariable")

print_memory_usage("Before loadDatabase")
builder.LoadDatabase()

print_memory_usage("Before dispatcher")
dispatcher = asyncio_dispatcher.AsyncioDispatcher()
print_memory_usage("Before iocInit")
softioc.iocInit(dispatcher)

print_memory_usage("Before start")
softioc.interactive_ioc()

Output when ran as user:

INFO: PVXS QSRV2 is loaded, permitted, and ENABLED.
2025-01-16T13:55:56.327190606 WARN pvxs.tcp.setup Server unable to bind port 5075, falling back to [::]:37275
Before PV                       : 85,139,456
Before loadDatabase             : 85,139,456
Before dispatcher               : 85,139,456
Before iocInit                  : 87,236,608
Starting iocInit
############################################################################
## EPICS 7.0.7.1-DEV
## Rev. 7.0.7.99.1.1
## Rev. Date 7.0.7.99.1.1
############################################################################
cas WARNING: Configured TCP port was unavailable.
cas WARNING: Using dynamically assigned TCP port 43649,
cas WARNING: but now two or more servers share the same UDP port.
cas WARNING: Depending on your IP kernel this server may not be
cas WARNING: reachable with UDP unicast (a host's IP in EPICS_CA_ADDR_LIST)
iocRun: All initialization complete
Before start                    : 89,600,000
Python 3.12.3 (main, Nov  6 2024, 18:32:19) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

Output when ran as sudo:

INFO: PVXS QSRV2 is loaded, permitted, and ENABLED.
2025-01-16T13:56:32.146488207 WARN pvxs.tcp.setup Server unable to bind port 5075, falling back to [::]:39775
Before PV                       : 85,114,880
Before loadDatabase             : 85,114,880
Before dispatcher               : 85,114,880
Before iocInit                  : 87,212,032
Starting iocInit
############################################################################
## EPICS 7.0.7.1-DEV
## Rev. 7.0.7.99.1.1
## Rev. Date 7.0.7.99.1.1
############################################################################
cas WARNING: Configured TCP port was unavailable.
cas WARNING: Using dynamically assigned TCP port 37929,
cas WARNING: but now two or more servers share the same UDP port.
cas WARNING: Depending on your IP kernel this server may not be
cas WARNING: reachable with UDP unicast (a host's IP in EPICS_CA_ADDR_LIST)
iocRun: All initialization complete
Before start                    : 950,546,432
Python 3.12.3 (main, Nov  6 2024, 18:32:19) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

As you can see, the issue seems to happen in softioc.iocInit. Packages used to test (on Ubuntu):

softioc           4.5.0
psutil            6.1.1

This issue occurs both on Ubuntu and NixOS.

Langage dominant
Python
Étoiles
47
Forks
15
Merge moyen
1 j 18 h
PR mergées (30 j)
1

Guide de contribution

Ouvrir le guide de contribution

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 DiamondLightSource/pythonSoftIOC

Toutes les issues de DiamondLightSource/pythonSoftIOC

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

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