我剛剛開始研究有一些CPU問題的龍捲風應用程序。 CPU時間會隨着時間的推移而單調增長,最大限度地提高CPU的100%。系統目前設計爲不阻塞主線程。如果它需要做一些阻塞操作並且異步驅動程序不可用,它會產生另一個線程來執行阻塞操作。如何確定適當的檢查間隔?
因此,我們的主線程幾乎完全受到CPU限制,並且一些其他線程幾乎都是IO限制的。從我讀過的內容來看,這似乎是解決GIL問題的最佳方式。另外,我的分析表明,我們花了很多時間等待信號(我假設它是__semwait_signal
正在做的),這與GIL在我有限的理解中的影響是一致的。
如果我使用sys.setcheckinterval
將檢查間隔設置爲300,則CPU增長速度顯着下降。我試圖確定的是,我應該增加檢查間隔時間,將其保持在300,還是應該加大檢查間隔。畢竟,我注意到CPU性能變好了,但我有點擔心這會對系統的響應性產生負面影響。
當然,正確的答案可能是我們需要重新考慮我們的架構來考慮GIL。但這不是馬上就能做到的。那麼如何確定短期採取的適當行動?
我確信線程正常退出。另外,我看到負載下的性能差異。只是負載導致CPU時間增長得更快。 – 2010-08-29 16:59:03