SimGrid  3.12
Versatile Simulation of Distributed Systems
Process Management Functions

Functions

smx_synchro_t simcall_process_execute (const char *name, double flops_amount, double priority, double bound, unsigned long affinity_mask)
 Creates a synchro that executes some computation of an host. More...
 
smx_synchro_t simcall_process_parallel_execute (const char *name, int host_nb, sg_host_t *host_list, double *flops_amount, double *bytes_amount, double amount, double rate)
 Creates a synchro that may involve parallel computation on several hosts and communication between them. More...
 
void simcall_process_execution_destroy (smx_synchro_t execution)
 Destroys an execution synchro. More...
 
void simcall_process_execution_cancel (smx_synchro_t execution)
 Cancels an execution synchro. More...
 
double simcall_process_execution_get_remains (smx_synchro_t execution)
 Returns how much of an execution synchro remains to be done. More...
 
e_smx_state_t simcall_process_execution_get_state (smx_synchro_t execution)
 Returns the state of an execution synchro. More...
 
void simcall_process_execution_set_priority (smx_synchro_t execution, double priority)
 Changes the priority of an execution synchro. More...
 
void simcall_process_execution_set_bound (smx_synchro_t execution, double bound)
 Changes the capping (the maximum CPU utilization) of an execution synchro. More...
 
void simcall_process_execution_set_affinity (smx_synchro_t execution, sg_host_t host, unsigned long mask)
 Changes the CPU affinity of an execution synchro. More...
 
smx_process_t simcall_process_create (const char *name, xbt_main_func_t code, void *data, const char *hostname, double kill_time, int argc, char **argv, xbt_dict_t properties, int auto_restart)
 Creates and runs a new SIMIX process. More...
 
void simcall_process_kill (smx_process_t process)
 Kills a SIMIX process. More...
 
void simcall_process_killall (int reset_pid)
 Kills all SIMIX processes.
 
void simcall_process_cleanup (smx_process_t process)
 Cleans up a SIMIX process. More...
 
void simcall_process_set_host (smx_process_t process, sg_host_t dest)
 Migrates an agent to another location. More...
 
void simcall_process_suspend (smx_process_t process)
 Suspends a process. More...
 
void simcall_process_resume (smx_process_t process)
 Resumes a suspended process. More...
 
int simcall_process_count (void)
 Returns the amount of SIMIX processes in the system. More...
 
int simcall_process_get_PID (smx_process_t process)
 Return the PID of a smx_process_t. More...
 
int simcall_process_get_PPID (smx_process_t process)
 Return the parent PID of a smx_process_t. More...
 
void * simcall_process_get_data (smx_process_t process)
 Return the user data of a smx_process_t. More...
 
void simcall_process_set_data (smx_process_t process, void *data)
 Set the user data of a smx_process_t. More...
 
void simcall_process_set_kill_time (smx_process_t process, double kill_time)
 Set the kill time of a process.
 
double simcall_process_get_kill_time (smx_process_t process)
 Get the kill time of a process (or 0 if unset).
 
sg_host_t simcall_process_get_host (smx_process_t process)
 Return the location on which an agent is running. More...
 
const char * simcall_process_get_name (smx_process_t process)
 Return the name of an agent. More...
 
int simcall_process_is_suspended (smx_process_t process)
 Returns true if the process is suspended . More...
 
xbt_dict_t simcall_process_get_properties (smx_process_t process)
 Return the properties. More...
 
void simcall_process_on_exit (smx_process_t process, int_f_pvoid_pvoid_t fun, void *data)
 Add an on_exit function Add an on_exit function which will be executed when the process exits/is killed.
 
void simcall_process_auto_restart_set (smx_process_t process, int auto_restart)
 Sets the process to be auto-restarted or not by SIMIX when its host comes back up. Will restart the process when the host comes back up if auto_restart is set to 1.
 
smx_process_t simcall_process_restart (smx_process_t process)
 Restarts the process, killing it and starting it again from scratch.
 
e_smx_state_t simcall_process_sleep (double duration)
 Creates a new sleep SIMIX synchro. More...
 
typedef struct s_smx_processsmx_process_t
 Process datatypeA process may be defined as a code, with some private data, executing in a location. More...
 

Detailed Description

Typedef Documentation

typedef struct s_smx_process* smx_process_t

Process datatypeA process may be defined as a code, with some private data, executing in a location.

See also
Process Management Functions

Function Documentation

smx_synchro_t simcall_process_execute ( const char *  name,
double  flops_amount,
double  priority,
double  bound,
unsigned long  affinity_mask 
)

Creates a synchro that executes some computation of an host.

This function creates a SURF action and allocates the data necessary to create the SIMIX synchro. It can raise a host_error exception if the host crashed.

Parameters
nameName of the execution synchro to create
flops_amountamount Computation amount (in flops)
prioritycomputation priority
bound
affinity_mask
Returns
A new SIMIX execution synchronization
smx_synchro_t simcall_process_parallel_execute ( const char *  name,
int  host_nb,
sg_host_t *  host_list,
double *  flops_amount,
double *  bytes_amount,
double  amount,
double  rate 
)

Creates a synchro that may involve parallel computation on several hosts and communication between them.

