我有一個相當奇怪的問題,我真的不知道從哪裏開始尋找正在發生的事情。如何提高多線程應用程序的延遲?
我有一個嚴重的多線程代碼[單個應用程序,20 +線程]正在運行。我發送一個睡眠信號給代碼,幾秒鐘後繼續喚醒信號。當應用程序確實喚醒時,如果我從外部應用程序向某個線程發送某條消息,則延遲很高,並且響應不會使其達到我預期的超時。這是大約10%的時間,其餘90%的代碼正在運行。
值得一提的是RHEL6上的C++,並且很多通信都是通過TCP或應用程序之間的多播進行的。也許我需要做內核調優,不確定。
任何想法,我應該開始尋找?
你有異形呢? – trojanfoe
通常大量多線程的應用程序帶有大量的鎖,並且上下文切換不是免費的,特別是如果你有信號並且你看到不需要的延遲:可能是因爲性能原因信號量不嚴格排序。 – Alex
如何描述從睡眠中醒來的應用程序? – Fanatic23