Add ProcessPriority option.
This option can be set to low, normal or high. On UNIX flavours, this changes the nice value of the process by +10, 0 and -10 respectively. On Windows, it sets the priority to BELOW_NORMAL_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS and HIGH_PRIORITY_CLASS respectively. A high priority might help to reduce latency and packet loss on the VPN.
This commit is contained in:
parent
41a05f59ba
commit
41c10c5a96
3 changed files with 38 additions and 0 deletions
|
@ -304,6 +304,10 @@ or
|
|||
.Va PrivateKeyFile
|
||||
specified in the configuration file.
|
||||
|
||||
.It Va ProcessPriority Li = low | normal | high
|
||||
When this option is used the priority of the tincd process will be adjusted.
|
||||
Increasing the priority may help to reduce latency and packet loss on the VPN.
|
||||
|
||||
.It Va TunnelServer Li = yes | no Po no Pc Bq experimental
|
||||
When this option is enabled tinc will no longer forward information between other tinc daemons,
|
||||
and will only allow nodes and subnets on the VPN which are present in the
|
||||
|
|
|
@ -929,6 +929,11 @@ Note that there must be exactly one of PrivateKey
|
|||
or PrivateKeyFile
|
||||
specified in the configuration file.
|
||||
|
||||
@cindex ProcessPriority
|
||||
@item ProcessPriority = <low|normal|high>
|
||||
When this option is used the priority of the tincd process will be adjusted.
|
||||
Increasing the priority may help to reduce latency and packet loss on the VPN.
|
||||
|
||||
@cindex TunnelServer
|
||||
@item TunnelServer = <yes|no> (no) [experimental]
|
||||
When this option is enabled tinc will no longer forward information between other tinc daemons,
|
||||
|
|
29
src/tincd.c
29
src/tincd.c
|
@ -580,6 +580,35 @@ int main2(int argc, char **argv)
|
|||
if(!setup_network())
|
||||
goto end;
|
||||
|
||||
/* Change process priority */
|
||||
|
||||
char *priority = 0;
|
||||
|
||||
if(get_config_string(lookup_config(config_tree, "ProcessPriority"), &priority)) {
|
||||
if(!strcasecmp(priority, "Normal")) {
|
||||
#ifdef HAVE_MINGW
|
||||
SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
|
||||
#else
|
||||
nice(0);
|
||||
#endif
|
||||
} else if(!strcasecmp(priority, "Low")) {
|
||||
#ifdef HAVE_MINGW
|
||||
SetPriorityClass(GetCurrentProcess(), BELOW_NORMAL_PRIORITY_CLASS);
|
||||
#else
|
||||
nice(10);
|
||||
#endif
|
||||
} else if(!strcasecmp(priority, "High")) {
|
||||
#ifdef HAVE_MINGW
|
||||
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
|
||||
#else
|
||||
nice(-10);
|
||||
#endif
|
||||
} else {
|
||||
logger(LOG_ERR, _("Invalid priority `%s`!"), priority);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
/* drop privileges */
|
||||
if (!drop_privs())
|
||||
goto end;
|
||||
|
|
Loading…
Reference in a new issue