Calculer vrai Mémoire utilisé pour un job complété, ou "killed"

Bonjour,
J'aimerais améliorer ma performance concernant la mémoire utilisé pour les jobs, laquelle comme vous verrez ci-dessous n'est pas au top ! :-/ :rofl:

SLURM Job Efficiency:
Time            [--------------------] 1 %
CPU             [!!------------------] 12 %
Mem             [!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!] 280 %

Je cherche une commande, similaire à

 sacct  

mais pour les jobs finis,ou arrêtés, pour voir ce qui était vraiment demandé par notre commande/outil, et comparer avec celle que l'on a déclaré à slurm pour pouvoir la corriger (augmenter, diminuer) selon les besoins.

Ceci serait bien d'avoir aussi pour les sessions JupyterLab et R-studio de la plateforme "OnDemand" pour mieux adapter ce que l'on demand à l'ouverture d une nouvelle session.

Bonjour,

La réponse est reportseff:

module load reportseff
reportseff

Une documentation est disponible pour contrôler les ressources et leur bon usage et notamment avec reportseff:
https://ifb-elixirfr.gitlab.io/cluster/doc/slurm/slurm_efficiency/

Cela prends en compte n'importe quel job (dont ceux lancés par ondemand: JupyterLab/RStudio/...).

Dites-nous si la documentation n'est pas claire ou si il manque des infos.

PS: Des valeurs renvoyées pour la mémoire (par sacct ou status_bar) pour certains de vos jobs semblent incohérentes. Faut qu'on creuse un peu...

merci beacoup, je vais le lire !

Bonjour,
en fait le reportseff ne donne pas l'info précis de la mémoire utilisé et de la mémoire réservé. C'est ça qu'il me faudrait pour mieux comprendre si je demande 30,ou 20GB à la prochaine session.
Pour ma dernière session JupyterLab par exemple, où j'avais des erreurs de Serveur pendant les calculs de certaines commandes, le rapport me donne :

$ reportseff 42650432 --format +reqmem,reqcpus
     JobID   State      Elapsed  TimeEff   CPUEff   MemEff   ReqMem   ReqCPUS
  42650432  TIMEOUT    05:00:05  100.0%     ---     52.6%     30G        6


52% est bien comme efficacité,mais je suis pas sûre de comprendre ce que ça veut dire.
Est-ce que ça veut dire que ~15GB étaient utilisés des 30GB que j'ai demandé ?
Y-a-t-il un paramètre à visualiser à coté de ceux-ci ,comme "UsedMem" ?

Avec sacct ,j ai vu que l'on peut avoir des infos aussi, mais je trouve pas quel paramètre serait le bon parmi tous ceux-ci ! :confused:

sacct -e
Account             AdminComment        AllocCPUS           AllocNodes
AllocTRES           AssocID             AveCPU              AveCPUFreq
AveDiskRead         AveDiskWrite        AvePages            AveRSS
AveVMSize           BlockID             Cluster             Comment
Constraints         ConsumedEnergy      ConsumedEnergyRaw   Container
CPUTime             CPUTimeRAW          DBIndex             DerivedExitCode
Elapsed             ElapsedRaw          Eligible            End
ExitCode            Extra               FailedNode          Flags
GID                 Group               JobID               JobIDRaw
JobName             Layout              Licenses            MaxDiskRead
MaxDiskReadNode     MaxDiskReadTask     MaxDiskWrite        MaxDiskWriteNode
MaxDiskWriteTask    MaxPages            MaxPagesNode        MaxPagesTask
MaxRSS              MaxRSSNode          MaxRSSTask          MaxVMSize
MaxVMSizeNode       MaxVMSizeTask       McsLabel            MinCPU
MinCPUNode          MinCPUTask          NCPUS               NNodes
NodeList            NTasks              Partition           Planned
PlannedCPU          PlannedCPURAW       Priority            QOS
QOSRAW              Reason              ReqCPUFreq          ReqCPUFreqGov
ReqCPUFreqMax       ReqCPUFreqMin       ReqCPUS             ReqMem
ReqNodes            ReqTRES             Reservation         ReservationId
Start               State               Submit              SubmitLine
Suspended           SystemComment       SystemCPU           Timelimit
TimelimitRaw        TotalCPU            TRESUsageInAve      TRESUsageInMax
TRESUsageInMaxNode  TRESUsageInMaxTask  TRESUsageInMin      TRESUsageInMinNode
TRESUsageInMinTask  TRESUsageInTot      TRESUsageOutAve     TRESUsageOutMax
TRESUsageOutMaxNode TRESUsageOutMaxTask TRESUsageOutMin     TRESUsageOutMinNode
TRESUsageOutMinTask TRESUsageOutTot     UID                 User
UserCPU             WCKey               WCKeyID             WorkDir

52% est bien comme efficacité,mais je suis pas sûre de comprendre ce que ça veut dire.
Est-ce que ça veut dire que ~15GB étaient utilisés des 30GB que j'ai demandé ?

Oui c'est ça.

Y-a-t-il un paramètre à visualiser à coté de ceux-ci ,comme "UsedMem" ?

Vous pouvez utiliser MaxRSS (Maximum resident set size)

$ reportseff 42650432 --format +reqmem,MaxRSS,reqcpus
     JobID   State      Elapsed  TimeEff   CPUEff   MemEff   ReqMem    MaxRSS     ReqCPUS 
  42650432  TIMEOUT    05:00:05  100.0%     ---     52.6%     30G     16531936K      6

30G demandé (ReqMem). 16531936K =~ 16G utilisé (MaxRSS). Soit 16/30 ~ 53% d'efficacité (MemEff).

1 « J'aime »