INI Configuration File

Process Lasso logo

Process Lasso

main index ]

Using the INI Configuration File

The configuration options and process rules are stored in INI configuration file(s). You can manually edit this INI file, import/export it, choose an alternate INI file to use, or pretend it doesn’t exist.  Usually system and network administrators, or those with a lot of process rules need to manually tweak the INI file. Otherwise, the Process Lasso graphical user interface (GUI) will help you edit it. There an option in the File menu to manually open it, if you must. This is discouraged though.

Configuration Profiles

When you create a new ‘config profile’ under the File menu, a new subdirectory and ‘prolasso.ini’ configuration is created. Then you can swap between the configurations. OR you can just use the ‘default’ configuration, which does not mean the default settings, just the un-named root (beginning) configuration file.

Where is the INI configuration file located?

By default, Process Lasso automatically generates a configuration file for each user context in which it runs. These configuration files are located in the “ProcessLasso” subfolder of the respective user’s application data folder. The log is also stored in this same location. The ‘About’ window of Process Lasso will show the full paths.

Administrators can change the path of the configuration file so that all instances of Process Lasso/Process Governor use the same configuration file. This can be done running the installer again and choosing a global configuration path in the second configuration dialog.

Sample Configuration File


#
# prolasso.ini configuration file [sample]
# any line not recognized is ignored
#
[OutOfControlProcessRestraint]
OocOn=True
TotalProcessorUsageBeforeRestraint=85
PerProcessUsageBeforeRestraint=20
TimeOverQuotaBeforeRestraint=2800
PerProcessUsageForRestore=10
PlayOnRestraint=C:\Windows\media\Windows Pop-up Blocked.wav
PlayOnRestore=C:\Windows\media\Windows Feed Discovered.wav
MinimumTimeOfRestraint=6000
TameOnlyNormal=True
LowerToIdleInsteadOfBelowNormal=False
ExcludeServices=False
PlaySoundOnRestraint=False
PlaySoundOnRestore=False
RestrainByAffinity=False
RestraintAffinity=
ExcludeForegroundProcesses=True
DoNotLowerPriorityClass=False
OocExclusions=
[GUI]
HideGraph=False
HideProcessIcons=False
ShowGraphLegend=True
ClearLogAtExit=False
[Performance]
ManageOnlyCurrentUser=True
ExitOnCloseWindow=False
BoostForegroundThread=False
BoostForegroundProcess=False
SoundsOff=True
AggressivelyTrimProcessLassoWorkingSet=True
CloseApplicationTimeoutSeconds=10
ForcedMode=False
[Updates]
CheckForUpdates=False
[SystemTrayIcon]
UseStaticIcon=False
ShowResponsivnessInTrayInsteadOfProcessorUsage=False
[Logging]
LogAllProcessesExecuted=False
LogProcessesDisallowed=True
LogDefaultPriorityAdjustments=True
LogDefaultAffinityAdjustments=True
LogOutOfControlProcessesRestrained=True
LogOutOfControlProcessesRestored=True
LogInstanceLimitTerminations=True
MaximumLogEntries=50
[MemoryManagement]
TrimAllProcessesAtThisIntervalInMs=0
[SysTrayBalloons]
ShowBalloons=False
BalloonTipDuration=10000
ShowBalloonsForOocPriorityRestoration=False
[Performance]
UpdateSpeed=1000
[ProcessAllowances]
AllowedProcesses=badprog2.exe
DisallowedProcesses=badprog*.exe
InstanceLimitedProcesses=word.exe,excel.exe
[ProcessDefaults]
DefaultPriorities=notepad.exe,above normal;calc.exe,above normal
DefaultAffinities=notepad.exe,1;calc.exe,0
MatchWildcardsToPathnames=False
[AdvancedRules]
WatchdogRules=someproc1.exe:billy;0;2;100;2000;0;0;0,someproc2.exe:joe;0;2;100;2000;0;0;0

