Very high memory usage when running under sudo in Linux
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 32/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- linux, python
- Ambito
- backend, operating-systems
Direzione di ricerca
Inizia con il riproduttore minimo in Python e confronta le letture della memoria prima e dopo softioc.iocInit quando viene eseguito normalmente e con sudo. Analizza il percorso di inizializzazione raggiunto da softioc.iocInit; il lavoro è completato quando l’esecuzione con sudo non mostra più l’aumento di circa 950 MB, preservando al contempo il normale avvio dell’IOC.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Python
- Stelle
- 47
- Fork
- 15
- Merge medio
- 1g 18h
- PR unite (30g)
- 1
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di DiamondLightSource/pythonSoftIOC
-
Intermittently failing test Apertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
-
enhancement
DiamondLightSource/pythonSoftIOC#121 · 2 commenti · 1 assegnatario ·
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Replace devIocStats dependency with python device support implementing the same record interface Apertaenhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
Tutte le issue di DiamondLightSource/pythonSoftIOC
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
canonical/paas-charm#368 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
addition to tracking list Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
StevenBlack/hosts#3256 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
qualcomm/qai-appbuilder#275 ·