Dynamic Load Balance 3.6.1+32-59d1
shmem_procinfo.h
Go to the documentation of this file.
1/*********************************************************************************/
2/* Copyright 2009-2021 Barcelona Supercomputing Center */
3/* */
4/* This file is part of the DLB library. */
5/* */
6/* DLB is free software: you can redistribute it and/or modify */
7/* it under the terms of the GNU Lesser General Public License as published by */
8/* the Free Software Foundation, either version 3 of the License, or */
9/* (at your option) any later version. */
10/* */
11/* DLB is distributed in the hope that it will be useful, */
12/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14/* GNU Lesser General Public License for more details. */
15/* */
16/* You should have received a copy of the GNU Lesser General Public License */
17/* along with DLB. If not, see <https://www.gnu.org/licenses/>. */
18/*********************************************************************************/
19
20#ifndef SHMEM_PROCINFO_H
21#define SHMEM_PROCINFO_H
22
23#include "apis/dlb_types.h"
24
25#include <sys/types.h>
26#include <stdbool.h>
27#include <sched.h>
28
29/* Init / Register */
30int shmem_procinfo__init(pid_t pid, pid_t preinit_pid, const cpu_set_t *process_mask,
31 cpu_set_t *new_process_mask, const char *shmem_key, int shmem_size_multiplier);
32int shmem_procinfo__init_with_cpu_sharing(pid_t pid, pid_t preinit_pid,
33 const cpu_set_t *process_mask, const char *shmem_key, int shmem_size_multiplier);
34int shmem_procinfo_ext__init(const char *shmem_key, int shmem_size_multiplier);
35int shmem_procinfo_ext__preinit(pid_t pid, const cpu_set_t *mask, dlb_drom_flags_t flags);
36
37/* Finalize / Unregister */
38int shmem_procinfo__finalize(pid_t pid, bool return_stolen, const char *shmem_key,
39 int shmem_size_multiplier);
41int shmem_procinfo_ext__postfinalize(pid_t pid, bool return_stolen);
43
44int shmem_procinfo__getprocessmask(pid_t pid, cpu_set_t *mask, dlb_drom_flags_t flags);
45int shmem_procinfo__setprocessmask(pid_t pid, const cpu_set_t *mask,
46 dlb_drom_flags_t flags, cpu_set_t *free_cpu_mask);
47
48/* Generic Getters */
49int shmem_procinfo__polldrom(pid_t pid, int *new_cpus, cpu_set_t *new_mask);
50int shmem_procinfo__getpidlist(pid_t *pidlist, int *nelems, int max_len);
51
52/* Statistics */
53double shmem_procinfo__getcpuusage(pid_t pid);
54double shmem_procinfo__getcpuavgusage(pid_t pid);
55void shmem_procinfo__getcpuusage_list(double *usagelist, int *nelems, int max_len);
56void shmem_procinfo__getcpuavgusage_list(double *avgusagelist, int *nelems, int max_len);
60void shmem_procinfo__getactivecpus_list(pid_t *cpuslist, int *nelems, int max_len);
61int shmem_procinfo__getloadavg(pid_t pid, double *load);
62
63int shmem_procinfo__setcpuusage(pid_t pid, int index, double new_usage);
64int shmem_procinfo__setcpuavgusage(pid_t pid, double new_avg_usage);
65
66/* Misc */
67void shmem_procinfo__print_info(const char *shmem_key, int shmem_size_multiplier);
68bool shmem_procinfo__exists(void);
70size_t shmem_procinfo__size(void);
71
72#endif /* SHMEM_PROCINFO_H */
dlb_drom_flags_t
Definition: dlb_types.h:34
double shmem_procinfo__getnodeusage(void)
Definition: shmem_procinfo.c:1121
int shmem_procinfo__polldrom(pid_t pid, int *new_cpus, cpu_set_t *new_mask)
Definition: shmem_procinfo.c:999
int shmem_procinfo__setprocessmask(pid_t pid, const cpu_set_t *mask, dlb_drom_flags_t flags, cpu_set_t *free_cpu_mask)
Definition: shmem_procinfo.c:906
int shmem_procinfo__version(void)
Definition: shmem_procinfo.c:1358
void shmem_procinfo__getcpuavgusage_list(double *avgusagelist, int *nelems, int max_len)
Definition: shmem_procinfo.c:1103
bool shmem_procinfo__exists(void)
Definition: shmem_procinfo.c:1354
int shmem_procinfo__getactivecpus(pid_t pid)
Definition: shmem_procinfo.c:1157
int shmem_procinfo__setcpuusage(pid_t pid, int index, double new_usage)
Definition: shmem_procinfo.c:1226
int shmem_procinfo_ext__recover_stolen_cpus(int pid)
Definition: shmem_procinfo.c:738
double shmem_procinfo__getnodeavgusage(void)
Definition: shmem_procinfo.c:1139
double shmem_procinfo__getcpuusage(pid_t pid)
Definition: shmem_procinfo.c:1053
int shmem_procinfo__init(pid_t pid, pid_t preinit_pid, const cpu_set_t *process_mask, cpu_set_t *new_process_mask, const char *shmem_key, int shmem_size_multiplier)
Definition: shmem_procinfo.c:482
int shmem_procinfo_ext__postfinalize(pid_t pid, bool return_stolen)
Definition: shmem_procinfo.c:712
int shmem_procinfo__getloadavg(pid_t pid, double *load)
Definition: shmem_procinfo.c:1190
int shmem_procinfo__init_with_cpu_sharing(pid_t pid, pid_t preinit_pid, const cpu_set_t *process_mask, const char *shmem_key, int shmem_size_multiplier)
Definition: shmem_procinfo.c:489
void shmem_procinfo__getcpuusage_list(double *usagelist, int *nelems, int max_len)
Definition: shmem_procinfo.c:1085
int shmem_procinfo__getprocessmask(pid_t pid, cpu_set_t *mask, dlb_drom_flags_t flags)
Definition: shmem_procinfo.c:791
int shmem_procinfo_ext__finalize(void)
Definition: shmem_procinfo.c:700
int shmem_procinfo_ext__preinit(pid_t pid, const cpu_set_t *mask, dlb_drom_flags_t flags)
Definition: shmem_procinfo.c:519
int shmem_procinfo__getpidlist(pid_t *pidlist, int *nelems, int max_len)
Definition: shmem_procinfo.c:1028
void shmem_procinfo__getactivecpus_list(pid_t *cpuslist, int *nelems, int max_len)
Definition: shmem_procinfo.c:1172
size_t shmem_procinfo__size(void)
Definition: shmem_procinfo.c:1362
void shmem_procinfo__print_info(const char *shmem_key, int shmem_size_multiplier)
Definition: shmem_procinfo.c:1246
int shmem_procinfo__setcpuavgusage(pid_t pid, double new_avg_usage)
Definition: shmem_procinfo.c:1210
int shmem_procinfo__finalize(pid_t pid, bool return_stolen, const char *shmem_key, int shmem_size_multiplier)
Definition: shmem_procinfo.c:650
int shmem_procinfo_ext__init(const char *shmem_key, int shmem_size_multiplier)
Definition: shmem_procinfo.c:496
double shmem_procinfo__getcpuavgusage(pid_t pid)
Definition: shmem_procinfo.c:1069