Names encapsulated in ‘[‘ and ‘]’ are groups of options. Each group has one or more options (called keys) that are set to values. Each key is optional, and if it doesn’t exist the default value is used. Lines that do not contain a recognized key or group name are ignored. This file is not case sensitive.

Groups Overview

Group Description Keys
Performance Configures performance related parameters. UpdateSpeed
OutOfControlProcessRestraint Configures parameters related to restraint of out of control processes (those consuming too many system resources). OocOn
TotalProcessorUsageBeforeRestaint
PerProcessUsageBeforeRestraint
TimeOverQuotaBeforeRestraint
ProcessUsageQuotaCausingRestore
OocExclusions
ProcessAllowances Configures processes allowed and disallowed from execution. AllowedProcesses
DisallowedProcesses
InstanceLimitedProcesses
MatchDisallowedWildcardsToPathnames
ProcessDefaults Configures default process priorities. DefaultPriorities
Logging Configures logging options. LogAllProcessesExecuted
LogProcessesDisallowed
LogDefaultPriorityAdjustments
LogOutOfControlProcessesRestrained
LogInstanceLimitTerminations
MaximumLogEntries
AdvancedRules Sets more advanced process rules. WatchdogActions

Keys

Defined keys (options) and their accepted values are as follows:

Group Key Description Accepted Values and Format Default Value
Performance UpdateSpeed The interval between enumerations of running processes by ProcessGovernor and ProcessLasso, in milliseconds. The lower the interval more responsive the applications are to changes in running processes, but more CPU cycles are used. Any non-negative number. It is not recommended to exceed 4000ms or go below 500ms. It is recommended to keep this value the default. 1500
Performance ForcedMode When forced mode is enabled, Process Lasso more aggressively enforces default priorities and affinities. Some applications change their own priorities, and this setting may be necessary in such cases. ‘True’ if this feature is enabled, ‘False’ if not. False
OutOfControlProcessRestraint OocOn Toggles out-of-control process restraint on or off. ‘True’ if this feature is enabled, ‘False’ if not. True
OutOfControlProcessRestraint TotalProcessorUsageBeforeRestraint The percentage of processor(s) in use that initiates a check of processes that may be out-of-control. While the total processor usage is below this threshold, processes are not restrained. This value includes usage of all processors on a system. Range: 1-100. 75
OutOfControlProcessRestraint TimeOverQuotaBeforeRestraint Number of milliseconds above ProcessorUsageQuota before the process priority is lowered. Any non-negative number. 1750
OutOfControlProcessRestraint PerProcessUsageQuotaBeforeRestraint The percentage of processor(s) in use by a process before its priority is reduced. Note that TotalProcessorUsageBeforeRestraint must have already been met. 1-100. This value must be equal to or lesser than ProcessorUsageQuota. 20
OutOfControlProcessRestraint PerProcessUsageQuotaForRestore The percentage of processor(s) in use by a process that is considered a safe enough value to restore a preciously restrained process to its original priority. 1-100. This value must be equal to or lesser than ProcessorUsageQuota. 5
OutOfControlProcessRestraint OocExclusions Processes excluded from out-of-control restraint. This is a comma delimitered list of process names. Wildcards are allowed.
Format:
process1,process2,process3
Example:
taskmgr.exe, game*.exe
None.
AdvancedRules WatchdogRules Complex watchdog operations. See below. n/a
ProcessAllowances DisallowedProcesses Processes disallowed to execute. If a process is launched matching a specification in this list, it will be terminated. This is a comma delimitered list of process names. Wildcards are allowed.
Format:
process1,process2,process3
Example:
taskmgr.exe, game*.exe
ProcessAllowances AllowedProcesses Processes allowed to execute. These are only applicable if they match a process specification in the DisallowedProcesses key. For example, if notepad*.exe is lised in DisallowedProcesses and notepad1.exe is listed in AllowedProcesses, then notepad1.exe will be allowed to execute, but notrpad2.exe will not. This is a comma delimitered list of process names. Wildcards are allowed.
Format:
process1,process2,process3
Example:
taskmgr.exe, game*.exe
None.
ProcessAllowances InstanceLimitedProcesses This variables provides a list of processes who should be limited to no more than a certain number of instances in a given user session. This is a comma delimitered list of process names, with semicolons used to indicate the maximum instance count.
Example:
myprogram.exe;2
ProcessDefaults DefaultPriorities A list of default priorities for processes. This is a comma delimitered list of process names and priorities. Wildcards are allowed. Valid priorities are:

  • Real time
  • High
  • Above normal
  • Normal
  • Below normal
  • Idle

Format:
process1,priority1,process2,priority2
Example:
taskmgr.exe, high,*.scr,idle

None.
Logging LogAllProcessesExecuted Toggle logging of all processes executed. ‘True’ if enabled, ‘False’ if not. False
Logging LogProcessesDisallowed Toggle logging of processes terminated because they were disallowed. ‘True’ if enabled, ‘False’ if not. True
Logging LogDefaultPriorityAdjustments Toggle logging of processes whose priority was adjusted to a configured default value. ‘True’ if enabled, ‘False’ if not. True
Logging LogOutOfControlProcesses Toggle logging of processes restrained because they were found to be out-of-control. ‘True’ if enabled, ‘False’ if not. True
Logging MaximumLogEntries The maximum number of log entries. When the log file reaches this limit, it is resized to 80% of this value. Minimum reasonable value is 10. 500
Logging LogInstanceLimitTerminations Set to log terminations of processes based on their instance limit, as configured. ‘True’ if enabled, ‘False’ if not True

Peformance note: Process Lasso uses its own high performance INI parsing algorithm.

Documentation of WatchdogRules

(formerly OverloadProcessActions)WatchdogRules=someprocess.exe:billy;0;2;100;2000;0;0;0, …

Field 1 Field 2 Field 3 Field 4 Field 5 Field 6 Field 7 Field 8
Process PL ‘actualized’ base name and user Action Type Metric In Question Threshold Duration Action Specific Value Type Specific Value Compare Type

Field 1: Process PL ‘actualized’ base name and user
This field accepts the base name for which you want the rule to match. It is actualized into the format that you see Process Lasso display in its GUI. That means that service names and/or service group names may also be included in the base name. The username may also be specified by using a colon as a delimter. Both accept wildcards. Examples, “myprocess*.exe:MyUser”“myprocess*:My*”.

Field 2: Action Type

  • TERMINATE =0
  • RESTART = 1
  • AFFINITY_CHANGE = 2
  • TRIM_VM = 3
  • SET_CPU_PRIORITY = 4
  • SET_IO_PRIORITY = 5
  • STOP_PROCESSING_RULES = 6
  • LOG = 7

Field 3: Metric In Question

  • CPU = 0
  • MEMORY = 1

Field 4: Threshold
This is the threshold for action. If Field 3 is CPU, then this is % of total CPU used of time. If Field 3 is Memory (1), then this is MEGABYTES.

Field 5: Duration
This is the length of time the process remains over threshold before the watchdog action is triggered, stored in milliseconds.

Field 6: Action Type Specific
This can be any number of values depending on the Action Type

    If set to change CPU priorities

  • Desired CPU priority class (numeric)
    If set to change I/O priorities

  • Desired I/O priority (numeric)
    If set to change CPU affinity

  • Desired CPU affinity (numeric, stored as a bitmask in decimal)

Field 7: Type Specific Value

    When a CPU metric we are looking at:

  • unused = 0
    When a virtual memory metric we are looking at:

  • WORKING SET = 0
  • COMMIT CHARGE = 1
  • TOTAL VIRTUAL MEMORY = 2
  • ANY MEMORY METRIC = 3

Field 8: Comparison Type

  • UNDEFINED = 0
  • LESS THAN = 1
  • GREATER THAN = 2