亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 4984 | 回復(fù): 12
打印 上一主題 下一主題

[C] Linux 多個文件的異步IO問題,高手請進。。。 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-05-15 15:08 |只看該作者 |倒序瀏覽
要求是使用linux aio模型,實現(xiàn)同時寫100個文件。  (數(shù)據(jù)庫源從網(wǎng)絡(luò)接收,這部分我已經(jīng)用非阻塞模型,實現(xiàn)好了)。

已經(jīng)調(diào)試通過 aio_write(),以及信號通知處理,或者線程回調(diào)。


現(xiàn)在碰到以下問題:
1,使用信號作為通知。 有部分文件會收不到信號,因為linux的信號并不會可靠排隊。
2,使用線程回調(diào)。 也有部分文件總是寫不出去,導(dǎo)致緩存隊列太長。


請問高手如何處理多個文件的異步IO ???   
哪里有可供參考的開源項目? 或者經(jīng)過封裝的aio驅(qū)動庫可以用。謝謝。

[ 本帖最后由 fm971 于 2009-5-15 15:32 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2009-05-15 15:31 |只看該作者
高手指點一下就好了!

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
3 [報告]
發(fā)表于 2009-05-15 16:08 |只看該作者
第二個問題,你應(yīng)該考慮設(shè)置一下隊列長度,隊列超過限制就不要再接收了,本身網(wǎng)絡(luò)io就比磁盤io快,

論壇徽章:
0
4 [報告]
發(fā)表于 2009-05-15 16:32 |只看該作者
What Does Not Work?

    * AIO read and write on files opened without O_DIRECT (i.e. normal buffered filesystem AIO). On ext2, ext3, jfs, xfs and nfs, these do not return an explicit error, but quietly default to synchronous or rather non-AIO behaviour (i.e io_submit waits for I/O to complete in these cases). For most other filesystems, -EINVAL is reported.
    * AIO fsync (not supported for any filesystem)
    * AIO read and write on sockets (doesn't return an explicit error, but quietly defaults to synchronous or rather non-AIO behavior)
    * AIO read and write on pipes (reports -EINVAL)
    * Not all devices (including TTY) support AIO (typically return -EINVAL)


感覺AIO還不夠成熟,能不用就不用吧。

論壇徽章:
0
5 [報告]
發(fā)表于 2009-05-15 16:50 |只看該作者
原帖由 cookis 于 2009-5-15 16:08 發(fā)表
第二個問題,你應(yīng)該考慮設(shè)置一下隊列長度,隊列超過限制就不要再接收了,本身網(wǎng)絡(luò)io就比磁盤io快,


隊列長度我已經(jīng)有限制了。  但我是從網(wǎng)絡(luò)上接收視頻流,所以不能停止。

我現(xiàn)在總的流量是: 2Mbps * 25個通道 =50Mbps.   這個速度應(yīng)該是沒超磁盤的IO能力。

論壇徽章:
0
6 [報告]
發(fā)表于 2009-05-15 17:00 |只看該作者
原帖由 wwwsq 于 2009-5-15 16:32 發(fā)表
What Does Not Work?

    * AIO read and write on files opened without O_DIRECT (i.e. normal buffered filesystem AIO). On ext2, ext3, jfs, xfs and nfs, these do not return an explicit error, but ...


多謝指點!   按這里說的是只有用 O_DIRECT標志,才能支持AIO的特性? 否則是同步。 請問這個資料是在哪里找的?


要處理這么多文件的寫入,不知道除了AIO還有什么好辦法。 我的網(wǎng)絡(luò)模塊是單線程非阻塞,可以實現(xiàn)大并發(fā)量。如果寫文件再用多線程,開銷也比較大。
AIO的兩種通知方式,感覺都不太好。  信號方式會中斷其它系統(tǒng)調(diào)用;線程回調(diào)方式,又有創(chuàng)建線程的開銷,在gdb里面顯示每次通知都會創(chuàng)建線程。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
7 [報告]
發(fā)表于 2009-05-15 17:10 |只看該作者
en. 流量確實很小,
1。你看看你的iowait 大不?
2。如果你的總流量不是很高,沒必要使用aio, 自己寫一個寫文件的線程同步地寫,簡單

論壇徽章:
0
8 [報告]
發(fā)表于 2009-05-15 17:26 |只看該作者
原帖由 cookis 于 2009-5-15 17:10 發(fā)表
en. 流量確實很小,
1。你看看你的iowait 大不?
2。如果你的總流量不是很高,沒必要使用aio, 自己寫一個寫文件的線程同步地寫,簡單


我本來是打算姘棄多線程的方式, 不知還有沒別的辦法........
據(jù)了解 web服務(wù)器lighttpd 是用的aio, 但不知道是怎么用的.....

論壇徽章:
0
9 [報告]
發(fā)表于 2009-05-15 17:59 |只看該作者
看看libevent的架構(gòu)或許對你有幫助, 里面有對IO/信號/timer的封裝, 當某種事件發(fā)生變化時, 會將事件從事件監(jiān)視隊列(定時器min-heap堆)移到活躍隊列里, 按事件發(fā)生順序依次調(diào)度執(zhí)行事件發(fā)生回調(diào)函數(shù).

論壇徽章:
0
10 [報告]
發(fā)表于 2009-05-15 18:52 |只看該作者
原帖由 fm971 于 2009-5-15 17:00 發(fā)表


多謝指點!   按這里說的是只有用 O_DIRECT標志,才能支持AIO的特性? 否則是同步。 請問這個資料是在哪里找的?


要處理這么多文件的寫入,不知道除了AIO還有什么好辦法。 我的網(wǎng)絡(luò)模塊是單線程非阻塞 ...



內(nèi)存緩存,然后批量寫入。
硬盤連續(xù)讀寫的速度是大大高于隨機讀寫的。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP