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
|
.Va PrivateKeyFile
|
||||||
specified in the configuration file.
|
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
|
.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,
|
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
|
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
|
or PrivateKeyFile
|
||||||
specified in the configuration file.
|
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
|
@cindex TunnelServer
|
||||||
@item TunnelServer = <yes|no> (no) [experimental]
|
@item TunnelServer = <yes|no> (no) [experimental]
|
||||||
When this option is enabled tinc will no longer forward information between other tinc daemons,
|
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())
|
if(!setup_network())
|
||||||
goto end;
|
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 */
|
/* drop privileges */
|
||||||
if (!drop_privs())
|
if (!drop_privs())
|
||||||
goto end;
|
goto end;
|
||||||
|
|
Loading…
Reference in a new issue