Reducing power consumption
In order to reduce energy consumption, I have implemented new switches and functions.
The switches (which can be used in the a or add commands) are:
-slow-shutdown-monitor(Windows only)
Example command:
zpaqfranz a z:\1.zpaq c:\pippo -slow -monitor -shutdown
-slow
The -slow switch attempts to disable the TurboBoost feature on modern CPUs, limiting their maximum frequency and, as a result, reducing energy consumption.
In certain circumstances, when the most relevant phase is deduplication rather than compression, the operating system might activate the CPU's maximum power consumption mode (e.g., calculating SHA1 for file fragments) in a situation where it is essentially unnecessary.
In these cases, -slow can reduce power consumption by up to 30% (at least on modern AMD CPUs; I haven't tested Intel CPUs), with essentially no slowdown in total execution time (or at most, a slight percentage decrease). It also reduces noise on systems with variable power cooling (fans, pumps, etc.).
The method is "fairly" reliable on Windows, while on non-Windows systems, it "might" work on Linux. Interacting with hardware is complex, so I cannot guarantee anything.
-monitor (only on Windows)
The -monitor switch puts the Windows monitor into standby mode (Note: I have not tested multi-monitor systems yet, but I will in the future). This reduces electricity consumption, especially for long sessions (hours) when the computer is not in use.
For non-Windows systems, it’s a nightmare due to the various versions of X, non-X systems, consoles, and so on. It's too complicated, and I don't think I will tackle it.
-shutdown
The -shutdown switch attempts to "mercilessly" shut down the system after completing an a (add) command, which is used to add data.
For non-Windows systems, I had to come up with heuristic methods to find, or not find, sudo. For some reason, sudo is widely used but not everywhere.
On Windows machines, it might not always be able to "kill" all running processes. I did my best, but as always, nothing is easy on Windows.
These functions can also be invoked manually with advanced work commands.
"Merciless" shutdown
zpaqfranz work shutdown
Activate "turbo" mode from command
zpaqfranz work big turbo
Deactivate "turbo" mode from command
zpaqfranz work big noturbo
Windows: Turn off monitor (low power mode)
zpaqfranz work monitoroff
Windows: Turn on monitor
zpaqfranz work monitoron
Upon request, I will also try to include a changelog