Just a heads up, we don't have a huge amount of space on this machine, ~750 GB for the git repos. We can include some data in the projects, but really big datasets will need to remain elsewhere. For anyone new to Git, this is a fairly good place to start: http://gitref.org/index.html Documentation for Gitlab is available here: http://doc.gitlab.com/

Commit 7089edeb authored by Khalid Kunji's avatar Khalid Kunji

Update README.md

parent 9e471622
......@@ -45,11 +45,33 @@ Examples:
run_GIGI ./INPUTS/Sample_Input/param-v1_06.txt -o ./OUTPUTS -n test_run #Output in ./OUTPUTS/test_run
run_GIGI ./INPUTS/Sample_Input/param-v1_06.txt -o ./OUTPUTS -n test_run -l #Output in ./OUTPUTS/test_run for a parameter file in the long format, do not cut and paste this one because the included param-v1_06.txt is not in the long format
run_GIGI ./INPUTS/Sample_Input/param-v1_06.txt -t 2 #Limit to only 2 threads (and hence two chunks)
run_GIGI ./INPUTS/Sample_Input/param-v1_06.txt -m 1000 #Limit memory use to 1 GB, not yet implemented, asking for both thread and memory limits may result in impossible scenarios.
run_GIGI ./INPUTS/Sample_Input/param-v1_06.txt -lmt 1000 2 #Limit memory use to 1 GB and threads to 2 with input in the long format, not yet implemented, asking for both thread and memory limits may result in impossible scenarios, do not cut and paste this one because the included param-v1_06.txt is not in the long format
run_GIGI ./INPUTS/Sample_Input/param-v1_06.txt -m 1000 #Limit memory use to 1 GB, please read the section on memory and cgroups
run_GIGI ./INPUTS/Sample_Input/param-v1_06.txt -lmt 1000 2 #Limit memory use to 1 GB, please read the section on memory and cgroups, and threads to 2 with input in the long format, do not cut and paste this one because the included param-v1_06.txt is NOT in the long format
```
If there is a problem that makes GIGI stop before completion, then the output files are left as they are in order to allow users to rerun only failed portions as needed.
If you are unsure where the failure occurred, then the safest approach will be to remove the output files before rerunning (e.g. rm -R [OUTPUT FOLDER]/[RUN NAME]), always use rm with caution
e.g. if the 2nd example failed, I would "rm -R ./OUTPUTS/test_run" before rerunning.
\ No newline at end of file
If you are unsure where the failure occurred, then the safest approach will be to remove the output files before rerunning (e.g. rm -R [OUTPUT FOLDER]/[RUN NAME]), always use rm with caution as always
e.g. if the 2nd example failed, I would "rm -R ./OUTPUTS/test_run" before rerunning.
#### Memory and cgroups
We handle memory restrictions using cgroups. After looking at a number of different memory limiting mechanisms we saw this as the best solution, unfortunately it has some caveats. One is that root/sudo access is required to create the initial cgroup. If you are on a shared machine then we encourage you to discuss this with your system administrator if you intend to use the cgroups. For most shared clusters, we encourage you to use the built in memory limiting mechanims of your submission system (e.g. qsub, SLURM, Torque) instead of limiting it through run_GIGI, most of these also themselves make use of cgroups (e.g. https://slurm.schedmd.com/cgroups.html).
If you are using this on your own system where you have root/sudo access, then you will need to make sure that your cgroups are set up and that you have your equivalent of the libcgroup library installed for the cgcreate and cgexec commands for your distribution.
If you have a very old (e.g. maybe 7+ years old) kernel, then you may need to install a newer kernel that has cgroups (they are part of the Linux kernel technically).
Here is a list of common distributions and links to help/documentation on cgroups
Redhat: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/ch-Using_Control_Groups.html
Here is some distribution agnostic information on cgroups: http://man7.org/linux/man-pages/man7/cgroups.7.html
https://www.kernel.org/doc/Documentation/cgroup-v1/
We may soon also add the ability to control swap usage through cgroups, some distributions need a kernel parameter set at boot to allow this (Debian, Ubuntu, Arch, ??).
See the issue and solution here: http://matthewkwilliams.com/index.php/2016/03/17/docker-cgroups-memory-constraints-and-java-cautionary-tale/
The same method in a shorter read here: https://unix.stackexchange.com/questions/147158/how-to-enable-swap-accounting-for-memory-cgroup-in-archlinux
Be careful when editing this boot line, mistakes may cause your machine to fail to boot linux. This will not harm your data but you may need to manually fix or reinstall your bootloader.
Useful resource for that situation: https://help.ubuntu.com/community/Grub2/Troubleshooting#Editing_the_GRUB_2_Menu_During_Boot
One could also edit during boot like that to test the line without making it permenent. Thereby avoiding any more serious GRUB issues than a single failed boot.
If you have messed up your GRUB and can't figure out how to get it back, the most reliable method I have used to reliably get back GRUB is to reinstall via chroot: https://help.ubuntu.com/community/Grub2/Installing#via_ChRoot
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment