python程序作为systemd运行的速度比从终端运行它慢

时间:2019-08-24 20:07:42

标签: python performance process raspberry-pi systemd

我有 raspberri pi零WH ,它只有 1个核心

我有一个循环运行的程序,侦听传入的UDP数据包并进行处理。对我来说至关重要的是,数据包和进一步的逻辑将在0.025s内处理(更清楚地说,存在永恒的循环(即使没有数据包到来),无论发生什么情况,循环都不能超过0.025s)。

如果我以

的身份从终端运行程序,我将相当成功
tt:0!select last_price:last price, last_qty: last qty, low_qty: min qty by exch,sym,side,1 xbar time.second from trades;

但是,如果我使用 systemd 作为服务来运行它,则该程序似乎没有占用足够的资源。循环无法达到0.025s条件。从htop看来,将程序作为服务运行可以减少一个线程的使用(我不能保证这个事实,只是快速观察一下即可。)

我没有使用系统服务的经验,所以问题可能出在我的配置上

sudo python3 script.py

我的问题是,此标准行为或systemd服务的行为应与从终端运行的程序相同吗?

1 个答案:

答案 0 :(得分:3)

完全有可能作为系统服务运行的脚本可能比直接从终端运行的脚本要慢-这可能是由于不同的资源分配所致。例如,我希望从终端运行的脚本(即由用户明确运行)会获得更高的优先级,因此与后台处理相比,它会占用更多的资源。

但是,您可以使用systemd.resource-control为服务分配更多资源,包括CPU和RAM。

例如,您可以尝试将CPUWeight从默认值100增加到1,000。

[Service]
CPUWeight = 1000

调整其他参数最终可能会导致您所需的执行时间。请记住,为您的服务提供大量资源可能会影响整个系统的性能。