【发布时间】:2010-08-24 17:55:32
【问题描述】:
我刚开始处理一个有一些 CPU 问题的龙卷风应用程序。 CPU 时间将随着时间的推移单调增长,使 CPU 达到 100%。该系统目前设计为不阻塞主线程。如果它需要做一些阻塞和异步驱动程序不可用的事情,它将产生另一个线程来执行阻塞操作。
因此我们的主线程几乎完全受 CPU 限制,而其他线程几乎完全受 IO 限制。根据我的阅读,这似乎是遇到 GIL 问题的完美方式。另外,我的分析表明我们花费了大量时间等待信号(我假设这是 __semwait_signal 正在做的事情),这与 GIL 在我有限的理解中可能产生的影响是一致的。
如果我使用sys.setcheckinterval 将检查间隔设置为 300,CPU 增长会显着减慢。我要确定的是我是否应该增加检查间隔,将其保持在 300,或者害怕增加它。毕竟,我注意到 CPU 性能变得更好,但我有点担心这会对系统的响应能力产生负面影响。
当然,正确的答案可能是我们需要重新考虑我们的架构以将 GIL 考虑在内。但这不是可以立即完成的事情。那么我如何确定短期内采取的适当行动方案呢?
【问题讨论】:
标签: python multithreading tornado gil