我是多处理的新手 - 我可能会解释这个错误 - 但是当我运行我的程序时,我注意到我生成的进程越多,'sy'就会出现在我的linux计算机上。例如:
Cpu(s): 14.0%us, 24.1%sy, 0.0%ni, 58.8%id, 0.0%wa, 2.2%hi, 0.0%si, 0.8%st
我产生的进程越多,sy进程就会越高,实际进程就会减半(因此在进入10%/ cpu之前它是20%/ cpu)并且理想的cpu保持不变(几乎60%) )。我不确定这是一个linux问题还是python问题,但有什么办法可以减少这个数字并允许我的程序使用更多可用的cpu吗?
答案 0 :(得分:2)
系统CPU时间是内核中进程使用的时间。如果系统CPU与用户CPU的比例如此之大,则可能意味着您的进程正在进行大量系统调用。
不要以为这是浪费时间:内核正在为您的流程做一些有用的事情。
您可以尝试例如通过显着增加缓冲区大小来降低系统调用率。或者您的进程可能有太多的同步原语。
您可以使用strace
来了解您的流程完成的系统调用。
答案 1 :(得分:2)
更可能是硬件问题。
一些关键的事情:
如果您的应用有很多输出,您可能需要查看数据库选项并将值插入表中。这将在进程之间添加缓存和控制流量。当结果集随着时间的推移而增加时,无需共享可能最终导致其他问题的变量。
您可以对Linux的内存进行一些其他调整以提供帮助。 打开文件的数量可以是一个。我可以检查您可以根据需要优化哪些proc设置。它会有所帮助,但我认为你可能会碰到硬件墙。
另一种选择是将管理器设置为生成到其他服务器,然后在那里运行进程。如果进程是主进程或从进程,则需要ssh到一台机器并传递一个arg。可以通过在管理器中添加 init 覆盖来重定向进程来完成。
希望这会有所帮助 富