cgroups.c (pcp-6.0.2) | : | cgroups.c (pcp-6.0.3) | ||
---|---|---|---|---|
skipping to change at line 628 | skipping to change at line 628 | |||
#if __GNUC__ >= 10 | #if __GNUC__ >= 10 | |||
#pragma GCC diagnostic pop | #pragma GCC diagnostic pop | |||
#endif | #endif | |||
#endif | #endif | |||
count = fscanf(fp, fmt, &pp->avg10sec, &pp->avg1min, &pp->avg5min, | count = fscanf(fp, fmt, &pp->avg10sec, &pp->avg1min, &pp->avg5min, | |||
(unsigned long long *)&pp->total); | (unsigned long long *)&pp->total); | |||
pp->updated = (count == 4); | pp->updated = (count == 4); | |||
} | } | |||
static int | static int | |||
read_pressures(const char *file, cgroup_pressures_t *pp, int full) | read_pressures(const char *file, cgroup_pressures_t *pp, int flags) | |||
{ | { | |||
FILE *fp; | FILE *fp; | |||
memset(&pp->some, 0, sizeof(cgroup_pressure_t)); | if (flags & CG_PSI_SOME) | |||
if (full) | memset(&pp->some, 0, sizeof(cgroup_pressure_t)); | |||
if (flags & CG_PSI_FULL) | ||||
memset(&pp->full, 0, sizeof(cgroup_pressure_t)); | memset(&pp->full, 0, sizeof(cgroup_pressure_t)); | |||
if ((fp = fopen(file, "r")) == NULL) | if ((fp = fopen(file, "r")) == NULL) | |||
return -oserror(); | return -oserror(); | |||
read_pressure(fp, "some", &pp->some); | if (flags & CG_PSI_SOME) | |||
if (full) | read_pressure(fp, "some", &pp->some); | |||
if (flags & CG_PSI_FULL) | ||||
read_pressure(fp, "full", &pp->full); | read_pressure(fp, "full", &pp->full); | |||
fclose(fp); | fclose(fp); | |||
return 0; | return 0; | |||
} | } | |||
static int | static int | |||
read_oneline(const char *file, char *buffer, size_t length) | read_oneline(const char *file, char *buffer, size_t length) | |||
{ | { | |||
FILE *fp; | FILE *fp; | |||
skipping to change at line 1540 | skipping to change at line 1542 | |||
escname = unit_name_unescape(name, escbuf); | escname = unit_name_unescape(name, escbuf); | |||
sts = pmdaCacheLookupName(indom, escname, NULL, (void **)&cgroup); | sts = pmdaCacheLookupName(indom, escname, NULL, (void **)&cgroup); | |||
if (sts == PMDA_CACHE_ACTIVE) | if (sts == PMDA_CACHE_ACTIVE) | |||
goto v1; | goto v1; | |||
if (sts != PMDA_CACHE_INACTIVE && | if (sts != PMDA_CACHE_INACTIVE && | |||
(cgroup = (cgroup2_t *)calloc(1, sizeof(cgroup2_t))) == NULL) | (cgroup = (cgroup2_t *)calloc(1, sizeof(cgroup2_t))) == NULL) | |||
goto v1; | goto v1; | |||
if (need_refresh[CLUSTER_CGROUP2_CPU_PRESSURE]) { | if (need_refresh[CLUSTER_CGROUP2_CPU_PRESSURE]) { | |||
pmsprintf(file, sizeof(file), "%s/%s", path, "cpu.pressure"); | pmsprintf(file, sizeof(file), "%s/%s", path, "cpu.pressure"); | |||
read_pressures(file, &cgroup->cpu_pressures, 0); | read_pressures(file, &cgroup->cpu_pressures, CG_PSI_SOME); | |||
} | } | |||
if (need_refresh[CLUSTER_CGROUP2_CPU_STAT]) { | if (need_refresh[CLUSTER_CGROUP2_CPU_STAT]) { | |||
pmsprintf(file, sizeof(file), "%s/%s", path, "cpu.stat"); | pmsprintf(file, sizeof(file), "%s/%s", path, "cpu.stat"); | |||
read_cpu_time(file, &cgroup->cputime); | read_cpu_time(file, &cgroup->cputime); | |||
} | } | |||
if (need_refresh[CLUSTER_CGROUP2_IO_PRESSURE]) { | if (need_refresh[CLUSTER_CGROUP2_IO_PRESSURE]) { | |||
pmsprintf(file, sizeof(file), "%s/%s", path, "io.pressure"); | pmsprintf(file, sizeof(file), "%s/%s", path, "io.pressure"); | |||
read_pressures(file, &cgroup->io_pressures, 1); | read_pressures(file, &cgroup->io_pressures, CG_PSI_SOME|CG_PSI_FULL); | |||
} | } | |||
if (need_refresh[CLUSTER_CGROUP2_IO_STAT]) { | if (need_refresh[CLUSTER_CGROUP2_IO_STAT]) { | |||
pmsprintf(file, sizeof(file), "%s/%s", path, "io.stat"); | pmsprintf(file, sizeof(file), "%s/%s", path, "io.stat"); | |||
read_io_stats(file, name); | read_io_stats(file, name); | |||
} | } | |||
if (need_refresh[CLUSTER_CGROUP2_MEM_PRESSURE]) { | if (need_refresh[CLUSTER_CGROUP2_MEM_PRESSURE]) { | |||
pmsprintf(file, sizeof(file), "%s/%s", path, "memory.pressure"); | pmsprintf(file, sizeof(file), "%s/%s", path, "memory.pressure"); | |||
read_pressures(file, &cgroup->mem_pressures, 1); | read_pressures(file, &cgroup->mem_pressures, CG_PSI_SOME|CG_PSI_FULL); | |||
} | ||||
if (need_refresh[CLUSTER_CGROUP2_IRQ_PRESSURE]) { | ||||
pmsprintf(file, sizeof(file), "%s/%s", path, "irq.pressure"); | ||||
read_pressures(file, &cgroup->irq_pressures, CG_PSI_FULL); | ||||
} | } | |||
cgroup_container(name, id, sizeof(id), &cgroup->container); | cgroup_container(name, id, sizeof(id), &cgroup->container); | |||
pmdaCacheStore(indom, PMDA_CACHE_ADD, escname, cgroup); | pmdaCacheStore(indom, PMDA_CACHE_ADD, escname, cgroup); | |||
v1: | v1: | |||
/* | /* | |||
* Deprecated v1 cgroup subsystems follow, some rarely used now | * Deprecated v1 cgroup subsystems follow, some rarely used now | |||
* (memory stats, however, are still always handled this way). | * (memory stats, however, are still always handled this way). | |||
*/ | */ | |||
End of changes. 6 change blocks. | ||||
8 lines changed or deleted | 15 lines changed or added |