NAME
serialize() — force target process to run serially with other processes
SYNOPSIS
#include <unistd.h>
int serialize(int timeshare, pid_t pid);
DESCRIPTION
The
serialize()
system call is used to force the target process referenced by the
pid
value passed in to run serially with other processes also
marked for serialization.
If the value of
pid
is zero, then the currently running process is
marked for serialization.
Once a process has been marked by
serialize(),
the process stays marked until process completion, unless
serialize()
is reissued on the serialized process with
timeshare
set to 1.
If
timeshare
is set to 1, the process specified in
pid
will be returned to normal timeshare scheduling algorithms.
This call is used to improve process
throughput since process throughput
usually increases for large processes
when they are executed serially instead
of allowing each program to run for only a short period of time.
By running large processes one at a time,
the system makes more efficient use of the CPU
as well as system memory,
since each process does not end up constantly
faulting in its working set,
to only have the pages stolen when another process
starts running.
As long as there is enough memory in the system,
processes marked by
serialize()
behave no differently from other processes in the system.
However, once memory becomes tight,
processes marked by
serialize()
are run one at a time with the highest
priority processes being run first.
Each process runs for a finite interval of
time before another
serialized process is allowed to run.
RETURN VALUE
serialize()
returns zero upon successful
completion, or nonzero if the system call failed.
ERRORS
If
serialize()
fails, it sets
errno
(see
errno(2))
to the following value:
- ESRCH
The
pid
passed in does not exist.
WARNINGS
The user has no way of forcing an
execution order on serialized processes.
AUTHOR
serialize()
was developed by HP.