auto-add-routes icon indicating copy to clipboard operation
auto-add-routes copied to clipboard

写入路由表后短时间内高CPU与磁盘占用

Open Arxhexa opened this issue 1 year ago • 3 comments

操作系统win10 22h2,wireguard连接 此时wireguard已经startup complete,分流生效。但不知道为什么系统进程仍会有大约2分钟的时间占用CPU和硬盘,再之后一切正常 image 以下是用process monitor截的从按下连接到停止占用的log 链接

Arxhexa avatar May 23 '23 07:05 Arxhexa

我出现了相同问题

antnesswcm avatar Jun 29 '23 15:06 antnesswcm

不论是使用tunsafe还是wg客户端都会这样

antnesswcm avatar Jun 29 '23 16:06 antnesswcm

是的,载入路由表时有两个服务进程会大量占用CPU,一个约1分钟,另一个约2分钟,这是Windows路由表管理机制的缺点,目前还找不到特别有效的解决方法,我想了一个变通方法,在自己的机子上测试成功:

找一个节点文件复制两份,分别命名为“01-Routes-UP”(负责载入路由表)、“02-Routes-Down”(负责删除路由表),然后在插入这4行命令的时候:

PreUp = "C:\Program Files\WireGuard\bat\routes-up.bat" PostUp = "C:\Program Files\WireGuard\bat\dns-up.bat" PreDown = "C:\Program Files\WireGuard\bat\routes-down.bat" PostDown = "C:\Program Files\WireGuard\bat\dns-down.bat"

“01-Routes-UP”去掉第三行,即只插入:

PreUp = "C:\Program Files\WireGuard\bat\routes-up.bat" PostUp = "C:\Program Files\WireGuard\bat\dns-up.bat" PostDown = "C:\Program Files\WireGuard\bat\dns-down.bat"

“02-Routes-Down”去掉第一行,即只插入:

PostUp = "C:\Program Files\WireGuard\bat\dns-up.bat" PreDown = "C:\Program Files\WireGuard\bat\routes-down.bat" PostDown = "C:\Program Files\WireGuard\bat\dns-down.bat"

首次使用WireGuard,先打开这个“01-Routes-UP”节点,会自动载入路由表(大约2分钟)。

如果需要使用其它节点,在断开这个节点后,路由表仍保留在系统中,其它节点在插入上述4行命令时不要插入第1、3行,即只插入:

PostUp = "C:\Program Files\WireGuard\bat\dns-up.bat" PostDown = "C:\Program Files\WireGuard\bat\dns-down.bat"

这样,“01-Routes-UP”断开后,再打开其它节点,就不会再次载入路由表而长时间占用CPU,而分流功能正常。

当不再需要使用WireGuard时,打开“02-Routes-Down”节点,然后再断开,这样就能删除“01-Routes-UP”载入的路由表了。

oogoox avatar Dec 22 '23 13:12 oogoox