Parameters
nameName of the execution synchro to create
host_nbNumber of hosts where the synchro will be executed
host_listArray (of size host_nb) of hosts where the synchro will be executed
flops_amountArray (of size host_nb) of computation amount of hosts (in bytes)
bytes_amountArray (of size host_nb * host_nb) representing the communication amount between each pair of hosts
amountthe SURF action amount
ratethe SURF action rate
Returns
A new SIMIX execution synchronization
void simcall_process_execution_destroy ( smx_synchro_t  execution)

Destroys an execution synchro.

Destroys a synchro, freeing its memory. This function cannot be called if there are a conditional waiting for it.

Parameters
executionThe execution synchro to destroy
void simcall_process_execution_cancel ( smx_synchro_t  execution)

Cancels an execution synchro.

This functions stops the execution. It calls a surf function.

Parameters
executionThe execution synchro to cancel
double simcall_process_execution_get_remains ( smx_synchro_t  execution)

Returns how much of an execution synchro remains to be done.

Parameters
executionThe execution synchro
Returns
The remaining amount
e_smx_state_t simcall_process_execution_get_state ( smx_synchro_t  execution)

Returns the state of an execution synchro.

Parameters
executionThe execution synchro
Returns
The state
void simcall_process_execution_set_priority ( smx_synchro_t  execution,
double  priority 
)

Changes the priority of an execution synchro.

This functions changes the priority only. It calls a surf function.

Parameters
executionThe execution synchro
priorityThe new priority
void simcall_process_execution_set_bound ( smx_synchro_t  execution,
double  bound 
)

Changes the capping (the maximum CPU utilization) of an execution synchro.

This functions changes the capping only. It calls a surf function.

Parameters
executionThe execution synchro
boundThe new bound
void simcall_process_execution_set_affinity ( smx_synchro_t  execution,
sg_host_t  host,
unsigned long  mask 
)

Changes the CPU affinity of an execution synchro.

This functions changes the CPU affinity of an execution synchro. See taskset(1) on Linux.

Parameters
executionThe execution synchro
hostHost
maskAffinity mask
smx_process_t simcall_process_create ( const char *  name,
xbt_main_func_t  code,
void *  data,
const char *  hostname,
double  kill_time,
int  argc,
char **  argv,
xbt_dict_t  properties,
int  auto_restart 
)

Creates and runs a new SIMIX process.

The structure and the corresponding thread are created and put in the list of ready processes.

Parameters
namea name for the process. It is for user-level information and can be NULL.
codethe main function of the process
dataa pointer to any data one may want to attach to the new object. It is for user-level information and can be NULL. It can be retrieved with the function simcall_process_get_data.
hostnamename of the host where the new agent is executed.
kill_timetime when the process is killed
argcfirst argument passed to code
argvsecond argument passed to code
propertiesthe properties of the process
auto_restarteither it is autorestarting or not.
void simcall_process_kill ( smx_process_t  process)

Kills a SIMIX process.

This function simply kills a process.

Parameters
processpoor victim
void simcall_process_cleanup ( smx_process_t  process)

Cleans up a SIMIX process.

Parameters
processpoor victim (must have already been killed)
void simcall_process_set_host ( smx_process_t  process,
sg_host_t  dest 
)

Migrates an agent to another location.

This function changes the value of the host on which process is running.

Parameters
processthe process to migrate
destname of the new host
void simcall_process_suspend ( smx_process_t  process)

Suspends a process.

This function suspends the process by suspending the synchro it was waiting for completion.

Parameters
processa SIMIX process
void simcall_process_resume ( smx_process_t  process)

Resumes a suspended process.

This function resumes a suspended process by resuming the synchro it was waiting for completion.

Parameters
processa SIMIX process
int simcall_process_count ( void  )

Returns the amount of SIMIX processes in the system.

Maestro internal process is not counted, only user code processes are

int simcall_process_get_PID ( smx_process_t  process)

Return the PID of a smx_process_t.

Parameters
processa SIMIX process
Returns
the PID of this process
int simcall_process_get_PPID ( smx_process_t  process)

Return the parent PID of a smx_process_t.

Parameters
processa SIMIX process
Returns
the PID of this process parenrt
void* simcall_process_get_data ( smx_process_t  process)

Return the user data of a smx_process_t.

Parameters
processa SIMIX process
Returns
the user data of this process
void simcall_process_set_data ( smx_process_t  process,
void *  data 
)

Set the user data of a smx_process_t.

This functions sets the user data associated to process.

Parameters
processSIMIX process
dataUser data
sg_host_t simcall_process_get_host ( smx_process_t  process)

Return the location on which an agent is running.

This functions returns the sg_host_t corresponding to the location on which process is running.

Parameters
processSIMIX process
Returns
SIMIX host
const char* simcall_process_get_name ( smx_process_t  process)

Return the name of an agent.

This functions checks whether process is a valid pointer or not and return its name.

Parameters
processSIMIX process
Returns
The process name
int simcall_process_is_suspended ( smx_process_t  process)

Returns true if the process is suspended .

This checks whether a process is suspended or not by inspecting the task on which it was waiting for the completion.

Parameters
processSIMIX process
Returns
1, if the process is suspended, else 0.
xbt_dict_t simcall_process_get_properties ( smx_process_t  process)

Return the properties.

This functions returns the properties associated with this process

e_smx_state_t simcall_process_sleep ( double  duration)

Creates a new sleep SIMIX synchro.

This function creates a SURF action and allocates the data necessary to create the SIMIX synchro. It can raise a host_error exception if the host crashed. The default SIMIX name of the synchro is "sleep".

Parameters
durationTime duration of the sleep.
Returns
A result telling whether the sleep was successful