Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: module auto-unload



On Sun, 15 Dec 2013, Christos Zoulas wrote:

+       if (t < 0)
+               return (EINVAL);

You are not allowing it to become negative.

 *      Automatically unload modules.  We try once to unload autoloaded
 *      modules after module_autotime seconds.  If the system is under
- *     severe memory pressure, we'll try unloading all modules.
+ *     severe memory pressure, we'll try unloading all modules, else if
+ *     module_autotime is non-positive, we don't try to unload.
 */
static void
module_thread(void *cookie)
@@ -1311,6 +1341,8 @@ module_thread(void *cookie)

                        if (uvmexp.free < uvmexp.freemin) {
                                module_thread_ticks = hz;
+                       } else if (module_autotime <= 0) {
+                               continue;

Yet, you add a check for it. I would just not add the two lines above,
and have only 0 mean "never unload"

Yes, this check could be simply == instead of <=

I left this check here, though, so it would not auto-unload any modules that were loaded before setting module_autotime to 0. In other words,

        T=0    module_autotime == 10 (the default)
        T=1    X is autoloaded, and is scheduled for auto-unload
        T=2    module_autotime is set to 0
        T=3    module_thread() kicks in and unloads X

With the check-for-0 in module_thread() we avoid this unload. I could live with it either way, but it seemed more logical to me to avoid all auto-unloads as soon as the time-out was set to zero, rather than only avoiding timeouts for modules that were loaded after the set-to-zero.


I have just completed testing this change, and it seems to work just fine, at least on my amd64 systems. Is there any reason why these changes should not be committed?




-------------------------------------------------------------------------
| Paul Goyette     | PGP Key fingerprint:     | E-mail addresses:       |
| Customer Service | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com    |
| Network Engineer | 0786 F758 55DE 53BA 7731 | pgoyette at juniper.net |
| Kernel Developer |                          | pgoyette at netbsd.org  |
-------------------------------------------------------------------------


Home | Main Index | Thread Index | Old Index