Modified calculation to determine when memory is nearly exhausted. Also changed prototypes of memory reporting functions to match their definitions.

This commit is contained in:
Jim Monte 2019-12-21 21:09:30 -05:00 committed by Holger Vogt
parent 8a6f431f4b
commit faf01c0376
2 changed files with 18 additions and 18 deletions

View File

@ -123,33 +123,33 @@ com_rusage(wordlist *wl)
/* Find out if the user is approaching his maximum data size.
If usage is withing 95% of total available then a warning message is sent
to the error stream (cp_err) */
void
ft_ckspace(void)
void ft_ckspace(void)
{
#ifdef SHARED_MODULE
/* False warning on some OSs, especially on Linux when loaded during runtime.
The caller then has to take care of memory available */
return;
#else
unsigned long long freemem, totalmem, usage, avail;
freemem = getAvailableMemorySize();
totalmem = getMemorySize();
usage = getCurrentRSS();
avail = usage + freemem;
const unsigned long long freemem = getAvailableMemorySize();
const unsigned long long usage = getCurrentRSS();
if (totalmem == 0 || freemem == 0 || usage == 0)
if (freemem == 0 || usage == 0) { /* error obtaining data */
return;
}
if ((double)freemem < (double)totalmem * 0.05) {
fprintf(cp_err, "Warning - approaching max data size: ");
fprintf(cp_err, "current size = ");
const unsigned long long avail = usage + freemem;
if ((double) usage > (double) avail * 0.95) {
(void) fprintf(cp_err,
"Warning - approaching max data size: "
"current size = ");
fprintmem(cp_err, usage);
fprintf(cp_err, ", limit = ");
(void) fprintf(cp_err, ", limit = ");
fprintmem(cp_err, avail);
fprintf(cp_err, "\n");
(void) fprintf(cp_err, "\n");
}
#endif
}
} /* end of function ft_chkspace */
/* Print out one piece of resource usage information. */

View File

@ -6,10 +6,10 @@
#ifndef ngspice_RESOURCE_H
#define ngspice_RESOURCE_H
extern size_t getMemorySize(void);
extern size_t getPeakRSS(void);
extern size_t getCurrentRSS(void);
extern size_t getAvailableMemorySize(void);
extern unsigned long long getMemorySize(void);
extern unsigned long long getPeakRSS(void);
extern unsigned long long getCurrentRSS(void);
extern unsigned long long getAvailableMemorySize(void);
void init_rlimits(void);
void init_time(void);