Sensor icons only in system tray; memory footprint


New Member
I'm trying to replace AIDA64 with HWINFO32 and I have the following change requests:

1. Allow removing the main icon from the system try so that only the sensor icons remain as I prefer the system tray (and the desktop and everything else) as clean as possible. Of course, this means adding an extra item - besides the current "Remove" and "Change color" - into the context menu of the (sensor) tray icons, to be able to open the main program back again.

2. Although HWINFO32 uses about half the memory of what AIDA64 needs but I still find cca. 25 megabytes of memory way too much for displaying a few sensor values. Now I think there's a reason why AIDA64 has such a lot of DLL's... I'm guessing only but, maybe, functionality is divided into groups and one such group makes up one DLL; threads are running code from the DLL's but only from those DLL's whose functionality is actually needed; all other DLL's as well as the main program, which only acts as a loader and conductor for the DLL's, can be unloaded and their memory freed; when other functionality is needed again, one DLL loads and calls the other on demand. I admit this involves heavy code restructuring but I see there are (more serious) memory footprint problems with the DOS version, too.

3. Allow the disabling of the "Examining system configuration..." and "Detecting sensors..." splash screens, for completely silent startup.

4. Perhaps, skip a lot of the system configuration examination when in "sensor only" mode. Probably there's no need to query e.g. memory settings, hard disks, USB devices so thoroughly (or at all), which means faster startup.

5. Upon quitting the program, sensor tray icons remain until I hover the mouse cursor above them, when they disappear instantly. (Windows XP Professional 32-bit, SP3, heavily hacked, well-maintained.) It's the typical case of the system tray not being redrawn after the program exists; maybe, calls to Shell_NotifyIcon(), to remove tray icons upon exit, are missing?

6. If I understand correctly, only the background color of sensor tray icons can be changed, the foreground color is always white. I like the white foreground color but, perhaps, other users would like to be able to change that, too...?

Nevertheless, HWINFO32 is a nice software, and very compact compared to the functionality it offers, so these above are just minor annoyances. :) Thank you!
1. The main program icon is there to allow additional functions which are not present per sensor icon. You can easily configure Windows to hide / show always the icons you want, so it should be no problem to configure it to hide the main HWiNFO icon.

2. You can reduce the memory footprint of HWiNFO sensors if you go to Configure and disable the "Log all values for Report" option.

3. This option is currently not possible, it might be a future feature (showing the progress in system tray only).

4. This is already optimized in Sensor-only mode, but I'll look if this can be further reduced. Some items scanned might not appear to be required to the user, but internally they are (because of certain dependencies).

5. Did you terminate HWiNFO in a safe/proper way? This issue could happen if you kill an application which in this case doesn't get a chance to remove the tray icons.

6. If there will be more such requests, I'll put them into the to-do queue.
After a quick analysis I determined that I can slightly reduce the sensor-only start-up time by tuning memory parameters scan. This change will be available in the next build. On certain machines with nVidia or AMD GPUs which do not utilize GPU I2C sensors (like notebooks for example), you can reduce that time even more by disabling GPU I2C Support as well.

The next build will also allow to turn off the Shared Memory Support via Configure screen, which will result in memory usage reduced by ~2 MBytes. Currently you can disable the Shared Memory Support by putting the "SensorsSM=0" line at the end of HWiNFO32/64.INI file ([Settings] section).
I'll check for other possibilities how to reduce memory usage even more...
Thank you for your very fast reply!

1. Unfortunately, Windows removes tray icons by hiding them behind the small "<<" arrow. I don't want even that arrow. ;) I'm looking for software to really remove the icon(s) I don't need - I wrote one that minimizes windows to the tray so I can write one that removes icons, too - but that's another otherwise redundant program running on my system all the time which I really hate.

2. "Log all values for Report" is already disabled. (I disabled everything that I obviously didn't need.)

3. Okay.

4. Yeah, I guessed things inside are not as simple as they seem from the outside. I disabled "GPU I2C" in the Configuration window now and "SensorsOnly" is already set to 0 in the INI file but the memory footprint is still ~25 megabytes. :(

5. Nope, right click on the main icon, then "Quit". It's probably something specific to my system then; forget it, I'll experiment more to find out the exact reasons.

6. Okay.

Below is my current INI file:
Sorry, I told you previously not the correct setting to put into the INI file. The correct one (instead of "SensorsOnly=0") should be "SensorsSM=0". I fixed it in the above post.
So you should leave the SensorsOnly=1.

I'm currently working on more optimizations to the Sensor-only mode and expecting to achieve half of the previous memory usage ;)
Will post a new Beta here for test in few hours. Which one do you use - HWiNFO32 or HWiNFO64 ?
True, true, ~2 megabytes less memory used. \o/

I'm using HWiNFO32. (Good old Windows XP Professional 32-bit, SP3.)

The next thing I found is the CPU time used by HWiNFO32 when it refreshes the tray icons. (I have the CPU and GPU temperatures shown in icons.) This is obviously related to the "Scan Interval" value in the "Sensor Display Config" screen:
  • Default 2000 ms (2 s): Task Manager shows constant ~3%, with "Update Speed" set to "Normal" (2 s); at "High" (0.5 s), constant ~15%.
  • Lowered to 100 ms (0.1 s): CPU usage raises to constant ~15%.
  • Raised to 10000 ms (10 s), CPU usage is 0% most of the time and there are ~15% peaks every (how surprising!) 10 seconds.
This is an AMD Phenom 9750 with 4 cores; 15% of CPU time on this seems quite a lot to me! (AIDA64, with an update frequency of 5 seconds, has ~2% peaks instead.) Removing one of the sensor icons or adding half a dozen more doesn't change CPU usage. Actually, after removing both sensor icons, CPU usage is still the same, although there's nothing to show. ;) So, it's probably related to deeper parts of HWiNFO32 - my guess: the measurements - rather than updating the tray icons.
Yes, this is related to the scanning of certain sensors and not to the tray icons.
In each refresh cycle the full set of sensors is scanned for actual values and this costs some resources (depending on sensor type and particular implementation). There might be certain sensors which require a relatively lot of system resources to read data from them. Such examples are the EC sensors and SMART. Unfortunately this is by design and I cannot improve this. So for example the SMART sensor readout is fully in hands of ATA drive controller driver (and there are certain drivers known to cause high usage when reading them).
You can easily determine which sensors take more resources to process by disabling them (right-click on the sensor value and select Disable Monitoring).
Also, setting the scan interval too frequent can have a negative impact on system performance, so I don't advise to do this.
So.. please try this build:
I have made several improvements to start-up time, memory usage (in Sensor-only mode you should now see ~11 MB usage) and fixed the point 5. you reported.
Note, that this build features several changes and has not yet been extensively tested. So feedback is welcome !
Please let me know how it works (or anybody else) ;)
I can confirm that, in this build:
  • Startup is signifcantly faster in "sensor-only" mode.
  • Memory usage went down to 15 megabytes (as of "Mem Usage" in Task Manager) or 11 megabytes ("VM Size"). (Gotta go and learn the difference between the two, though...)
  • Upon quitting the program, its button appears on the taskbar for a fraction of a second but, yes, the sensor icons disappear now.
Conclusion: well done and thank you! :)

As for whichever sensors are being scanned: when minimized to tray icons only, limit scanning only to those sensors that actually give values to be displayed in the tray icons.
I have just released build 1620 Beta, which features further memory usage reduction in the Sensor-only mode.