diff options
| author | Maxim Sobolev <sobomax@FreeBSD.org> | 2008-10-27 06:25:02 +0000 |
|---|---|---|
| committer | Maxim Sobolev <sobomax@FreeBSD.org> | 2008-10-27 06:25:02 +0000 |
| commit | 7f03c419bc9bec268998c2d2154c0d133a8a6bbc (patch) | |
| tree | b15e493185ed0490d0a96ca598132e78d10afca8 /sys/kern/subr_param.c | |
| parent | dc9d16844c13cbe99ea9cdd0057b048e5b5a68bf (diff) | |
Notes
Diffstat (limited to 'sys/kern/subr_param.c')
| -rw-r--r-- | sys/kern/subr_param.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/sys/kern/subr_param.c b/sys/kern/subr_param.c index 89150acf2cd8..138ccbc67982 100644 --- a/sys/kern/subr_param.c +++ b/sys/kern/subr_param.c @@ -57,6 +57,13 @@ __FBSDID("$FreeBSD$"); # else # define HZ 100 # endif +# ifndef HZ_VM +# define HZ_VM 10 +# endif +#else +# ifndef HZ_VM +# define HZ_VM HZ +# endif #endif #define NPROC (20 + 16 * maxusers) #ifndef NBUF @@ -111,6 +118,30 @@ SYSCTL_ULONG(_kern, OID_AUTO, sgrowsiz, CTLFLAG_RDTUN, &sgrowsiz, 0, */ struct buf *swbuf; +char *vm_pnames[] = { + "VMware Virtual Platform", /* VMWare VM */ + "Virtual Machine", /* Microsoft VirtualPC */ + "VirtualBox", /* Sun xVM VirtualBox */ + "Parallels Virtual Platform", /* Parallels VM */ + NULL +}; + +static int +detect_virtual(void) +{ + char *sysenv; + int i; + + sysenv = getenv("smbios.system.product"); + if (sysenv != NULL) { + for (i = 0; vm_pnames[i] != NULL; i++) { + if (strcmp(sysenv, vm_pnames[i]) == 0) + return 1; + } + } + return 0; +} + /* * Boot time overrides that are not scaled against main memory */ @@ -118,8 +149,15 @@ void init_param1(void) { - hz = HZ; + hz = -1; TUNABLE_INT_FETCH("kern.hz", &hz); + if (hz == -1) { + if (detect_virtual()) { + hz = HZ_VM; + } else { + hz = HZ; + } + } tick = 1000000 / hz; #ifdef VM_SWZONE_SIZE_MAX |
