• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    低CPU開(kāi)銷的低延遲存儲(chǔ)引擎

    2022-03-09 05:50:10廖曉堅(jiān)楊洪章屠要峰舒繼武
    關(guān)鍵詞:輪詢存儲(chǔ)系統(tǒng)收割機(jī)

    廖曉堅(jiān) 楊 者 楊洪章 屠要峰 舒繼武

    1(清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系 北京 100084)

    2(中興通訊股份有限公司 南京 210012)

    隨著新型存儲(chǔ)如NVMe SSD(non-volatile memory express solid-state drive)以及網(wǎng)絡(luò)如infiniband技術(shù)的出現(xiàn),計(jì)算機(jī)系統(tǒng)正在進(jìn)入“微秒級(jí)延遲”時(shí)代.這使得原先針對(duì)毫秒級(jí)延遲的I/O設(shè)備設(shè)計(jì)的系統(tǒng)軟件需要被重新設(shè)計(jì),以充分發(fā)揮新型高速I/O設(shè)備的低延遲優(yōu)勢(shì).本文關(guān)注低延遲的存儲(chǔ)系統(tǒng).固態(tài)存儲(chǔ)(solid-state drive, SSD)技術(shù)近10年發(fā)展迅猛.例如,Intel公司于2020年公開(kāi)銷售的高性能固態(tài)存儲(chǔ)[1],硬件帶寬高達(dá)7.2 GB/s,讀寫4 KB數(shù)據(jù)的延遲低至5 μs,較傳統(tǒng)的磁盤存儲(chǔ)(hard disk drive, HDD)和5年前的SATA(serial advanced technology attachment)固態(tài)存儲(chǔ)均有多個(gè)數(shù)量級(jí)的改良.對(duì)于這些超低延遲的固態(tài)存儲(chǔ),主機(jī)端存儲(chǔ)系統(tǒng)的延遲開(kāi)銷逐漸凸顯.

    主機(jī)端存儲(chǔ)系統(tǒng)的延遲主要分為3個(gè)部分:系統(tǒng)調(diào)用延遲、系統(tǒng)軟件延遲例如文件系統(tǒng)層和塊設(shè)備層延遲,以及I/O收割延遲.已有工作通過(guò)在用戶態(tài)實(shí)現(xiàn)存儲(chǔ)系統(tǒng)以及簡(jiǎn)化或繞開(kāi)塊設(shè)備層,以優(yōu)化系統(tǒng)調(diào)用和系統(tǒng)軟件延遲.伴隨著硬件性能提升以及這些軟件優(yōu)化,I/O收割延遲高以及抖動(dòng)的問(wèn)題逐漸凸顯.本文主要關(guān)注I/O收割延遲.

    收割I(lǐng)/O請(qǐng)求,即探測(cè)并處理存儲(chǔ)設(shè)備完成I/O請(qǐng)求的信號(hào),是存儲(chǔ)系統(tǒng)的一項(xiàng)重要基本功能.傳統(tǒng)存儲(chǔ)系統(tǒng)依賴硬件中斷(interrupt)機(jī)制收割I(lǐng)/O請(qǐng)求.然而,硬件中斷會(huì)引入額外的上下文切換開(kāi)銷,帶來(lái)額外的延遲.對(duì)于高性能固態(tài)存儲(chǔ),中斷開(kāi)銷變得不可忽視.為此,一些工作提出采用輪詢(polling)機(jī)制[2]替代中斷,以完全消除上下文切換.然而,輪詢機(jī)制要求主機(jī)端CPU一直處于查詢I/O完成信號(hào)的狀態(tài),使得CPU占用率高達(dá)100%,嚴(yán)重浪費(fèi)了CPU的計(jì)算資源.

    為了解決上述I/O延遲高和CPU開(kāi)銷大的問(wèn)題,本文提出一種低CPU開(kāi)銷的低延遲存儲(chǔ)引擎NIO(nimble I/O).NIO的核心思想是動(dòng)態(tài)地混合使用中斷和輪詢機(jī)制,從而以低CPU開(kāi)銷取得較低的I/O延遲.NIO的主要架構(gòu)是將“大”“小”I/O的處理路徑分離:對(duì)于大I/O采用中斷機(jī)制,因?yàn)樵诖祟惽闆r下I/O的傳輸和硬件處理時(shí)間占比較重,中斷和輪詢的延遲無(wú)顯著差別;對(duì)于小I/O使用惰性輪詢機(jī)制,先讓CPU睡眠一段時(shí)間再持續(xù)輪詢,以此來(lái)減少持續(xù)輪詢帶來(lái)的巨大CPU開(kāi)銷.在該架構(gòu)之上,NIO設(shè)計(jì)和實(shí)現(xiàn)了事務(wù)感知的I/O收割機(jī)制,即以一個(gè)事務(wù)(一組需要同時(shí)完成的I/O請(qǐng)求)為單位判斷請(qǐng)求大小,因?yàn)橐粋€(gè)事務(wù)的完成時(shí)間取決于最慢的I/O.此外,為了應(yīng)對(duì)應(yīng)用負(fù)載以及存儲(chǔ)設(shè)備內(nèi)部活動(dòng)的變化,NIO提出了動(dòng)態(tài)調(diào)整機(jī)制,在不影響現(xiàn)有NVMe[3]存儲(chǔ)系統(tǒng)高并發(fā)和低延遲的前提下,動(dòng)態(tài)調(diào)整小I/O的睡眠等待時(shí)間.

    本文工作的主要貢獻(xiàn)包括3個(gè)方面:

    1) 提出了大小I/O處理路徑分離的存儲(chǔ)架構(gòu)NIO,對(duì)不同的路徑采用不同的I/O收割機(jī)制,以同時(shí)優(yōu)化CPU占用率和I/O延遲.

    2) 提出了事務(wù)感知的I/O收割機(jī)制和動(dòng)態(tài)調(diào)整機(jī)制,以應(yīng)對(duì)應(yīng)用負(fù)載和存儲(chǔ)設(shè)備內(nèi)部活動(dòng)的變化.

    3) 在Linux內(nèi)核中實(shí)現(xiàn)了NIO和以上機(jī)制,動(dòng)態(tài)負(fù)載測(cè)試顯示,NIO與基于輪詢的存儲(chǔ)引擎性能相當(dāng),并能減少至少59%的CPU占用率.

    1 背景介紹與研究動(dòng)機(jī)

    本節(jié)主要介紹現(xiàn)有高性能固態(tài)存儲(chǔ)及其軟件存儲(chǔ)系統(tǒng)的相關(guān)背景,并分析現(xiàn)有中斷和輪詢機(jī)制.

    1.1 高性能固態(tài)存儲(chǔ)

    固態(tài)存儲(chǔ)是一種新型的非易失存儲(chǔ).不同于磁頭式結(jié)構(gòu)的傳統(tǒng)磁盤存儲(chǔ),固態(tài)存儲(chǔ)內(nèi)部為電子式結(jié)構(gòu),因此能提供更高的硬件帶寬和更低的讀寫延遲.

    早期的固態(tài)存儲(chǔ)直接兼容傳統(tǒng)的硬盤接口和協(xié)議如SATA.然而,傳統(tǒng)的磁盤接口和協(xié)議帶寬受限,存儲(chǔ)協(xié)議開(kāi)銷大,使得系統(tǒng)軟件難以發(fā)揮固態(tài)存儲(chǔ)高帶寬和低延遲的優(yōu)勢(shì).因此,一種新型的針對(duì)高性能固態(tài)存儲(chǔ)設(shè)計(jì)的存儲(chǔ)協(xié)議NVMe[3]被提出并廣泛應(yīng)用于固態(tài)存儲(chǔ).相比于傳統(tǒng)的SATA協(xié)議,NVMe協(xié)議顯著地降低了處理1個(gè)I/O所需要的CPU指令.同時(shí),NVMe提供多硬件隊(duì)列抽象,在現(xiàn)代多CPU的計(jì)算機(jī)上具有更好的多核擴(kuò)展性,從而降低核間競(jìng)爭(zhēng)和同步機(jī)制帶來(lái)的額外延遲.以上優(yōu)勢(shì)使得基于NVMe的存儲(chǔ)設(shè)備能提供更低的延遲.

    近幾年來(lái),固態(tài)存儲(chǔ)的平均延遲有了顯著的降低,如表1所示.例如2014年Samsung公司推出的850pro SATA SSD,平均延遲以及延遲標(biāo)準(zhǔn)差均超過(guò)50 μs.然而,2018年Intel公司推出的905P NVMe SSD能在10 μs內(nèi)處理4 KB隨機(jī)讀,延遲標(biāo)準(zhǔn)差也能控制在2 μs內(nèi).另一方面,從表1中“99.9%延遲”列中可以看出,固態(tài)存儲(chǔ)也能提供越來(lái)穩(wěn)定的延遲.

    Table 1 Comparison of SSDs Latency (4 KB random read)

    1.2 I/O收割機(jī)制——中斷和輪詢機(jī)制

    固態(tài)存儲(chǔ)越來(lái)越低及越來(lái)越平穩(wěn)的延遲,促使系統(tǒng)軟件設(shè)計(jì)者重新思考存儲(chǔ)軟件的設(shè)計(jì).其中,如何提供高效的I/O收割機(jī)制,即以低開(kāi)銷快速探測(cè)并處理存儲(chǔ)設(shè)備完成I/O請(qǐng)求的信號(hào),成為系統(tǒng)軟件關(guān)注的熱點(diǎn)問(wèn)題[2-6].本節(jié)將具體介紹硬件中斷和輪詢2種廣泛應(yīng)用于存儲(chǔ)系統(tǒng)的I/O收割機(jī)制,并分析它們的優(yōu)劣.

    硬件中斷機(jī)制依賴硬件發(fā)出完成信號(hào),由CPU暫停正在執(zhí)行的任務(wù),將原先的I/O處理任務(wù)調(diào)度回CPU執(zhí)行,以完成I/O處理的最后階段,如通知應(yīng)用程序.中斷機(jī)制在主機(jī)端CPU不繁忙時(shí),會(huì)因?yàn)槿蝿?wù)上下文切換或CPU運(yùn)行模式切換引入1 μs左右的延遲;在主機(jī)端CPU繁忙時(shí),CPU任務(wù)調(diào)度和緩存失效等使得中斷機(jī)制帶來(lái)的延遲變得更加不可預(yù)測(cè).中斷開(kāi)銷在高性能固態(tài)存儲(chǔ)上顯得愈發(fā)嚴(yán)重.

    為此,部分系統(tǒng)如SPDK[2]提供了輪詢機(jī)制以消除中斷開(kāi)銷.輪詢機(jī)制使得I/O任務(wù)所在CPU無(wú)休止地查看完成信號(hào).這種極端的I/O收割機(jī)制能縮減I/O延遲,卻需要付出100%的CPU開(kāi)銷.如表2所示,對(duì)于現(xiàn)代一塊超低延遲的固態(tài)存儲(chǔ)盤,輪詢的延遲低于中斷延遲,尤其是I/O請(qǐng)求大小較小時(shí).然而,隨著I/O請(qǐng)求變大,輪詢帶來(lái)的I/O延遲低的優(yōu)勢(shì)逐漸變得不明顯.這是因?yàn)榇驣/O請(qǐng)求的硬件處理時(shí)間明顯高于I/O收割延遲,使得中斷的上下文開(kāi)銷變得不明顯.另一方面,隨著I/O請(qǐng)求變大,中斷的CPU開(kāi)銷越來(lái)越低,而輪詢卻需要獨(dú)占CPU.

    Table 2 Comparison of the Latency and CPU Consumption of Interrupt Against Polling

    通過(guò)分析,我們發(fā)現(xiàn)輪詢機(jī)制在I/O請(qǐng)求較小時(shí)延遲低的優(yōu)勢(shì)明顯;在I/O請(qǐng)求較大時(shí),中斷機(jī)制CPU開(kāi)銷低的優(yōu)勢(shì)顯著,延遲與輪詢機(jī)制相當(dāng).

    2 NIO設(shè)計(jì)

    本文提出一種低CPU開(kāi)銷的低延遲存儲(chǔ)引擎NIO,旨在提供與輪詢接近的低延遲,同時(shí)降低I/O收割過(guò)程中的CPU占用率.

    Fig. 1 Overall architecture of NIO圖1 NIO的整體架構(gòu)圖

    2.1 NIO架構(gòu)

    圖1顯示了NIO的架構(gòu)圖.NIO是介于NVMe設(shè)備驅(qū)動(dòng)層和應(yīng)用層之間的基本存儲(chǔ)引擎(類似于塊設(shè)備層).應(yīng)用程序、文件系統(tǒng)或者鍵值存儲(chǔ)系統(tǒng)通過(guò)讀寫接口將I/O請(qǐng)求發(fā)送給NIO.受到表2的啟發(fā),NIO將大小I/O路徑分離,并采取不同的I/O收割機(jī)制以低CPU開(kāi)銷獲取低I/O延遲.如圖1和算法1所示,在提交I/O到設(shè)備后,對(duì)于小I/O,使用惰性輪詢機(jī)制,先讓出CPU一段時(shí)間,再接著輪詢I/O請(qǐng)求的完成信號(hào)(算法1的行②~④).對(duì)于大I/O,NIO仍然使用傳統(tǒng)的硬件中斷機(jī)制(算法1的行⑤⑥).

    算法1.NIO處理I/O請(qǐng)求算法.

    輸入:發(fā)送到存儲(chǔ)設(shè)備端的I/O請(qǐng)求bio,I/O大小io_size;

    輸出:函數(shù)返回值void.

    ①submit_bio(bio); /*提交I/O到設(shè)備*/

    ② ifio_size

    /*THRESHOLD為界定的大小I/O的閾值*/

    ③sleep(INTERVAL);

    /*讓出CPU,INTERVAL為小I/O睡眠時(shí)間*/

    ④wake_up()并輪詢;

    /*被高精度定時(shí)器hrtimer喚醒并進(jìn)入輪詢*/

    ⑤ else /*大I/O處理路徑*/

    ⑥io_schedule()并等待中斷;

    /*讓出CPU并等待中斷信號(hào)*/

    ⑦ end if

    NIO的架構(gòu)面臨著2個(gè)基本問(wèn)題:如何區(qū)分大小I/O以及如何確定惰性輪詢的睡眠等待時(shí)間.

    NIO通過(guò)系統(tǒng)預(yù)設(shè)的分界閾值區(qū)分大小I/O.分界閾值可通過(guò)對(duì)比存儲(chǔ)設(shè)備在帶寬利用率不高的情況下,中斷和輪詢5類規(guī)整大小I/O的延遲確定.如表2所示,在讀請(qǐng)求大小低于64 KB時(shí),輪詢的優(yōu)勢(shì)顯著;而在≥64 KB時(shí),輪詢優(yōu)勢(shì)不明顯.故NIO對(duì)于同種型號(hào)的SSD的讀請(qǐng)求采用64 KB為分界閾值,寫請(qǐng)求的情況類似.這種靜態(tài)切分的方法能有效應(yīng)對(duì)復(fù)雜的應(yīng)用I/O.首先,雖然應(yīng)用I/O大小可能不規(guī)整(即非4 KB的整數(shù)倍),操作系統(tǒng)在提交I/O請(qǐng)求一般通過(guò)填充操作將其對(duì)齊,故在確定分界閾值只需要測(cè)量少數(shù)5種規(guī)整大小的I/O.其次,在確定分界閾值時(shí),只需考慮存儲(chǔ)設(shè)備帶寬未被充分利用的極端情況.因?yàn)樵谶@種情況下設(shè)備的硬件延遲較低,能確定在所有設(shè)備狀態(tài)下小I/O的一個(gè)超集,使得小I/O總是能被準(zhǔn)確判定.本文將在2.3節(jié)討論在設(shè)備帶寬充分利用情況下,通過(guò)動(dòng)態(tài)調(diào)整機(jī)制調(diào)整惰性輪詢睡眠間隔以應(yīng)對(duì)小I/O被誤判的情況.

    NIO通過(guò)系統(tǒng)靜態(tài)預(yù)設(shè)和動(dòng)態(tài)調(diào)整的方法,為每一種規(guī)整大小的小讀和小寫請(qǐng)求都設(shè)定一個(gè)睡眠閾值.NIO靜態(tài)睡眠閾值綜合考慮了I/O的平均延遲、延遲抖動(dòng)以及睡眠開(kāi)銷,其確定式為

    Tstatic=Tavg-Tstdev-Tsleep,

    (1)

    其中,Tavg為輪詢?cè)擃愋驮摯笮/O的平均延遲,例如表2中的第3列輪詢延遲.Tstdev為該類型該大小I/O耗時(shí)的標(biāo)準(zhǔn)差.式(1)之所以減去標(biāo)準(zhǔn)差,是為了緩解I/O延遲抖動(dòng)帶來(lái)的影響.最后,靜態(tài)睡眠時(shí)間Tstatic還除去了睡眠機(jī)制帶來(lái)的開(kāi)銷Tsleep,如睡眠前后的上下文切換.睡眠開(kāi)銷可動(dòng)態(tài)配置,在NIO中為1 μs.

    以上NIO的基本架構(gòu)涵蓋了I/O收割過(guò)程中的靜態(tài)屬性.然而,如何應(yīng)對(duì)上層應(yīng)用以及底層存儲(chǔ)設(shè)備的動(dòng)態(tài)變化依然存在難題.因此,NIO提出事務(wù)感知的I/O收割機(jī)制和動(dòng)態(tài)調(diào)整機(jī)制.

    2.2 事務(wù)感知的I/O收割機(jī)制

    在存儲(chǔ)系統(tǒng)中,一組需要同時(shí)完成的I/O請(qǐng)求被稱為一個(gè)事務(wù).事務(wù)的響應(yīng)延遲由事務(wù)中處理最慢的I/O請(qǐng)求確定,它對(duì)系統(tǒng)的性能表現(xiàn)有很大的影響.在現(xiàn)有的存儲(chǔ)系統(tǒng)中,I/O的處理和收割都是以單個(gè)I/O為單位,無(wú)法感知上層系統(tǒng)的事務(wù)語(yǔ)義,從而可能無(wú)法發(fā)揮NIO大小I/O分離的架構(gòu)優(yōu)勢(shì).例如,文件系統(tǒng)在處理用戶通過(guò)文件接口存儲(chǔ)的數(shù)據(jù)時(shí),可能需要寫入2個(gè)數(shù)據(jù),即文件元數(shù)據(jù)(描述文件存放位置)以及用戶數(shù)據(jù).文件元數(shù)據(jù)一般較小,例如低于64 KB,而用戶數(shù)據(jù)視應(yīng)用情況可能較大,例如高于64 KB.在最基本的NIO設(shè)計(jì)中,文件元數(shù)據(jù)被劃分為小I/O處理,而用戶數(shù)據(jù)被劃分為大I/O.即使文件元數(shù)據(jù)被快速收割,用戶請(qǐng)求的快慢還是取決于較大的I/O,即用戶數(shù)據(jù);這使得小I/O優(yōu)化失效.

    為了解決上述問(wèn)題,NIO提出了事務(wù)感知的I/O收割機(jī)制,即判斷I/O大小是以整個(gè)事務(wù)為基本單位.若一個(gè)事務(wù)中存在大I/O,則該事務(wù)被判定為大I/O;事務(wù)中的小I/O也還是以中斷的方式收割.若一個(gè)事務(wù)中的請(qǐng)求均為小I/O,則該事務(wù)被判定為小I/O;事務(wù)中的所有I/O以惰性輪詢的方式收割.

    事務(wù)感知的I/O收割機(jī)制還面臨2個(gè)問(wèn)題:1)上層系統(tǒng)如何傳達(dá)事務(wù)語(yǔ)義給NIO;2)事務(wù)內(nèi)部的請(qǐng)求依賴在NIO架構(gòu)下如何處理.

    上層系統(tǒng)或應(yīng)用需要顯示地指定某些I/O屬于同一個(gè)事務(wù).事務(wù)指定方式可以通過(guò)為I/O請(qǐng)求標(biāo)上同一個(gè)事務(wù)ID(identity)或者通過(guò)同一個(gè)系統(tǒng)調(diào)用實(shí)現(xiàn).在NIO的具體實(shí)現(xiàn)中,我們通過(guò)后者,即同一個(gè)系統(tǒng)調(diào)用,傳達(dá)事務(wù)語(yǔ)義.NIO通過(guò)矢量化的I/O系統(tǒng)調(diào)用pvsync2,實(shí)現(xiàn)事務(wù)感知的I/O收割機(jī)制.應(yīng)用程序可以通過(guò)pvsync2指定多個(gè)不連續(xù)的I/O請(qǐng)求,并將這些I/O請(qǐng)求標(biāo)記為高優(yōu)先級(jí)(例如攜帶RWF_HIPRI標(biāo)志),以觸發(fā)NIO的事務(wù)感知的I/O收割機(jī)制.

    事務(wù)內(nèi)部的I/O請(qǐng)求可能存在依賴.如文件系統(tǒng)中日志數(shù)據(jù)塊和日志提交塊存在寫依賴,即日志提交塊需要在日志數(shù)據(jù)塊之后持久化.NIO通過(guò)分階段的思想,將有依賴的請(qǐng)求劃分成多個(gè)階段處理,從而在保證原先事務(wù)寫依賴的前提下,盡可能加速每一階段的I/O請(qǐng)求.如一個(gè)事務(wù)中A和B這2組請(qǐng)求,A需要在B之前持久化,則第1階段先使用對(duì)A組請(qǐng)求整體收割.在A組請(qǐng)求完成后,B組請(qǐng)求接著以類似的方式處理.

    2.3 動(dòng)態(tài)調(diào)整機(jī)制

    現(xiàn)代的存儲(chǔ)設(shè)備一般具有多個(gè)硬件隊(duì)列,且1個(gè)硬件隊(duì)列可同時(shí)處理多個(gè)I/O請(qǐng)求.所以,一個(gè)I/O預(yù)期的完成時(shí)間不僅僅取決于存儲(chǔ)系統(tǒng)中的靜態(tài)因素(即式(1)),也受到其他硬件隊(duì)列以及本隊(duì)列上I/O的影響.為了應(yīng)對(duì)上述問(wèn)題,NIO提出動(dòng)態(tài)調(diào)整機(jī)制,在保留現(xiàn)有NVMe存儲(chǔ)系統(tǒng)高并發(fā)低延遲的特點(diǎn)前提下,動(dòng)態(tài)調(diào)整小I/O處理的睡眠時(shí)間.

    I/O請(qǐng)求可能由于有限設(shè)備資源和設(shè)備內(nèi)部活動(dòng)如垃圾回收而遭受額外的排隊(duì)時(shí)間.NIO通過(guò)啟發(fā)式算法確定I/O的排隊(duì)時(shí)間,并將該排隊(duì)時(shí)間加上式(1)的時(shí)間確定小I/O的總體睡眠時(shí)間:

    Toverall=Tstatic+Tdynamic.

    (2)

    NIO為每個(gè)硬件隊(duì)列上的每類請(qǐng)求大小的讀和寫請(qǐng)求維護(hù)1個(gè)排隊(duì)時(shí)間Tdynamic.例如NIO系統(tǒng)中有32個(gè)硬件隊(duì)列,5種請(qǐng)求大小,則每個(gè)隊(duì)列有10(=2×5)個(gè)排隊(duì)時(shí)間,總共有320(=2×5×32)個(gè)排隊(duì)時(shí)間.NIO為每個(gè)硬件隊(duì)列都維護(hù)1個(gè)排隊(duì)時(shí)間,從而不影響硬件隊(duì)列的并行性.

    排隊(duì)時(shí)間在每一次I/O請(qǐng)求完成時(shí)動(dòng)態(tài)更新.排隊(duì)時(shí)間為當(dāng)前隊(duì)列當(dāng)前I/O前N個(gè)I/O請(qǐng)求等待時(shí)間的算數(shù)平均數(shù):

    (3)

    Δti=max(0,Treal-Texpect),

    (4)

    其中,Treal為I/O從NIO發(fā)出至I/O被NIO收割的時(shí)間間隔,Texpect為該I/O在輪詢機(jī)制下的平均延遲,例如表2的第3列輪詢延遲.

    為了維護(hù)排隊(duì)時(shí)間,NIO需要額外的內(nèi)存空間記錄前N個(gè)I/O請(qǐng)求的排隊(duì)時(shí)間.例如對(duì)于32個(gè)硬件隊(duì)列,2種I/O和5種請(qǐng)求大小,N=1 024,每個(gè)排隊(duì)時(shí)間用8 B記錄,則需要額外2.5 MB(=32×2×5×1 024×8 B)內(nèi)存空間.現(xiàn)代計(jì)算機(jī)一般擁有4 GB以上的內(nèi)存空間,故本工作認(rèn)為該內(nèi)存空間開(kāi)銷可以接受.

    同時(shí),為了實(shí)時(shí)更新排隊(duì)時(shí)間,NIO需要追蹤每個(gè)I/O的實(shí)際完成時(shí)間,該追蹤和實(shí)時(shí)更新開(kāi)銷在NIO可忽略不計(jì).現(xiàn)有Linux NVMe存儲(chǔ)系統(tǒng)自身已經(jīng)追蹤每個(gè)I/O的生命周期(如完成時(shí)間),向上層系統(tǒng)提供這些信息供程序分析、服務(wù)質(zhì)量控制等功能.NIO構(gòu)建于NVMe存儲(chǔ)系統(tǒng)之上,天然地利用每個(gè)I/O的實(shí)際完成時(shí)間,故無(wú)額外的追蹤開(kāi)銷.在更新排隊(duì)時(shí)間時(shí),NIO采用遞歸增量更新的方式而非每次都重新計(jì)算平均值:

    (5)

    NIO每次只需計(jì)算最近I/O的排隊(duì)時(shí)間,即ΔtN+k,并根據(jù)式(5)以常數(shù)時(shí)間復(fù)雜度遞歸更新排隊(duì)時(shí)間,極大地降低了更新排隊(duì)時(shí)間的開(kāi)銷.

    3 NIO實(shí)現(xiàn)

    本工作通過(guò)修改Linux 4.18.20內(nèi)核中的多隊(duì)列塊設(shè)備層(blk-mq)實(shí)現(xiàn)了NIO.

    Fig. 2 The implementation of NIO圖2 NIO的實(shí)現(xiàn)

    圖2展示了NIO的具體實(shí)現(xiàn)以及流程圖.為了方便闡述,圖2的每次系統(tǒng)調(diào)用即步驟①為只包含1個(gè)I/O請(qǐng)求的事務(wù),I/O大小的判斷即步驟③也是以事務(wù)為單位.如圖2步驟①所示,應(yīng)用程序需要通過(guò)pvsync2接口,并將該請(qǐng)求標(biāo)記成O_DIRECT和RWF_HIPRI,以調(diào)用NIO的功能.這2個(gè)標(biāo)志存在于原生Linux內(nèi)核中,分別表示繞開(kāi)VFS頁(yè)緩存和高優(yōu)先級(jí)請(qǐng)求.NIO利用這2個(gè)標(biāo)志實(shí)現(xiàn)低延遲的I/O收割機(jī)制,從而無(wú)需改動(dòng)除blk-mq之外的其他內(nèi)核模塊如VFS.如步驟②所示,VFS檢查請(qǐng)求標(biāo)志,若不攜帶RWF_HIPRI,則將請(qǐng)求直接派發(fā)到傳統(tǒng)基于中斷機(jī)制的I/O路徑中,否則進(jìn)入blk-mq模塊進(jìn)一步判斷大小I/O.如步驟③所示,若為小I/O,即I/O大小≤64 KB,則采用惰性輪詢機(jī)制.NIO首先睡眠間隔為Tstatic+Tdynamic,其中Tstatic為式(1)所定義.本工作在blk-sysfs.c中添加了新的結(jié)構(gòu)體和函數(shù)以支持Tstatic的手動(dòng)配置.在操作系統(tǒng)啟動(dòng)完成時(shí),系統(tǒng)管理員可以通過(guò)Linux sysfs向NIO傳入Tstatic相關(guān)數(shù)值.Tdynamic為式(3)定義.由于NIO通過(guò)式(5)計(jì)算Tdynamic,NIO維護(hù)了2個(gè)排隊(duì)時(shí)間以及N個(gè)Δt.這些變量的初始值為0.

    NIO在睡眠之后持續(xù)輪詢,直到接收到I/O完成信號(hào),如步驟④所示.之后,NIO根據(jù)式(5)更新Tdynamic.其中需要計(jì)算當(dāng)前請(qǐng)求的實(shí)際完成時(shí)間與預(yù)期完成時(shí)間的差值,即ΔtN+k.NIO在睡眠之前通過(guò)函數(shù)ktime_get_ns記錄初始時(shí)間T1,在步驟④記錄完成時(shí)間T2.實(shí)際完成時(shí)間Treal=T2-T1.預(yù)期完成時(shí)間需要系統(tǒng)管理員手動(dòng)配置.與Tstatic相似,系統(tǒng)管理員在操作系統(tǒng)啟動(dòng)完成時(shí)通過(guò)sysfs向NIO傳入各種大小的讀寫請(qǐng)求在輪詢機(jī)制下的完成時(shí)間,例如表2的第3列輪詢延遲.NIO通過(guò)式(4)計(jì)算出ΔtN+k,并通過(guò)式(5)更新排隊(duì)時(shí)間.如步驟⑤所示,請(qǐng)求被成功處理并返回用戶應(yīng)用.

    4 實(shí) 驗(yàn)

    本節(jié)將通過(guò)實(shí)驗(yàn)對(duì)比和分析NIO與現(xiàn)有系統(tǒng)的性能差異.首先,通過(guò)對(duì)比NIO與現(xiàn)有系統(tǒng)在不同I/O大小下的性能表現(xiàn)和CPU占用率驗(yàn)證NIO的架構(gòu)和整體設(shè)計(jì).其次,通過(guò)對(duì)比測(cè)試事務(wù)處理下的性能驗(yàn)證事務(wù)感知的I/O收割機(jī)制.最后,通過(guò)動(dòng)態(tài)負(fù)載,分析和驗(yàn)證動(dòng)態(tài)調(diào)整機(jī)制.

    4.1 實(shí)驗(yàn)平臺(tái)和方法

    本實(shí)驗(yàn)使用的實(shí)驗(yàn)平臺(tái)配置信息如表3所示.本實(shí)驗(yàn)使用的測(cè)試設(shè)備為Intel公司于2018年推出的傲騰SSD[7],其在本實(shí)驗(yàn)平臺(tái)的延遲如表2所示.NIO的配置參數(shù)如表4所示.這些參數(shù)通過(guò)FIO[8]單線程測(cè)量原生Linux NVMe存儲(chǔ)棧在不同I/O大小(如表4中第1列所示)對(duì)整盤進(jìn)行隨機(jī)讀寫的延遲確定.靜態(tài)睡眠時(shí)間通過(guò)式(1)確定,其中延遲平均值和延遲標(biāo)準(zhǔn)差為基于輪詢的對(duì)應(yīng)延遲.預(yù)期完成時(shí)間為基于輪詢的平均延遲.在操作系統(tǒng)啟動(dòng)完成后,這些參數(shù)通過(guò)sysfs傳遞到NIO系統(tǒng)中.

    Table 4 NIO Parameters

    本實(shí)驗(yàn)將NIO與基于中斷機(jī)制和輪詢機(jī)制的Linux NVMe存儲(chǔ)系統(tǒng)對(duì)比.本實(shí)驗(yàn)使用性能測(cè)試工具FIO對(duì)整塊存儲(chǔ)設(shè)備區(qū)域進(jìn)行讀寫.為了測(cè)試公平,所有測(cè)試均使用pvsync2接口發(fā)送I/O請(qǐng)求,以控制存儲(chǔ)系統(tǒng)其他部分的影響.整個(gè)測(cè)試過(guò)程開(kāi)啟O_DIRECT標(biāo)志,以繞開(kāi)操作系統(tǒng)緩存直接對(duì)設(shè)備讀寫.如無(wú)特別說(shuō)明,測(cè)試的數(shù)據(jù)量為整個(gè)盤的大小.

    4.2 基準(zhǔn)測(cè)試

    本節(jié)測(cè)試啟動(dòng)單個(gè)線程持續(xù)發(fā)送各種大小的I/O.測(cè)試過(guò)程中io_depth被設(shè)置為1.表5顯示了測(cè)試結(jié)果.I/O大小>64 KB的結(jié)果未顯示,是由于在這之后3個(gè)對(duì)比系統(tǒng)的性能無(wú)明顯差異.從表5中可知,綜合各I/O大小的平均值,NIO的平均延遲為中斷的92.9%,為輪詢的103.6%.這是因?yàn)閷?duì)于小I/O,NIO使用了惰性輪詢機(jī)制,使得絕大部分I/O能消除中斷帶來(lái)的上下文開(kāi)銷.進(jìn)一步分析發(fā)現(xiàn),對(duì)于少部分快速完成的I/O,NIO睡眠時(shí)間過(guò)長(zhǎng)導(dǎo)致總體平均延遲比輪詢I/O的平均延遲高.

    Table 5 Microbenchmark Results (Random Read)

    NIO也能提供更穩(wěn)定的延遲,其延遲標(biāo)準(zhǔn)差為中斷的86.6%,為輪詢的98.8%.相比于中斷,NIO需要額外7%的CPU占用.此外,相比于輪詢,NIO在優(yōu)化I/O延遲的同時(shí)能極大地降低系統(tǒng)的CPU占用率.這是因?yàn)橄啾扔跇O端的輪詢,NIO會(huì)主動(dòng)讓出CPU進(jìn)入睡眠狀態(tài),降低CPU占用率的同時(shí)保留當(dāng)前程序的可用時(shí)間片,從而降低下次CPU周期調(diào)度(10 ms 1次)將該任務(wù)調(diào)度出去的概率.

    4.3 事務(wù)處理測(cè)試

    本節(jié)測(cè)試使用FIO的pvsync2接口模擬事務(wù)處理.測(cè)試過(guò)程從4 KB~64 KB區(qū)間隨機(jī)選擇事務(wù)內(nèi)各I/O請(qǐng)求的大小.本實(shí)驗(yàn)設(shè)置事務(wù)大小即事務(wù)內(nèi)I/O個(gè)數(shù)分別為4和64,以分別模擬大小事務(wù).由于pvsync2接口單個(gè)操作只支持1個(gè)操作數(shù)(即讀或?qū)?,因此目前NIO的具體實(shí)現(xiàn)也只支持純讀和純寫事務(wù).因此,本實(shí)驗(yàn)僅展示了純讀和純寫事務(wù)的性能.測(cè)試結(jié)果如表6所示.從表6可知,當(dāng)事務(wù)大小為4時(shí),相比于中斷,NIO能平均降低約3.4%的事務(wù)處理延遲.當(dāng)事務(wù)大小為64時(shí),NIO的優(yōu)勢(shì)更明顯,事務(wù)處理延遲相比中斷平均降低了4%.另一方面,NIO相比于中斷需要付出額外50%的CPU開(kāi)銷,相比于輪詢減少了約82%的CPU占用.進(jìn)一步分析發(fā)現(xiàn),在本實(shí)驗(yàn)的SSD上,I/O的硬件處理時(shí)間還是占了相當(dāng)重的比例,導(dǎo)致中斷機(jī)制與輪詢機(jī)制的平均延遲相差不大.相信在下一代更快的設(shè)備上,如Intel公司2020年推出的4 KB讀寫延遲僅為5 μs(比當(dāng)前測(cè)試設(shè)備快了將近1倍)的PCIe 4.0 SSD[1]上,NIO的延遲和CPU占用率的降低將更加明顯.

    Table 6 Results of Transaction Performance

    4.4 動(dòng)態(tài)負(fù)載測(cè)試

    本節(jié)實(shí)驗(yàn)通過(guò)動(dòng)態(tài)變化測(cè)試過(guò)程中的I/O大小、I/O線程以測(cè)試NIO的動(dòng)態(tài)調(diào)整機(jī)制.實(shí)驗(yàn)過(guò)程分為3個(gè)階段,以分別模擬系統(tǒng)在頻繁小I/O、頻繁大I/O以及高并發(fā)情況下的場(chǎng)景以及這些場(chǎng)景間的切換.每個(gè)階段向測(cè)試設(shè)備上隨機(jī)寫入20 GB的數(shù)據(jù).

    階段1,F(xiàn)IO啟動(dòng)2個(gè)進(jìn)程隨機(jī)寫入I/O大小在4~8 KB的數(shù)據(jù);階段2,測(cè)試進(jìn)程增加為4個(gè),隨機(jī)寫入128 KB~1 MB的數(shù)據(jù);階段3,進(jìn)程數(shù)量進(jìn)一步增加至13個(gè),并向設(shè)備寫入4~8 KB的數(shù)據(jù).測(cè)試結(jié)果如表7所示.從表7可知,寫入等量數(shù)據(jù)時(shí),NIO幾乎能和輪詢同時(shí)間完成,比最慢的中斷時(shí)間縮短約5%.

    Table 7 Results of Dynamic Workloads

    本實(shí)驗(yàn)進(jìn)一步分析了測(cè)試過(guò)程中各階段的平均延遲、歸一化到輪詢的延遲標(biāo)準(zhǔn)差和CPU占用率.在3個(gè)階段,NIO的延遲標(biāo)準(zhǔn)差分別為中斷的7%,100%,9%,為輪詢的105%,143%,142%;NIO的平均CPU占用率分別為中斷的125%,110%,110%,為輪詢的41%,7%,21%.可以看出,NIO在高并發(fā)小I/O場(chǎng)景下(即第3階段)表現(xiàn)尤其優(yōu)異.高并發(fā)小I/O場(chǎng)景不僅考察存儲(chǔ)系統(tǒng)的I/O處理能力,也考驗(yàn)CPU利用效率;NIO能以更小的CPU代價(jià)獲取較低的I/O延遲,故NIO在CPU競(jìng)爭(zhēng)的頻繁小I/O場(chǎng)景下優(yōu)于中斷和輪詢.

    5 相關(guān)工作

    本節(jié)將從I/O收割機(jī)制及低延遲存儲(chǔ)系統(tǒng)2個(gè)方面介紹相關(guān)工作.

    1) I/O收割機(jī)制.傳統(tǒng)存儲(chǔ)系統(tǒng)通過(guò)中斷收割I(lǐng)/O,然而會(huì)引入額外的上下文切換開(kāi)銷.因此,某些存儲(chǔ)系統(tǒng)[2-4]使用輪詢?nèi)〈袛嘁韵舷挛那袚Q,從而獲取低延遲.Linux內(nèi)核進(jìn)一步提出了混合輪詢機(jī)制[9](hybrid polling)以降低輪詢帶來(lái)的CPU開(kāi)銷.混合輪詢與本文提出的惰性輪詢類似,都是先讓線程睡眠等待一段時(shí)間再持續(xù)輪詢.不同之處在于:①混合輪詢不區(qū)分大小I/O均使用同種輪詢策略,使得大I/O的收割效率低下.②混合輪詢不區(qū)分讀寫、不區(qū)分I/O大小,均使用同一睡眠時(shí)間,使得小I/O可能受大I/O的影響睡眠過(guò)長(zhǎng)而效率低下.③混合輪詢?cè)谟?jì)算睡眠時(shí)間時(shí),采用的是自機(jī)器啟動(dòng)以來(lái)所有I/O的平均完成時(shí)間的一半;這種方法會(huì)導(dǎo)致睡眠時(shí)間的不準(zhǔn)確以及破壞NVMe存儲(chǔ)系統(tǒng)的并行性.④混合輪詢無(wú)法動(dòng)態(tài)調(diào)整.以上混合輪詢的種種局限使得其默認(rèn)在Linux內(nèi)核中被禁用;本文提出的NIO可能是內(nèi)核中混合輪詢的一種更高效的替代系統(tǒng).cinterrupt[6]動(dòng)態(tài)地合并中斷請(qǐng)求,從而減少主機(jī)端CPU占用.cinterrupt的設(shè)計(jì)和本文的NIO互補(bǔ),能共同促進(jìn)高效的I/O收割機(jī)制.

    2) 低延遲存儲(chǔ)系統(tǒng).為了充分發(fā)揮新型固態(tài)存儲(chǔ)設(shè)備的超低延遲,Linux NVMe存儲(chǔ)系統(tǒng)默認(rèn)不進(jìn)行主機(jī)端I/O調(diào)度.FLIN[10]和D2FQ[11]提出在設(shè)備端進(jìn)行I/O請(qǐng)求調(diào)度以保證公平性及控制尾延遲.asyncio[12]在存儲(chǔ)系統(tǒng)中將CPU和I/O操作并行,從而降低單個(gè)文件系統(tǒng)調(diào)用的整體延遲.CoinPurse[13]將文件系統(tǒng)中的小寫通過(guò)字節(jié)接口直接寫入設(shè)備的控制器緩沖區(qū),從而加速了小寫操作.HORAE[14]提出將存儲(chǔ)系統(tǒng)中的順序性保證分離,由快速旁路保證,從而使得一連串序列化的寫請(qǐng)求能并行執(zhí)行,縮短了事務(wù)的延遲.Max[15]通過(guò)優(yōu)化讀寫鎖和數(shù)據(jù)結(jié)構(gòu)組織方式,降低多進(jìn)程在文件系統(tǒng)層的同步和競(jìng)爭(zhēng),從而能降低高并發(fā)場(chǎng)景下請(qǐng)求的延遲.以上低延遲存儲(chǔ)系統(tǒng)關(guān)注更上層系統(tǒng)(如文件系統(tǒng))的I/O延遲,能進(jìn)一步利用NIO縮短I/O收割階段的延遲.

    另一類優(yōu)化存儲(chǔ)延遲的系統(tǒng)基于開(kāi)放通道固態(tài)存儲(chǔ)(open-channel SSD, OCSSD),利用OCSSD的白盒優(yōu)勢(shì),通過(guò)精簡(jiǎn)軟件棧以及提供存儲(chǔ)隔離等方法縮減延遲.ParaFS[16]將主機(jī)端存儲(chǔ)軟件與設(shè)備端具有類似功能的閃存轉(zhuǎn)換層協(xié)同設(shè)計(jì),與文獻(xiàn)[17-21]中所述的設(shè)計(jì)類似.ParaFS通過(guò)精簡(jiǎn)存儲(chǔ)棧、主機(jī)端I/O調(diào)度以及主機(jī)設(shè)備協(xié)同的垃圾回收機(jī)制等方式優(yōu)化I/O延遲.FlashBlox[22],DC-Store[23],OCVM[24]通過(guò)將不同應(yīng)用、容器或虛擬機(jī)以隔離的方式運(yùn)行在不同的物理存儲(chǔ)通道(channel)中,以消除不同應(yīng)用I/O的互相干擾,從而提供穩(wěn)定的延遲.此類系統(tǒng)通過(guò)軟硬件協(xié)同提供端到端的延遲保證,能進(jìn)一步利用NIO優(yōu)化I/O收割延遲.

    6 討 論

    高性能固態(tài)存儲(chǔ)支持較大的并發(fā),且硬件控制器可能會(huì)對(duì)并發(fā)I/O進(jìn)行調(diào)度,導(dǎo)致I/O亂序執(zhí)行,從而影響NIO的優(yōu)化效果.I/O亂序會(huì)導(dǎo)致2種結(jié)果:請(qǐng)求提前完成和請(qǐng)求延后完成.對(duì)于請(qǐng)求提前完成的情況,NIO針對(duì)小I/O的惰性輪詢?cè)O(shè)計(jì)可能失效.但由于NIO保留了中斷機(jī)制,NIO仍能準(zhǔn)時(shí)捕獲I/O完成的信號(hào).對(duì)于請(qǐng)求延后完成的情況,NIO針對(duì)小I/O的惰性輪詢?cè)O(shè)計(jì)仍能起作用,但惰性輪詢的睡眠時(shí)間相比于無(wú)亂序場(chǎng)景是次優(yōu)的.

    針對(duì)I/O亂序問(wèn)題,利用白盒、灰盒存儲(chǔ)或機(jī)器學(xué)習(xí)技術(shù),NIO能在將來(lái)被進(jìn)一步優(yōu)化.在白盒和灰盒存儲(chǔ)例如開(kāi)放通道固態(tài)存儲(chǔ)中,主機(jī)端軟件能控制I/O調(diào)度,使得I/O完成時(shí)間能被更準(zhǔn)確地預(yù)測(cè),如文獻(xiàn)[16,25]所述.在黑盒存儲(chǔ)例如商用的標(biāo)準(zhǔn)NVMe SSD中,已有工作[26]利用機(jī)器學(xué)習(xí)模型預(yù)測(cè)I/O請(qǐng)求的完成時(shí)間,此類技術(shù)也可用于確定NIO的睡眠等待時(shí)間.

    7 結(jié) 論

    高性能固態(tài)存儲(chǔ)I/O處理速率越來(lái)越快,其單個(gè)I/O的延遲已低于10 μs.因此,構(gòu)建低延遲存儲(chǔ)引擎具有重要意義.本文提出一種低CPU開(kāi)銷的低延遲存儲(chǔ)引擎NIO.通過(guò)將大小I/O路徑分離并提出事務(wù)感知的I/O收割和動(dòng)態(tài)調(diào)整機(jī)制,NIO以低CPU開(kāi)銷快速探測(cè)并處理存儲(chǔ)設(shè)備完成I/O請(qǐng)求的信號(hào).實(shí)驗(yàn)顯示,相比于傳統(tǒng)的基于中斷或輪詢的存儲(chǔ)引擎,NIO能取得與輪詢接近的延遲并大幅降低CPU占用率.

    作者貢獻(xiàn)聲明:廖曉堅(jiān)進(jìn)行了該論文相關(guān)實(shí)驗(yàn)設(shè)計(jì)、編碼及測(cè)試、論文撰寫等工作;楊者進(jìn)行了前期實(shí)驗(yàn)方案的討論設(shè)計(jì)與論文修改;楊洪章進(jìn)行了論文結(jié)構(gòu)討論和修改;屠要峰進(jìn)行了實(shí)驗(yàn)補(bǔ)充設(shè)計(jì)討論及論文修改;舒繼武進(jìn)行了論文修改以及新型固態(tài)并發(fā)亂序研究討論.

    猜你喜歡
    輪詢存儲(chǔ)系統(tǒng)收割機(jī)
    用履帶收割機(jī)送柴油
    分布式存儲(chǔ)系統(tǒng)在企業(yè)檔案管理中的應(yīng)用
    哈爾濱軸承(2020年2期)2020-11-06 09:22:36
    自走式油葵收割機(jī)研發(fā)成功
    天河超算存儲(chǔ)系統(tǒng)在美創(chuàng)佳績(jī)
    基于等概率的ASON業(yè)務(wù)授權(quán)設(shè)計(jì)?
    未來(lái)的收割機(jī)
    麥?zhǔn)諘r(shí)如何進(jìn)行聯(lián)合收割機(jī)跨區(qū)作業(yè)
    依托站點(diǎn)狀態(tài)的兩級(jí)輪詢控制系統(tǒng)時(shí)延特性分析
    利用時(shí)間輪詢方式操作DDR3實(shí)現(xiàn)多模式下數(shù)據(jù)重排
    華為震撼發(fā)布新一代OceanStor 18000 V3系列高端存儲(chǔ)系統(tǒng)
    精品日产1卡2卡| 一区二区日韩欧美中文字幕| 一区二区三区激情视频| 国产人伦9x9x在线观看| 岛国视频午夜一区免费看| 免费看a级黄色片| 亚洲成人久久性| 丝袜在线中文字幕| 亚洲国产欧美日韩在线播放| 亚洲成人久久性| 欧美av亚洲av综合av国产av| 久久久久久大精品| 热99re8久久精品国产| 高潮久久久久久久久久久不卡| av电影中文网址| 欧美又色又爽又黄视频| 亚洲精品粉嫩美女一区| 精品欧美国产一区二区三| 欧美中文综合在线视频| 无遮挡黄片免费观看| 国产高清激情床上av| 国产伦人伦偷精品视频| 成年免费大片在线观看| 欧美日本视频| 天天躁狠狠躁夜夜躁狠狠躁| 日本免费a在线| 亚洲欧美激情综合另类| 国产伦在线观看视频一区| 男人舔奶头视频| 啦啦啦 在线观看视频| 91国产中文字幕| 久久午夜综合久久蜜桃| 国产午夜福利久久久久久| 婷婷六月久久综合丁香| 久久久久久久精品吃奶| 国产av一区在线观看免费| 手机成人av网站| 欧美在线黄色| 亚洲精华国产精华精| 人妻久久中文字幕网| 又黄又粗又硬又大视频| 神马国产精品三级电影在线观看 | 午夜福利免费观看在线| 桃色一区二区三区在线观看| 搞女人的毛片| 国内揄拍国产精品人妻在线 | 中文字幕高清在线视频| av中文乱码字幕在线| 淫秽高清视频在线观看| 在线av久久热| 日韩国内少妇激情av| 人人妻人人澡欧美一区二区| 性色av乱码一区二区三区2| 最新在线观看一区二区三区| 久久精品亚洲精品国产色婷小说| 午夜福利18| 99精品欧美一区二区三区四区| 国产主播在线观看一区二区| 久久精品国产综合久久久| 91九色精品人成在线观看| 欧美国产精品va在线观看不卡| 国产爱豆传媒在线观看 | 国产真人三级小视频在线观看| 一进一出好大好爽视频| 俄罗斯特黄特色一大片| 久久久国产成人免费| 国产精品永久免费网站| 精品高清国产在线一区| 黑人巨大精品欧美一区二区mp4| www.自偷自拍.com| 哪里可以看免费的av片| 在线观看午夜福利视频| 精品午夜福利视频在线观看一区| 精品高清国产在线一区| 国产精品免费视频内射| 欧美一区二区精品小视频在线| av中文乱码字幕在线| 国产不卡一卡二| 日韩三级视频一区二区三区| 日韩欧美免费精品| 一本久久中文字幕| 中出人妻视频一区二区| 日本撒尿小便嘘嘘汇集6| 宅男免费午夜| 国产精品,欧美在线| 亚洲中文av在线| 啪啪无遮挡十八禁网站| 国产色视频综合| 日韩一卡2卡3卡4卡2021年| 成熟少妇高潮喷水视频| 一级a爱视频在线免费观看| 草草在线视频免费看| 欧美黑人巨大hd| 日本在线视频免费播放| 侵犯人妻中文字幕一二三四区| 在线观看一区二区三区| 亚洲五月婷婷丁香| 欧美日本视频| 少妇被粗大的猛进出69影院| 禁无遮挡网站| 一级毛片精品| av天堂在线播放| 91av网站免费观看| 国产高清videossex| 一区二区三区激情视频| 国产精品日韩av在线免费观看| 国产麻豆成人av免费视频| 精品高清国产在线一区| 无遮挡黄片免费观看| 日韩av在线大香蕉| 精品久久久久久久久久免费视频| 成人国产一区最新在线观看| 国产成人精品无人区| 精品午夜福利视频在线观看一区| av免费在线观看网站| 欧美激情 高清一区二区三区| 国产亚洲av嫩草精品影院| 午夜免费鲁丝| 男女午夜视频在线观看| 这个男人来自地球电影免费观看| 国内精品久久久久精免费| 好男人电影高清在线观看| 天天添夜夜摸| 亚洲第一电影网av| 丝袜在线中文字幕| 日日干狠狠操夜夜爽| 亚洲欧美精品综合久久99| 久久国产亚洲av麻豆专区| 国产精品一区二区精品视频观看| 一边摸一边做爽爽视频免费| 久久久久久九九精品二区国产 | 午夜视频精品福利| 草草在线视频免费看| 欧美性猛交╳xxx乱大交人| 午夜免费激情av| 午夜成年电影在线免费观看| 身体一侧抽搐| 国产精品精品国产色婷婷| www国产在线视频色| 日本熟妇午夜| 国产精品一区二区三区四区久久 | 夜夜看夜夜爽夜夜摸| 91国产中文字幕| 日韩大尺度精品在线看网址| 国产av在哪里看| 亚洲av熟女| 国产片内射在线| 老汉色∧v一级毛片| 成在线人永久免费视频| √禁漫天堂资源中文www| 久久精品91蜜桃| 久久久久久国产a免费观看| 成年免费大片在线观看| 亚洲成人免费电影在线观看| 亚洲av成人av| 精品欧美国产一区二区三| 熟女少妇亚洲综合色aaa.| 非洲黑人性xxxx精品又粗又长| 亚洲国产中文字幕在线视频| 国产激情偷乱视频一区二区| 国产精品98久久久久久宅男小说| 美女大奶头视频| 90打野战视频偷拍视频| 人人妻人人澡人人看| 色播在线永久视频| 色综合亚洲欧美另类图片| 99在线视频只有这里精品首页| 在线观看舔阴道视频| 男人舔女人下体高潮全视频| 国产精品美女特级片免费视频播放器 | 19禁男女啪啪无遮挡网站| 亚洲成a人片在线一区二区| 国产精品98久久久久久宅男小说| 亚洲无线在线观看| 中文字幕最新亚洲高清| 美女大奶头视频| 国产精华一区二区三区| 亚洲专区字幕在线| 国产私拍福利视频在线观看| 中亚洲国语对白在线视频| 精品熟女少妇八av免费久了| 亚洲七黄色美女视频| 最近在线观看免费完整版| 首页视频小说图片口味搜索| 色精品久久人妻99蜜桃| 三级毛片av免费| xxx96com| 少妇 在线观看| 久久亚洲精品不卡| 99久久无色码亚洲精品果冻| 国产成人欧美在线观看| 日韩中文字幕欧美一区二区| 免费看美女性在线毛片视频| 91老司机精品| 亚洲国产毛片av蜜桃av| 欧美成狂野欧美在线观看| 韩国av一区二区三区四区| 国产高清激情床上av| 国产精品美女特级片免费视频播放器 | 日韩av在线大香蕉| 亚洲中文日韩欧美视频| 美女高潮喷水抽搐中文字幕| 成年女人毛片免费观看观看9| 黄网站色视频无遮挡免费观看| 成人亚洲精品一区在线观看| 精品久久久久久久久久久久久 | 欧美色视频一区免费| 久久精品亚洲精品国产色婷小说| 欧美激情极品国产一区二区三区| 久久伊人香网站| 日韩免费av在线播放| 久久中文字幕一级| 午夜老司机福利片| 最近最新中文字幕大全电影3 | 日韩欧美国产一区二区入口| 国产精品日韩av在线免费观看| 亚洲精华国产精华精| 国产久久久一区二区三区| 婷婷精品国产亚洲av| 国产蜜桃级精品一区二区三区| 男人操女人黄网站| 国产乱人伦免费视频| av有码第一页| 欧美黄色淫秽网站| 91在线观看av| 好男人电影高清在线观看| 99精品欧美一区二区三区四区| 久久精品国产亚洲av高清一级| 女人被狂操c到高潮| 国产成+人综合+亚洲专区| 久久国产乱子伦精品免费另类| 日韩欧美免费精品| 成人三级做爰电影| 国产午夜福利久久久久久| 亚洲av第一区精品v没综合| 我的亚洲天堂| 欧美+亚洲+日韩+国产| a级毛片a级免费在线| 国产亚洲精品综合一区在线观看 | АⅤ资源中文在线天堂| 人成视频在线观看免费观看| svipshipincom国产片| av免费在线观看网站| 国产精品,欧美在线| 最近在线观看免费完整版| 窝窝影院91人妻| 2021天堂中文幕一二区在线观 | 亚洲av成人不卡在线观看播放网| 日韩大码丰满熟妇| 国产熟女xx| 黄片小视频在线播放| 精品欧美一区二区三区在线| 国产男靠女视频免费网站| 青草久久国产| 中文亚洲av片在线观看爽| 一夜夜www| 久久 成人 亚洲| 国产av一区二区精品久久| 免费在线观看成人毛片| 91字幕亚洲| 母亲3免费完整高清在线观看| 一区二区三区国产精品乱码| 深夜精品福利| 久久人妻av系列| 搡老岳熟女国产| 操出白浆在线播放| 老汉色∧v一级毛片| 亚洲国产欧美一区二区综合| 在线观看舔阴道视频| 在线天堂中文资源库| √禁漫天堂资源中文www| 欧美日本亚洲视频在线播放| 99热6这里只有精品| 久久久久久免费高清国产稀缺| 久久这里只有精品19| netflix在线观看网站| 久久久久久久久久黄片| 熟女少妇亚洲综合色aaa.| 一区二区三区激情视频| 成人三级黄色视频| 亚洲午夜精品一区,二区,三区| 999精品在线视频| 又黄又粗又硬又大视频| 老熟妇仑乱视频hdxx| 亚洲熟妇中文字幕五十中出| tocl精华| 国产激情欧美一区二区| 色哟哟哟哟哟哟| 色综合站精品国产| 国产97色在线日韩免费| 国产精品一区二区精品视频观看| 亚洲男人天堂网一区| 久久这里只有精品19| 在线十欧美十亚洲十日本专区| 一级a爱片免费观看的视频| 无人区码免费观看不卡| 亚洲国产高清在线一区二区三 | 色尼玛亚洲综合影院| 亚洲第一av免费看| 成人国语在线视频| 无遮挡黄片免费观看| 午夜激情福利司机影院| 韩国精品一区二区三区| 无人区码免费观看不卡| 日韩精品青青久久久久久| 一本一本综合久久| 亚洲精品在线美女| tocl精华| 麻豆久久精品国产亚洲av| 一边摸一边抽搐一进一小说| 精品少妇一区二区三区视频日本电影| 久久精品91无色码中文字幕| 国产精品免费视频内射| 免费搜索国产男女视频| 757午夜福利合集在线观看| 免费看美女性在线毛片视频| 国产伦一二天堂av在线观看| 少妇裸体淫交视频免费看高清 | svipshipincom国产片| 一级黄色大片毛片| 色综合站精品国产| 人人妻人人澡人人看| 超碰成人久久| 日本 av在线| 亚洲人成电影免费在线| 黑人操中国人逼视频| 两个人免费观看高清视频| 麻豆av在线久日| 国产精品野战在线观看| 18禁黄网站禁片免费观看直播| 国产精华一区二区三区| 国产熟女xx| 黄片小视频在线播放| 精品无人区乱码1区二区| 国产黄片美女视频| 免费在线观看完整版高清| 在线观看免费日韩欧美大片| 波多野结衣巨乳人妻| 日韩欧美国产一区二区入口| av视频在线观看入口| 淫妇啪啪啪对白视频| 亚洲国产精品sss在线观看| 最近最新免费中文字幕在线| 黄色毛片三级朝国网站| 亚洲成人精品中文字幕电影| 一区二区三区精品91| netflix在线观看网站| 亚洲国产精品合色在线| 老熟妇仑乱视频hdxx| 国产黄色小视频在线观看| 久久精品国产99精品国产亚洲性色| 美女国产高潮福利片在线看| 在线天堂中文资源库| 午夜成年电影在线免费观看| 欧美又色又爽又黄视频| 18禁裸乳无遮挡免费网站照片 | 搞女人的毛片| 在线免费观看的www视频| 亚洲免费av在线视频| 久热爱精品视频在线9| 亚洲av日韩精品久久久久久密| 久久精品国产99精品国产亚洲性色| 一级黄色大片毛片| av在线天堂中文字幕| xxx96com| www日本黄色视频网| 一本一本综合久久| 老司机深夜福利视频在线观看| 久久精品国产清高在天天线| 97超级碰碰碰精品色视频在线观看| 老熟妇乱子伦视频在线观看| АⅤ资源中文在线天堂| 成熟少妇高潮喷水视频| 18禁观看日本| 亚洲七黄色美女视频| 亚洲 欧美一区二区三区| 美女免费视频网站| 久9热在线精品视频| 女性被躁到高潮视频| 久久中文看片网| 亚洲免费av在线视频| 国产精品98久久久久久宅男小说| 亚洲精品美女久久久久99蜜臀| 久久久国产成人精品二区| 亚洲熟女毛片儿| 欧美激情高清一区二区三区| 欧美久久黑人一区二区| 999久久久国产精品视频| 满18在线观看网站| 两个人看的免费小视频| 久久人人精品亚洲av| 51午夜福利影视在线观看| 黄色a级毛片大全视频| 老熟妇仑乱视频hdxx| cao死你这个sao货| 国内精品久久久久精免费| 精华霜和精华液先用哪个| 最近最新免费中文字幕在线| 午夜免费鲁丝| 亚洲国产毛片av蜜桃av| 成年人黄色毛片网站| 好看av亚洲va欧美ⅴa在| 日韩欧美一区视频在线观看| 无人区码免费观看不卡| 欧美精品啪啪一区二区三区| av有码第一页| 欧洲精品卡2卡3卡4卡5卡区| 男人舔女人的私密视频| 黄频高清免费视频| 欧美久久黑人一区二区| 欧美av亚洲av综合av国产av| 久久九九热精品免费| 50天的宝宝边吃奶边哭怎么回事| 美女免费视频网站| 国产真实乱freesex| 国产精品99久久99久久久不卡| a级毛片a级免费在线| √禁漫天堂资源中文www| 国产精品久久久久久亚洲av鲁大| 69av精品久久久久久| 99国产精品99久久久久| 在线观看一区二区三区| 久久香蕉激情| 亚洲精品一卡2卡三卡4卡5卡| 国产精品爽爽va在线观看网站 | 国产一区二区三区视频了| 久久久久久大精品| 可以在线观看的亚洲视频| 99国产精品99久久久久| 国产精品免费一区二区三区在线| 欧美黄色淫秽网站| 不卡一级毛片| 久久亚洲真实| 亚洲av片天天在线观看| 亚洲片人在线观看| 亚洲成人久久爱视频| 亚洲熟女毛片儿| 久久久久久久午夜电影| 国产高清videossex| 国产亚洲精品第一综合不卡| 久久九九热精品免费| 老司机深夜福利视频在线观看| 久久99热这里只有精品18| 老司机午夜十八禁免费视频| 美女国产高潮福利片在线看| 变态另类丝袜制服| 女人被狂操c到高潮| 每晚都被弄得嗷嗷叫到高潮| 久久亚洲真实| 亚洲专区字幕在线| 亚洲精品粉嫩美女一区| 亚洲国产中文字幕在线视频| 人人妻人人澡欧美一区二区| 婷婷精品国产亚洲av| 久久草成人影院| 日本黄色视频三级网站网址| 少妇裸体淫交视频免费看高清 | 亚洲色图 男人天堂 中文字幕| av免费在线观看网站| 变态另类丝袜制服| 国产av一区在线观看免费| 久久狼人影院| e午夜精品久久久久久久| 日韩中文字幕欧美一区二区| 男女之事视频高清在线观看| 最新在线观看一区二区三区| 亚洲色图av天堂| 成人亚洲精品一区在线观看| 夜夜躁狠狠躁天天躁| 欧美午夜高清在线| 欧美中文综合在线视频| 亚洲自拍偷在线| 操出白浆在线播放| 亚洲熟女毛片儿| 免费搜索国产男女视频| 91在线观看av| 国产三级黄色录像| 人妻丰满熟妇av一区二区三区| 国产精品久久久久久精品电影 | 亚洲成人精品中文字幕电影| 亚洲成人久久爱视频| 黄色 视频免费看| 一区二区三区精品91| 少妇 在线观看| cao死你这个sao货| 欧美 亚洲 国产 日韩一| 黑丝袜美女国产一区| 真人做人爱边吃奶动态| 欧美黄色片欧美黄色片| svipshipincom国产片| 在线视频色国产色| 中文字幕精品亚洲无线码一区 | 欧美激情极品国产一区二区三区| 制服人妻中文乱码| 国产精品久久久人人做人人爽| 女人被狂操c到高潮| av天堂在线播放| 精品一区二区三区四区五区乱码| 亚洲熟女毛片儿| 久久精品成人免费网站| 欧美激情久久久久久爽电影| 制服丝袜大香蕉在线| 国产熟女xx| 视频区欧美日本亚洲| 久久热在线av| 少妇被粗大的猛进出69影院| 成人三级做爰电影| 欧美在线黄色| 精品久久蜜臀av无| 国产野战对白在线观看| 亚洲人成伊人成综合网2020| 一进一出抽搐gif免费好疼| 久9热在线精品视频| 欧美日韩瑟瑟在线播放| 亚洲人成77777在线视频| 久久伊人香网站| 欧美日本亚洲视频在线播放| 老司机午夜十八禁免费视频| 99国产极品粉嫩在线观看| 在线观看免费午夜福利视频| 身体一侧抽搐| 久久久久久久久免费视频了| 亚洲 欧美 日韩 在线 免费| www.www免费av| 精品一区二区三区av网在线观看| avwww免费| 国产精品久久电影中文字幕| 国产又爽黄色视频| 国产成人欧美在线观看| 精品久久久久久,| 亚洲成国产人片在线观看| 国产在线观看jvid| 可以免费在线观看a视频的电影网站| 免费看a级黄色片| 久久久久久亚洲精品国产蜜桃av| 日本五十路高清| 久久这里只有精品19| 精品电影一区二区在线| 国产真实乱freesex| 大型黄色视频在线免费观看| 可以在线观看的亚洲视频| 国产爱豆传媒在线观看 | 午夜精品久久久久久毛片777| 亚洲精品中文字幕在线视频| 国产av又大| 精品电影一区二区在线| 国产亚洲av嫩草精品影院| 久久婷婷成人综合色麻豆| 欧美人与性动交α欧美精品济南到| 国产午夜福利久久久久久| 亚洲色图 男人天堂 中文字幕| 国内少妇人妻偷人精品xxx网站 | 香蕉av资源在线| 亚洲欧洲精品一区二区精品久久久| 国产精品,欧美在线| 夜夜躁狠狠躁天天躁| 老汉色av国产亚洲站长工具| 欧美一级a爱片免费观看看 | 成在线人永久免费视频| 国产免费男女视频| 18禁美女被吸乳视频| 女性被躁到高潮视频| av超薄肉色丝袜交足视频| 国产精品免费视频内射| 99riav亚洲国产免费| 18禁黄网站禁片午夜丰满| 91字幕亚洲| 国产亚洲欧美98| 精品人妻1区二区| 可以免费在线观看a视频的电影网站| 亚洲国产毛片av蜜桃av| 日韩欧美在线二视频| 午夜免费观看网址| 精品国产乱子伦一区二区三区| 日韩三级视频一区二区三区| 一级毛片高清免费大全| 亚洲九九香蕉| 欧美性长视频在线观看| 一级片免费观看大全| 午夜两性在线视频| 欧美成狂野欧美在线观看| 国产成人欧美| 男人的好看免费观看在线视频 | 777久久人妻少妇嫩草av网站| 一边摸一边抽搐一进一小说| 身体一侧抽搐| 在线观看日韩欧美| 精品电影一区二区在线| 精品一区二区三区四区五区乱码| 97人妻精品一区二区三区麻豆 | 久久精品91蜜桃| 女人高潮潮喷娇喘18禁视频| 最新在线观看一区二区三区| 国产精品久久久av美女十八| 午夜久久久久精精品| 淫秽高清视频在线观看| 国产精品免费视频内射| 别揉我奶头~嗯~啊~动态视频| 一级a爱片免费观看的视频| 成人18禁高潮啪啪吃奶动态图| 琪琪午夜伦伦电影理论片6080| 欧美精品啪啪一区二区三区| 黄片大片在线免费观看| 久久婷婷成人综合色麻豆| 久久久国产成人精品二区| 国产成人系列免费观看| 最近最新中文字幕大全电影3 | 人成视频在线观看免费观看| 丝袜在线中文字幕| 国产成人欧美在线观看| 国产一卡二卡三卡精品| 一级毛片高清免费大全| 99久久无色码亚洲精品果冻| 亚洲成人久久性| 久久草成人影院|