create new tag
view all tags

Executable Module Caching

Here's the basic scheme:

  • Processes are only removed from the cache when a new process needs to enter the cache (i.e. we never trim the cache when you end a process, only when you start a process).

  • Every process is placed in the cache when it is loaded - if the cache is full, some processes may be removed.

  • The cache is considered to be full if the number of processes in the cache exceeds the user's cache quota (defaults to 15).

  • Active processes are never removed from the cache.

  • A subprocess is active as long as it's family is active.

  • When trimming the cache, we remove as many low-priority, inactive processes as need to bring the cache back to the desired size (as determined by the user's cache quota).

  • While trimming the cache, we will remove all inactive processes that have a priority lower than the user's cache priority, even if the cache is not full.

  • A user's cache priority defaults to 15.

This means that:
  • Since the default priority assigned to each process is 50, all processes are considered equal when we start trimming the cache.

  • If you have a low priority process, it will be trimmed before higher priority processes.

  • If you have a high priority process, it will tend to stay in the cache longer than low priority processes.

  • Since the default cache level for a user is 15, processes with a priority lower than 15 will not stay in the cache.

  • The cache can hold more processes than the user is allowed - this happens when the user has more active processes.

  • The documentation is wrong when it states that related and detached processes are not cached.

The basic idea is that you use the process cache priority to say that one process has a higher priority than another. For example, the SCAN process in Appx has (or should have) a cache priority around 75 - it's very important to keep that cached. The HELP process could be about 25 - if you need help, you're already slowed down anyway.

You modify a user's cache priority (and cache size) to control how important the user is. For example, you probably want to give your heads-down data entry operators a large cache size (and high priority) so that the processes that they need are always ready. But, for the occasional user that just wants to get in a bop around for a while, you can lower their size.

Remember that the user cache priority is used to determine the set of processes which will never be cached (by that user). So, you want that number to be pretty low for the typical user. For example, if you have a "Joke-of-the-day" process, you probably want that process to have a priority lower than 15 so that it won't stay in anybody's cache.


Read what other users have said about this page or add your own comments.

Topic revision: r1 - 2012-02-29 - ChrisBrower
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback