Nfs/Pnfs文件系统线程模型
1:前言
一直以来对nfs、pnfs文件系统的线程模型有很大的疑惑。期间没有深入研究,就这么过去了。这段时间在研究sequence的时候,由于其与文件系统的线程模型有千丝万缕的联系,不可避免的狭路相逢,最终终于落得个柳暗花明。
2 模型
2.1 client端调度模型
Nfs/Pnfs文件系统底层使用的传输层为sunrpc(当然还有别的公司使用自身的rpc,或者其他的传输层),这里分析nfs/pnfs文件系统的线程模型之前还了解sunrpc网络通信层模型 ,这里先简要得从原理上介绍下rpc。
以上为rpc的client端的有限状态自动机,要发送一个rpc得经过这些过程,非常像体系结构中的流水线,其中的每一个过程都想相当于流水线中的一个流水设备。但是又有不同:
其中一些流水阶段是在第一次流水线启动的时候获取,并且在以后的流水中只要进行判断即可跳过(比如说,call_bind/call_connnet,是与server端建立连接的函数,这个函数其实只要在一开始未与server建立连接的时候调用。)
而call_reserve这个流水阶段有很多个设备。(即有很多slot:一般来讲是16个&#x