版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、epoll第六章1epoll#include int epoll_create(int size);int epoll_create1(int flags);int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);typedef union epoll_data void *ptr;int fd;uint32_t u32;uint64_t u64; epol
2、l_data_t;struct epoll_event uint32_t events;/* Epoll events */epoll_data_t data;/* User data variable */;2epoll兩種觸發(fā)模式Level-TriggeredEdge-Triggered如果采用Level-Triggered,那什么時候關(guān)注EPOLLOUT事件?會不會造成busy-loop?3epoll LT4epoll ET5select/poll/epoll對比6原理selectselect本質(zhì)上是通過設(shè)置或者檢查存放fd標(biāo)志位的數(shù)據(jù)結(jié)構(gòu)來進(jìn)行下一步處理。這樣所帶來的缺點(diǎn)是:1 單個進(jìn)
3、程可監(jiān)視的fd數(shù)量被限制2 需要維護(hù)一個用來存放大量fd的數(shù)據(jù)結(jié)構(gòu),這樣會使得用戶空間和內(nèi)核空間在傳遞該結(jié)構(gòu)時復(fù)制開銷大3 對socket進(jìn)行掃描時是線性掃描pollpoll本質(zhì)上和select沒有區(qū)別,它將用戶傳入的數(shù)組拷貝到內(nèi)核空間,然后查詢每個fd對應(yīng)的設(shè)備狀態(tài),如果設(shè)備就緒則在設(shè)備等待隊(duì)列中加入一項(xiàng)并繼續(xù)遍歷,如果遍歷完所有fd后沒有發(fā)現(xiàn)就緒設(shè)備,則掛起當(dāng)前進(jìn)程,直到設(shè)備就緒或者主動超時,被喚醒后它又要再次遍歷fd。這個過程經(jīng)歷了多次無謂的遍歷。它沒有最大連接數(shù)的限制,原因是它是基于鏈表來存儲的,但是同樣有一個缺點(diǎn):大量的fd的數(shù)組被整體復(fù)制于用戶態(tài)和內(nèi)核地址空間之間,而不管這樣的復(fù)制
4、是不是有意義。poll還有一個特點(diǎn)是“水平觸發(fā)”,如果報告了fd后,沒有被處理,那么下次poll時會再次報告該fd。epoll在前面說到的復(fù)制問題上,epoll使用mmap減少復(fù)制開銷。還有一個特點(diǎn)是,epoll使用“事件”的就緒通知方式,通過epoll_ctl注冊fd,一旦該fd就緒,內(nèi)核就會采用類似callback的回調(diào)機(jī)制來激活該fd,epoll_wait便可以收到通知select/poll/epoll對比7一個進(jìn)程所能打開的最大連接數(shù)select單個進(jìn)程所能打開的最大連接數(shù)有FD_SETSIZE宏定義,其大小是32個整數(shù)的大小(在32位的機(jī)器上,大小就是32*32,同理64位機(jī)器上FD
5、_SETSIZE為32*64),當(dāng)然我們可以對進(jìn)行修改,然后重新編譯內(nèi)核,但是性能可能會受到影響,這需要進(jìn)一步的測試。pollpoll本質(zhì)上和select沒有區(qū)別,但是它沒有最大連接數(shù)的限制,原因是它是基于鏈表來存儲的epoll沒有上限,但是很大,1G內(nèi)存的機(jī)器上可以打開10萬左右的連接,2G內(nèi)存的機(jī)器可以打開20萬左右的連接select/poll/epoll對比8FD劇增后帶來的IO效率問題select因?yàn)槊看握{(diào)用時都會對連接進(jìn)行線性遍歷,所以隨著FD的增加會造成遍歷速度慢的“線性下降性能問題”。poll同上epoll因?yàn)閑poll內(nèi)核中實(shí)現(xiàn)是根據(jù)每個fd上的callback函數(shù)來實(shí)現(xiàn)的,只有活躍的socket才會主動調(diào)用callback,所以在活躍socket較少的情況下,使用epoll沒有前面兩者的線性下降的性能問題,但是所有socket都很活躍的情況下,可能會有性能問題。select/p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年上海單招語文文言文閱讀現(xiàn)代文理解專項(xiàng)經(jīng)典題含答題模板
- 2026年數(shù)據(jù)驅(qū)動的運(yùn)營策略與方法探討交流會題目
- 2026年物流管理師考試重點(diǎn)與模擬試題含答案
- 2026年部門年度考核指標(biāo)及方法
- 2024-2025學(xué)年河南省鄭州市二七區(qū)八年級(上)期末數(shù)學(xué)試卷-20251114224857
- 2026年航空工程師面試題及答案
- 2026年統(tǒng)計(jì)員崗位面試題集
- 2026年華為技術(shù)總監(jiān)面試指南與答案解析
- 電池及電池系統(tǒng)維護(hù)員操作規(guī)范評優(yōu)考核試卷含答案
- 質(zhì)檢員風(fēng)險評估競賽考核試卷含答案
- 基于多模型視角下我國A股上市公司財(cái)務(wù)危機(jī)預(yù)警的深度剖析與實(shí)證檢驗(yàn)
- 腸外營養(yǎng)療法規(guī)范
- sw水箱施工方案
- 2023-2024學(xué)年廣東省廣州市海珠區(qū)八年級(上)期末地理試題及答案
- 旅游策劃理論及實(shí)務(wù)第1章旅游策劃導(dǎo)論
- 中華人民共和國治安管理處罰法2025修訂版測試題及答案
- 產(chǎn)品生命周期管理(PLM)方案
- istqb考試題目及答案
- 2025年嫩江市招聘農(nóng)墾社區(qū)工作者(88人)筆試備考試題附答案詳解(a卷)
- 展廳空間設(shè)計(jì)案例
- 企業(yè)降本增效課件
評論
0/150
提交評論