Skip to content
Benoît Cortier edited this page Sep 20, 2023 · 7 revisions

Grouping tasks can be useful, whenever your tasks utilize different system resources.
A possible scenario would be to have an io group for tasks that copy large files.
At the same time there's the cpu group, which will execute your cpu-heavy (e.g. reencoding) tasks.

The parallelism setting of io could then be set to 1 and cpu be set to 2.
As a result, there'll always be a single task that copies stuff, while two cpu-heavy tasks try to utilize your cpu as good as possible.
This can prevent task constellations, which might choke your system, while at the same time maximizing resource utilization.

Add and remove groups

The addition and removal of groups is managed with the group subcommand.

  • New groups can be added with pueue group add. For instance, pueue group add cpu will create the cpu group.
  • Groups can be removed with pueue group remove. pueue group remove cpu.
  • Show all existing groups by calling group without any parameters, i.e. pueue group.

Add tasks to a group

You can specify in which group a task should be run in with the add -g flag.
For example, pueue add -g cpu -- 'sleep 60'.
The sleep 60 task will then be run in the cpu group.

If no group is specified, the task will just be added to the default queue.

Specify parallel tasks per group

You can set the amount of parallel tasks per group. Just call the parallel subcommand with the -g flag.

For instance, pueue parallel -g cpu 2. The cpu group will now always run up to two tasks at the same time.

Pueue status with groups

By default, the status command shows all groups with any tasks.
If you have too many groups, you can also look at a specific group with the status --group $NAME option.

Pause and resume specific groups

Just as pause and start pauses/resumes the whole daemon and all running tasks, you can also pause/resume groups and their tasks.
To pause a specific group use the --group flag.

For instance, pueue pause -g cpu will pause all tasks in the cpu group. This also stops any new tasks from being started in this group.