免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
123
最近訪問板塊 發新帖
樓主: gqbfree
打印 上一主題 下一主題

[技術動態] 關于AIO的一個疑問 [復制鏈接]

論壇徽章:
0
21 [報告]
發表于 2014-11-07 12:08 |只看該作者
回復 21# cobras
我明白AIO的思想,這個思想沒有問題。  設置一個回調,然后不阻塞的繼續處理手上的事情。
但是在我帖子里面的這個具體問題上,我是想搞清楚 EPOLL+AIO 是否比 EPOLL+NIO 性能上更具優勢? 優勢又是在哪里呢?
因為從網上搜索的結果看,AIO給人感覺是更先進的一種技術。 例如剛剛貼的IBM那位的帖子:
http://www.ibm.com/developerworks/cn/linux/l-async/


   

論壇徽章:
0
22 [報告]
發表于 2014-11-07 12:11 |只看該作者
回復 18# yulihua49
不知道為什么,回復的帖子會消失?纯从涗,說是 已忽略。  怎么恢復呢?


   

論壇徽章:
2
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
23 [報告]
發表于 2014-11-07 17:18 |只看該作者
實際上中斷是配合DMA來完成AIO工作的。先對中斷控制器和DMA控制器布置任務。待DMA將數據復制完成后,調用中斷程序進行處理。此時數據已經在指定的內存中了。
如果系統在給DMA指定內存時直接將用戶的數據區指定給DMA。則可以不用進行數據復制。此時的AIO效率最高。但實際系統是DMA對數據區有諸多的限制。造成不可能這樣完成任務。一般都是直接指定內核的緩沖區,然后再復制到用戶數據區。這就造成了一次IO和一次數據復制。
EPOLL的實現應該是這樣的。就是IO中斷后,不直接復制數據到用戶數據區。而是設置狀態。通過用戶態代碼來主動復制內核緩沖區數據。
所以這樣看來。AIO與EPOLL的區別僅是復制數據的先后問題。實際實現可能有所區別。因為EPOLL可以同時處理大量的文件描述符。而這也就造成了對于文件描述符數據發生的頻率的不同,EPOLL的效率將有很大的差異。

論壇徽章:
0
24 [報告]
發表于 2014-11-10 16:43 |只看該作者
回復 26# cobras
雖然我心里還是有那個疑問   還是多謝底層的分析。  

   

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯賽之四川
日期:2017-02-07 21:08:572015年亞冠紀念徽章
日期:2015-11-06 12:31:58每日論壇發貼之星
日期:2015-08-04 06:20:00程序設計版塊每日發帖之星
日期:2015-08-04 06:20:00程序設計版塊每日發帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
25 [報告]
發表于 2015-03-24 16:25 |只看該作者
本帖最后由 yulihua49 于 2015-03-24 16:35 編輯
gqbfree 發表于 2014-10-24 12:18
純理論討論,AIO的效率高在哪個部分,以下理解不正確的地方請指出:
IO處理分為2個部分,IO請求+IO處理(I ...

SOCKET 就 NIO + epoll
文件,就 AIO + eventfd + epoll。
因為NIO對文件無效。而SOCKET使用AIO還需要另外的eventfd,還要頁邊界對齊的buffer,太麻煩了。

http://www.cesargiobbi.com/thread-4077904-3-1.html
25樓的傳送文件的服務器程序,第三行就是AIO,13行就是NIO。在這兩處都可能yield。
這都不是為了什么效率問題,而是在少線程服務器的條件下,讓那些等待IO的任務能夠騰出線程來為別的任務服務。
改善服務器的用戶體驗。

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯賽之四川
日期:2017-02-07 21:08:572015年亞冠紀念徽章
日期:2015-11-06 12:31:58每日論壇發貼之星
日期:2015-08-04 06:20:00程序設計版塊每日發帖之星
日期:2015-08-04 06:20:00程序設計版塊每日發帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
26 [報告]
發表于 2020-09-13 14:50 |只看該作者
gqbfree 發表于 2014-10-29 10:10
@yulihua49   @zylthinking   @linux_c_py_php   炸出來

6年后炸出來了。

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯賽之四川
日期:2017-02-07 21:08:572015年亞冠紀念徽章
日期:2015-11-06 12:31:58每日論壇發貼之星
日期:2015-08-04 06:20:00程序設計版塊每日發帖之星
日期:2015-08-04 06:20:00程序設計版塊每日發帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
27 [報告]
發表于 2020-09-13 14:51 |只看該作者
本帖最后由 yulihua49 于 2020-09-14 09:36 編輯
gqbfree 發表于 2014-10-25 23:07
用別的CPU去完成拷貝,不也是消耗了總性能么?  假設所有的CPU都在高速的運行中。我覺得單從理論上講,AIO ...

現在我知道了。
在網絡比較阻塞的條件下,傳送大包數據,NIO會不斷地掛起,不斷的回調,期間開銷非常大。AIO可以一次性掛起,完成后回調。效率高很多。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則 發表回復

  

北京盛拓優訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區
中國互聯網協會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP
   日韩综合区视频第一页导航,无码JK粉嫩小泬在线观看,午夜精品A片一区二区三区,日日躁夜夜躁狠狠躁麻豆,大胆国模,免费观看无遮挡www的网站