我一直在使用select來處理連接,最近我們的套接字庫發生了變化,select被epoll for linux平臺所取代。epoll vs選擇極少數的連接
我的應用程序體系結構是這樣的,我做只有一個或最多2套接字連接和epoll的/在一個單獨的線程選擇他們。
現已與最近交換機EPOLL我注意到應用的是性能diminshed,我其實感到驚訝和期待性能上還是reamin相同。我試着尋找各種其他部分,這是改變了的唯一代碼。
如果用於極少數插座(如1或2),epoll在速度方面會有性能損失。
另外還有一件事要注意,我在同一個盒子上運行了125個這樣的進程(8個CPU核心)。 可能是這種情況,太多的進程在同一臺機器上做epoll_wait,這個設置與我使用select時類似。
我注意到框,平均負載要高得多,但CPU使用率是這讓我覺得更多的時間花費在I/O,並從epoll的相關變化probaly未來不太一樣。
任何想法/指示什麼我應該看看更多以確定問題。
雖然絕對延遲時間增加是相當小的,如平均1毫秒,但是這是一個實時的系統,而這種等待時間一般都unaccpetable。
感謝
嗨,
更新的最新findinds這個問題,除了從選擇到EPOLL切換我發現了另一個相關的變化,早期的超時時間選擇在10個米利斯但epoll的超時的方式是這樣比以前更小(比如1微米..),可以設置太低的select或epoll超時結果導致性能下降?
感謝
相關問題在http://stackoverflow.com/questions/4093185/whats-the-difference-between-epoll-poll-threadpool –
可能的重複[是否有任何益處使用epoll與少量的文件描述符?](http://stackoverflow.com/questions/8597452/is-there-any-benefit-to-using-epoll-with-a-very-small-number-of-file-descriptors) – gavv