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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2714 | 回復(fù): 8
打印 上一主題 下一主題

[硬件及驅(qū)動(dòng)] 關(guān)于io調(diào)度器和塊設(shè)備驅(qū)動(dòng)的問(wèn)題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-06-04 19:18 |只看該作者 |倒序?yàn)g覽
io調(diào)度器主要是對(duì)上層的bio,整理成request,然后像request_queue提供request,而request_queue里面的request_fn是和塊設(shè)備驅(qū)動(dòng)相關(guān)真正處理request,那么這個(gè)request_fn是怎么被調(diào)用的?在什么時(shí)候被調(diào)用

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2013-06-05 15:21 |只看該作者
一般情況下是在__generic_unplug_device函數(shù)調(diào)用的。
以scsi設(shè)備驅(qū)動(dòng)為例,在scsi_alloc_queue中,make_request_fn設(shè)成默認(rèn)的__make_request函數(shù)。
reuest_fn函數(shù)為scsi_request_fn。
上層submit_bio后調(diào)用順序?yàn)間eneric_make_request-->__generic_make_request--->__make_request----->__generic_unplug_device----->scsi_request_fn.

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2013-06-05 21:59 |只看該作者
__generic_unplug_device可以由超時(shí)3ms或者pending大于4個(gè)出發(fā),也可以被一些有特殊用途的IO出發(fā),類似同步IO,或者barrier IO

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2013-06-06 10:58 |只看該作者
__generic_unplug_device,unplug是拔掉的意思,在這里跟處理request有什么關(guān)系了,我以前以為是有個(gè)線程周期性的去處理request了回復(fù) 2# hb12112


   

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2013-06-06 10:59 |只看該作者
由超時(shí)3ms或者pending大于4個(gè)出發(fā),哥們能說(shuō)詳細(xì)點(diǎn)嗎?回復(fù) 3# 鬼鬼一哈


   

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2013-06-06 14:04 |只看該作者
上次是你還是誰(shuí)來(lái)問(wèn)過(guò)一次類似的問(wèn)題,我還特意去看了一下scsi的代碼。
可以知道scsi里面會(huì)通過(guò)這個(gè)路徑調(diào)用到
scsi_run_queue -> blk_run_queue -> scsi_request_fn()

scsi_run_host_queues
scsi_next_command
等很多地方都回去調(diào)用scsi_run_queue 函數(shù)。

scsi_end_request里面又會(huì)調(diào)用到scsi_next_command。
所以我說(shuō)底層scsi驅(qū)動(dòng)每次自己執(zhí)行完一個(gè)磁盤名字,自己就回去隊(duì)列里面取下一個(gè)來(lái)執(zhí)行的。直到隊(duì)列為空。

scsi_run_host_queues 這些函數(shù),看樣子,會(huì)在磁盤啟動(dòng)之類的情況下被執(zhí)行的吧。
其他比如如果隊(duì)列為空了,那么下次怎么開始? 之類的問(wèn)題就只能再仔細(xì)去看才知道了。

------------------------
如果樓主你實(shí)在想弄清楚,可以使用systemtap ,kprobe之類的工具掛鉤一下 scsi_request_fn 函數(shù),把調(diào)用堆棧都打印出來(lái)就清楚了。



論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2013-06-06 14:49 |只看該作者
就拿個(gè)簡(jiǎn)單的例子吧,http://72891.cn/thread-2017377-1-1.html這個(gè)是簡(jiǎn)單的塊設(shè)備驅(qū)動(dòng),就是這個(gè)論壇的。只是設(shè)置了disk,request_queue。這里面處理request應(yīng)該是__make_request----->__generic_unplug_device--->request_fn(q)這個(gè)流程。不知道這個(gè)說(shuō)法是對(duì)的不?  復(fù)雜點(diǎn)的塊設(shè)備像scsi硬盤,就有另外的出發(fā)點(diǎn)調(diào)用blk_run_queue。回復(fù) 6# hmsghnh


   

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2013-06-06 18:48 |只看該作者
回復(fù) 5# f22jay

每個(gè)Queue都是有定時(shí)器的,3ms超時(shí),并且pending的個(gè)數(shù)就是4個(gè)就會(huì)unplug

   

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2013-06-07 15:01 |只看該作者
我都是到lxr去看最新的3.9內(nèi)核的代碼。

新的內(nèi)核里面plug相關(guān)的接口變了,應(yīng)該不是很重要了,很多都被刪除了。__generic_unplug_device 這個(gè)函數(shù)在新的plug實(shí)現(xiàn)里面應(yīng)該沒(méi)有了。
以前久的plug接口應(yīng)該被淘汰了,參考下面這篇文章的解釋。磁盤越來(lái)越快,沒(méi)必要做這個(gè)plug的緩存機(jī)制了?
http://lwn.net/Articles/438256/

不過(guò)確實(shí)是調(diào)用了generic_make_request 那里會(huì)有可能觸發(fā)下發(fā)的動(dòng)作的。
submit_bio  -》 generic_make_request  -》q->make_request_fn(scsi層初始化為blk_queue_bio) -> __blk_run_queue-》scsi_request_fn



您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP