Process Lasso 10 – A Major Milestone
Process Lasso v10 has made its debut! This version refactors the log, adds a new sampling capability, allows CPU affinity and priority rules to be ordered, shortens menu captions, integrates with Crowdin, and has myriad other improvements. Let’s go through some of the many changes…
Ordered CPU Affinity and Priority Rules
We’ve had many requests from users who wanted to create ordered rulesets. That is, they want to create wildcard (or RegExp) rules that apply to many processes, but have previous rules take precedence. For instance, a user might want all processes matching n*.exe to have a CPU affinity of 0-1, but have notepad.exe be an exception with a CPU affinity of 2-3. This previously required some fancy RegExp gymnastics, but now it is simple. Create a rule for notepad.exe, then follow it with the n*.exe wildcard rule.
The log in prior versions was a binary format, thus a more accessible CSV rendition required using an export function, or the in-tandem CSV log emission option. No more! The primary log is now CSV format, so no transforms need to be done. An added benefit is reduced disk I/O since the prior format used fixed-size records. Further, all CSV operations, such as copy-to-clipboard from listviews and the new sampling feature, are run through the same code, improving consistency and interoperability. We believe the logs will now be much more usable.
A new process sampling capability was added. This will emit a periodic CSV dump of various process metrics. This is useful to audit process activity. Sure, this could easily be scripted, but we got a request to add this because many customers found that PowerShell was too heavy to run effectively during high loads. We did, however, match field names to those PowerShell would emit, where possible (some fields we report don’t exist in PowerShell’s process object).
Some of our menu captions were long phrases. This didn’t present well. We’ve now shortened and standardized them, capitalizing most words for readability. As with any string change, there was hesitancy because it means all our translations must be updated. However, this needed done!
Finally, we’ve integrated with an online service called Crowdin. This took some work, and a new monthly expense, but is well worth it. Our translations are now easily edited online and collaboration with contributors is much easier. If you’d like to contribute, see this page.
Process Lasso v10.0.0.164 Changelog – March 12 2021
- Refactored log system with CSV as primary
- Ordered CPU affinity and priority rules
- Periodic process sampling (snapshots)
- GUI improvements
- CrowdIn integration for translations
- Numerous fixes and enhancements
(1) GUI: Further increase multi-threadedness of display updates (1) GUI: On config save error, show error message and offer to elevate (3) GUI: Add code to enable asynchronous listview updates (5) Core: Enforce SmartTrim exclusions when only basename given (5) GUI: Add menu item for direct access to SmartTrim exclusions (5) GUI: Check 'Induce Performance Mode' context menu item when appropriate even if no pathname available (5) GUI: When when adding SmartTrim exclusion by context menu use basename if no pathname available (7) Localization: Integration with Crowdin (translation platform) (11) GUI: Adjust default column ordering of Active Processes listview (15) GUI: Integrate more languages to Crowdin (17) Core: Add registry setting for max log file size before rotate (HKLM\Software\ProcessLasso\MaxLogFileSize) (17) Core: Tweak default log file size limit (19) Core: Add periodic process sampling function (emits to CSV) (19) Core: For process creation log events, remove 'UNKNOWN PARENT' text when parent doesn't or isn't applicable (now empty string) (19) GUI: Add new menu item 'Options / Log / Configure sampling ...' to open sampling configuration dialog (27) Core: Strip unavailable CPUs from CPU affinity prior to their application to handle system config change to CPU count (39) GUI: Add 't' rule character for SmartTrim exclusion (41) Core: Fix SmartTrim log entry possible integer underflow on RAM freed display (43) GUI: Replace active processes listview embedded CPU utilization visual with text (unicode blocks) based representation (43) GUI: Support Dark Mode for Win10 build 21286 (47) GUI: Add 'View / Graph components / Show power profile' to toggle power profile text on graph (49) GUI: About dialog: Add 'Help Translate Process Lasso' syslink (49) GUI: About dialog: Remove 'translated by' (49) GUI: Show 'Update not available' message box on same monitor as application (49) GUI: Try to set critical level I/O priorities despite being reserved for system paging operations. Add info message stating such. (51) GUI: Switch to 'KB' suffix on memory metrics to standardize (53) GUI: Improve CSV formatting of data copied to cliboard from listview selections (57) Log: Standardize all CSV output files as UTF-8 encoding /W BOM (59) Log: Add system time field in addition to local time (not displayed) (59) Log: Remove deprecated log format marker file (67) GUI: Make log listview updates more smooth (69) GUI: Improve behavior of initial log listview population (71) Core: Batch log writes to once per iteration (73) All: Don't dual-sign with SHA1 anymore, only SHA2 (73) All: Switch to Bitsum 2021 EV code signing certificate (75) Logging: Change log filename to 'processlasso.log' (75) Logging: Performance improvements (75) Logging: Reduce disk I/O (75) Logging: Refactored to use CSV format as primary (75) Logging: Remove now redundant 'Export log to CSV' menu item (77) Core: Enforce CPU affinity rules in order configured (77) GUI: Add up/down buttons to CPU affinity rule config dialog (77) Logging: Log default path when GaaP is now LOCAL_APPDATA instead of APPDATA (roaming) (81) Core: Changed default config path when GaaP to LOCAL_APPDATA instead of APPDATA (roaming) (81) Install: Cleanup some deprecated code and file(s) (81) Install: Do one-time migration of config when Governor installed a normal process, from roaming to local profile (83) Core: Fix I/O priority adjustments during ProBlaance events were logged despite log disabled (83) GUI: Remove now redundant 'Emit CSV' log option (85) GUI: Several menu caption changes (87) Core/GUI: Add option to toggle logging of process command lines (defaults off) (87) Core: Cleanup old log files in APPDATA (91) GUI: Refactored code behind 'ProBalance time' tracking column (93) GUI: Assorted improvements (93) GUI: Refactored code behind graph highlight (ProBalance event) tooltips (95) GUI: Adjust limits to max log rows in GUI and LogViewer listviews (99) GUI: Change 'Terminate' to 'Close' (graceful) (99) GUI: Fix issue with 'Terminate Now' and suspended processes (99) GUI: Make 'Terminate Now' always instantaneous (no attempted graceful close) (101) Core/GUI: Migrate to new close/terminate functions (affects all features that terminate processes) (101) GUI: Further refactoring of close/terminate functions (101) GUI: Remove menu options to configure graceful close timeout (101) GUI: Resurrect graceful close wait dialog, offering immediate termination by link click (101) GUI: Some refactoring surrounding graceful process close timeout (105) GUI: Advance major version to 10.0.0 (105) GUI: Dark mode support for menu bar (107) GUI: Add process status column to Active processes listview (107) GUI: Force filtered views to adopt saved columnn view layot info of unfiltered listviews (107) GUI: Force reset of saved listview column view layout (107) GUI: Refactoring of listview column view layout persistence (all, active, log) (107) GUI: Remove CPU graph from active processes listview (109) GUI: Adjust log context menu item captions (109) GUI: Disable some log context menu items when multiple rows selected (109) GUI: More menu captions switched to new standard (111) Core: Improve formatting of process terminated log entries when runtime is 0 seconds (111) GUI: Fix filter edit controls could lose top border (115) Core: Guarantee order precedence of CPU priority class rules (115) GUI: Add up/down buttons to CPU priority class dialog rules (117) Core: Fix issue where multiple simultaneous Keep Awake rules of differing types could lose lesser display awake attribute (123) Core: Improve ordering of SmartTrimExclusions key in INI config (125) GUI: Add config dialog for Windows Dynamic Thread Boost disabled processes (125) GUI: Add wildcard support to Windows Dynamic Thread Boosts (127) GUI: More menu item captions switched to new standard (WiP) (129) GUI: Add 'Launch processes elevated' checkbox to Keep Running and Watchdog dialogs (an HKLM Lasso registry setting) (129) GUI: Add 'use any' to name field of activation dialog (131) Core/GUI: Add new INI setting for foreground boost priority class (default is 0x8000 for Above Normal) (131) GUI: Move some menu items (Foreground boosting and Dynamic thread priority boosting) (133) All: Copyright years to 2021 (133) GUI/LogViewer: In dark mode, make filter edit control backgrounds darker than parent to increase visibility (133) GUI: Change watchdog 'execute' action caption to 'launch a program' (135) GUI: Move memory priority in process rule string to after CPU affinity for improved clarity (137) GUI: Add general setting to write latest responsiveness measurement to registry (in HKLM\Software\ProcessLasso\LastResponsinenessMeasurement) (137) GUI: More menu item work (137) Languages: Updates to Chinese Simplified (141) Languages: Updates to French and Russian (145) Installer: Remove superfluous CANCEL button on installer message confirming download of correct edition (now YES/NO) (145) Languages: Update PT-BR (147) GUI: Cosmetic work to Keep Running config dialog (149) GUI: Remove warning when process edit box is still populated on dialog close from several config dialogs (151) GUI: Add log action text for ProBalance end due to termination and foreground (151) GUI: Advise Keep Running not supported with GaaS on context or config menu, direct to info on switching to GaaP (151) GUI: Allow Keep Running rules to be removed by context menu even if not Pro (151) GUI: Cosmetic work to Memory Priorities dialog (153) Languages: Update Polish (155) Languages: Update Italian (157) Core: Add log entry description for ProBalance begun evaluation event (157) Updater: Terminate ThreadRacer if open (159) GUI: Adjust persistent priority class dialog listview column header (159) GUI: Improve default actions log sorting behavior (161) Languages: Update Russian (163) Languages: Fix a format specifier in watchdog actions that was incorrect in some languages (163) GUI: Expand vertical size of CPU priority rules dialog (163) GUI: In several dialog listviews, reserve space so when vertical scrollbar shown, horizontal isn't also (163) GUI: Fix GUI would stay in dark mode if Windows theme changed from dark to light while GUI not running (164) LogViewer: One-time reset of column layout and sizes (164) GUI/LogViewer: Expand default date/time column size (164) GUI: Expand default PID column width throughout (164) GUI: Force light mode for About dialog for better appearance