No description
  • C++ 98.2%
  • Makefile 1.8%
Find a file
2025-02-14 15:36:56 -05:00
Changelog v3.4.1 2025-02-13 17:26:27 -05:00
CircularBufferFilter.hh v3.4.1 2025-02-13 17:26:27 -05:00
Cores.hh v3.4.1 2025-02-13 17:26:27 -05:00
ExecutionSummary.hh track VM and RSS+SWAP separately 2025-02-14 15:33:07 -05:00
LICENSE-GPL-3.0.txt v3.4.1 2025-02-13 17:26:27 -05:00
Makefile Take local install path 2025-02-13 18:15:06 -05:00
Observer.hh v3.4.1 2025-02-13 17:26:27 -05:00
ProcessData.hh v3.4.1 2025-02-13 17:26:27 -05:00
ProcessHistory.hh v3.4.1 2025-02-13 17:26:27 -05:00
ProcessList.hh v3.4.1 2025-02-13 17:26:27 -05:00
ProcessTree.hh v3.4.1 2025-02-13 17:26:27 -05:00
README.md fixed example commands 2025-02-14 15:36:56 -05:00
runsolver.cc Set correct data type 2025-02-13 18:14:41 -05:00
runsolver.d v3.4.1 2025-02-13 17:26:27 -05:00
runsolver.spec v3.4.1 2025-02-13 17:26:27 -05:00
SignalNames.cc v3.4.1 2025-02-13 17:26:27 -05:00
SignalNames.d v3.4.1 2025-02-13 17:26:27 -05:00
SignalNames.hh v3.4.1 2025-02-13 17:26:27 -05:00
TimeStamper.hh v3.4.1 2025-02-13 17:26:27 -05:00
vlineSplitter.cc v3.4.1 2025-02-13 17:26:27 -05:00
Watcher.hh track VM and RSS+SWAP separately 2025-02-14 15:33:07 -05:00

runsolver

Check branch history to view changes over original source code v3.4.1 http://www.cril.univ-artois.fr/~roussel/runsolver/.

Build

Note

Build instructions tested on make 4.3, g++ 13.3.0, and Ubuntu 24.04.2 LTS. The code is Linux specific.

make

Install

Copy the binary into a local applications directory which is on PATH (run echo $PATH to check):

make install INSTROOT=<installation-dir>

For system-wide installation (requires sudoers priviledge):

sudo make install

Cleanup Build files

make clean

Usage

runsolver --timestamp -C <cpu-limit-seconds> -W <wall-clock-limit-seconds>\
--rss-swap-limit <RSS+SWAP-limit> --vsize-limit <VM-limit> -w watch.log -v values.log -o tool_output.log\
 ./<path-to-solver-runnable> <tool-args>

Important

The type of memory limit is important as some programs may request a lot of virtual memory (VM) but only use a fraction of it. So, should be much greater than <RSS+SWAP-limit>. If in doubt, omit --vsize-limit <VM-limit> altogether.

  • --rss-swap-limit <RSS+SWAP-limit> Limits RSS (Resident Set Size, or in other words, amount of RAM used) and swap
  • --vsize-limit limits virtual memory (VM) usage

Example

runsolver -C 1800 --rss-swap-limit 8192 -w watch.log -v values.log -o tool_output.log ./<path-to-solver-runnable> <args>

limits the cpu time consumed to 1800 seconds and RSS to 8192 mega bytes.


runsolver Copyright (C) 2010 Olivier ROUSSEL (roussel@cril.univ-artois.fr)

runsolver is a program meant to control the ressources used by a solver. Basically, it can be seen as the integration of the time and ulimit commands, but it has several other features. It is able to timestamp each line output by a program, is able to handle correctly multithreads or multiprocesses programs (don't loose the time of the child even when the parent doesn't call wait()), is able to enforce strict limits on the memory usage, logs information on each process generated by the solver and is able to limit the size of the solver output.

This program is especially useful when you want to run a program and strictly control the ressources it uses.

This program was first used in the competitions of Pseudo-Boolean solvers (2005) and was later used in the SAT and CSP competitions.

For now, the code is Linux specific.

runsolver is free software, distributed under the terms of the [GNU] General Public License as published by the Free Software Foundation, version 3 of the License (or any later version). For more information, see the file LICENSE-GPL-3.0.txt.