====== 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 [[http://sdf.org/?tutorials/bboard-tutorial|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 $