- C++ 98.2%
- Makefile 1.8%
| Changelog | ||
| CircularBufferFilter.hh | ||
| Cores.hh | ||
| ExecutionSummary.hh | ||
| LICENSE-GPL-3.0.txt | ||
| Makefile | ||
| Observer.hh | ||
| ProcessData.hh | ||
| ProcessHistory.hh | ||
| ProcessList.hh | ||
| ProcessTree.hh | ||
| README.md | ||
| runsolver.cc | ||
| runsolver.d | ||
| runsolver.spec | ||
| SignalNames.cc | ||
| SignalNames.d | ||
| SignalNames.hh | ||
| TimeStamper.hh | ||
| vlineSplitter.cc | ||
| Watcher.hh | ||
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, andUbuntu 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-limitlimits 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.