blob: 38509f41d018ac6cae8f52c391ac7ea2bc29bbd2 [file] [log] [blame]
/*****************************************************************************\
* power_save.h - Support node power saving mode. Nodes which have been
* idle for an extended period of time will be placed into a power saving
* mode by running an arbitrary script. This script can lower the voltage
* or frequency of the nodes or can completely power the nodes off.
* When the node is restored to normal operation, another script will be
* executed. Many parameters are available to control this mode of operation.
*****************************************************************************
* Copyright (C) SchedMD LLC.
*
* This file is part of Slurm, a resource management program.
* For details, see <https://slurm.schedmd.com/>.
* Please also read the included file: DISCLAIMER.
*
* Slurm is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* In addition, as a special exception, the copyright holders give permission
* to link the code of portions of this program with the OpenSSL library under
* certain conditions as described in each individual source file, and
* distribute linked combinations including the two. You must obey the GNU
* General Public License in all respects for all of the code used other than
* OpenSSL. If you modify file(s) with this exception, you may extend this
* exception to your version of the file(s), but you are not obligated to do
* so. If you do not wish to do so, delete this exception statement from your
* version. If you delete this exception statement from all source files in
* the program, then also delete it here.
*
* Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along
* with Slurm; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\*****************************************************************************/
#include "src/slurmctld/slurmctld.h"
#ifndef _HAVE_POWER_SAVE_H
#define _HAVE_POWER_SAVE_H
/* Global Variables */
extern list_t *resume_job_list;
/*
* config_power_mgr - Read power management configuration
*/
extern void config_power_mgr(void);
extern void config_power_mgr_fini(void);
extern void power_save_init(void);
extern void power_save_fini(void);
/* Report if node power saving is enabled */
extern bool power_save_test(void);
/*
* Reboot compute nodes for a job from the head node using ResumeProgram.
*
* IN node_bitmap - bitmap of nodes to reboot
* IN job_ptr - job requesting reboot
* IN features - optional features that the nodes need to be rebooted with
*/
extern int power_job_reboot(bitstr_t *node_bitmap, job_record_t *job_ptr,
char *features);
/*
* Parse settings for excluding nodes, partitions and states from being
* suspended.
*
* This creates node bitmaps. Must be done again when node bitmaps change.
*/
extern void power_save_exc_setup(void);
/*
* Set node power times based on global and per-partition settings.
*
* OUT (optional) partition_suspend_time_set - return True if any partition has
* suspend_time set.
*/
extern void power_save_set_timeouts(bool *partition_suspend_time_set);
#endif /* _HAVE_POWER_SAVE_H */