簡體   English   中英

如何確定適當的檢查間隔?

[英]How do I determine the appropriate check interval?

我剛剛開始處理存在一些CPU問題的龍卷風應用程序。 隨着時間的流逝,CPU時間將單調增加,使CPU達到100%的最大利用率。 該系統當前被設計為不阻塞主線程。 如果需要執行某些阻止和異步驅動程序不可用的操作,它將生成另一個線程來執行阻止操作。

因此,我們的主線程幾乎完全受CPU約束,而一堆其他線程幾乎完全受IO約束。 根據我的閱讀,這似乎是解決GIL問題的完美方法。 另外,我的分析顯示,我們在信號上花了很多時間(我假設這是__semwait_signal所做的事情),這與GIL在我有限的理解中所產生的影響是一致的。

如果我使用sys.setcheckinterval將檢查間隔設置為300,則CPU的增長會大大減慢。 我要確定的是應該增加檢查間隔,將其保留為300還是害怕增加檢查間隔。 畢竟,我注意到CPU性能會提高,但是我有點擔心這會對系統的響應能力產生負面影響。

當然,正確的答案可能是我們需要重新考慮我們的體系結構以考慮到GIL。 但這不是立即可以完成的事情。 那么,如何確定短期內應采取的適當措施?

我要檢查的第一件事是確保您正確退出線程。 僅憑您的描述很難弄清楚到底發生了什么,但是您使用了“單調”一詞,這意味着CPU的使用與時間相關,而不是與負載相關。

您可能會遇到Python的線程限制,但是它會隨着負載(活動線程數)而上下變化,並且隨着這些線程的退出,CPU使用率(上下文切換成本)應降低。 創建線程后,存在永久性的某些原因嗎? 如果是這種情況,請優先考慮該架構。 否則,短期將是弄清楚為什么CPU使用率與時間相關聯而不是與負載無關。 這意味着每個新線程在您的系統中都有永久的,不可逆的成本-這意味着它永遠不會退出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM