# Personal Responsibility on SDF's Multi-User Environment

As SDF's mission is to support the advancement of public education, cultural enrichment, scientific research and recreation, you are encouraged to be creative and bold in your use of the numerous resources available with your membership level. While you are getting to work on projects, just please keep an eye on your resource usage so that you do not adversely impact the enjoyment of this system by others. Bugs in your code or other errors can devour the CPU from time to time, and mistakes like these are part of the learning process, but conscious overuse of system resources will likely get your processes killed and, possibly, your account locked. Luckily you have your fellow users to alert you if you're accidentally exceeding a fair share of system resources.

The 'top' command is a great tool if you want to see what is causing system sluggishness, or if you just want to monitor your own system resource usage. A quick web search for "unix process monitoring tools" will give you a host of other tools as well.

If you observe system use that is bringing the system to its knees, please reach out to the user to let them know. Email is an obvious way to contact them, or try checking their SDF web or gopher site for other contact information. If that fails, make a post on bboard describing the problem and others may be able to help.

Beyond simply monitoring your resource usage, you can set limits that will prevent a misfiring program from consuming excessive resources. This is especially important for MetaARPA members who have higher limits on system resource usage.

Most shells have a ulimit command which can be used to view or set limits. See `man 3 ulimit` or (in some shells) `ulimit --help`. This shell command calls the C runtime library's ulimit() call which itself calls into the Unix system calls for getrlimit() and setrlimit().

`ulimit -a` will display all of your current limits:

    user@fnord.sdf.org $ ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 80133
    max locked memory       (kbytes, -l) 65536
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 1024
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 80133
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited

You can see from this display that the user has unlimited cpu time. To add a 1000 second limit to cpu time, issue the following command:

`ulimit -t 1000`

Note that, once set, you cannot increase the limit without killing the limited process and starting a new one. If you run this command directly from the shell, you will need to log out of the shell and back in again to reset it.

$Id: multiuser-responsibility.html,v 1.5 2020/02/28 02:10:14 cmccabe Exp $