• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      ISMB:多核系統(tǒng)中利用Bank分區(qū)實(shí)現(xiàn)共享庫(kù)隔離

      2023-03-04 06:42:50楊虎斌李嘉翔陳玉聰張紅濤周慶國(guó)
      關(guān)鍵詞:測(cè)試程序鏈表副本

      楊虎斌,李嘉翔,陳玉聰,劉 剛,張紅濤,周 睿,周慶國(guó)

      (蘭州大學(xué) 信息科學(xué)與工程學(xué)院,甘肅 蘭州 730000)

      0 引 言

      動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(Dynamic Random Access Memory, DRAM)被廣泛地應(yīng)用于嵌入式設(shè)備、個(gè)人電腦和服務(wù)器[1]。在現(xiàn)代計(jì)算機(jī)內(nèi)存體系結(jié)構(gòu)中,當(dāng)處理器核(Core)通過(guò)內(nèi)存控制器訪問(wèn)DRAM中的數(shù)據(jù)時(shí),需要將線性的物理地址轉(zhuǎn)換為由通道(Channel)、DIMM、Rank、Bank、行(Row)和列(Column)組成的多維的DRAM地址[2]。為了提高訪問(wèn)內(nèi)存的速度,在每個(gè)Bank中都有一個(gè)行緩沖區(qū)(Row Buffer)[3-4],它一次可以存儲(chǔ)Bank中的一行數(shù)據(jù)。特別地,應(yīng)用程序的局部性越好,行緩沖區(qū)起到的效果就越好。

      在多核平臺(tái)上,DRAM由系統(tǒng)中所有的Core共享,因此,只有在不同Core上運(yùn)行的進(jìn)程并發(fā)訪問(wèn)同一個(gè)Bank中的同一行數(shù)據(jù),或者并發(fā)訪問(wèn)不同Bank中的數(shù)據(jù)時(shí),才不會(huì)發(fā)生行緩沖區(qū)沖突。但是,當(dāng)不同Core上運(yùn)行的進(jìn)程并發(fā)訪問(wèn)同一個(gè)Bank中不同行中的數(shù)據(jù)時(shí),會(huì)引發(fā)行緩沖區(qū)沖突,從而導(dǎo)致該行緩沖區(qū)的頻繁刷新。因此,行緩沖區(qū)沖突導(dǎo)致的內(nèi)存訪問(wèn)延遲使整個(gè)系統(tǒng)的性能下降。

      目前已有一些解決方案利用DRAM Bank分區(qū)技術(shù)緩解這個(gè)問(wèn)題[5-13]。這些解決方案的主要設(shè)計(jì)思想是利用Bank分區(qū)技術(shù)將DRAM中指定的Bank分配給指定的進(jìn)程,因此,不同的進(jìn)程只能訪問(wèn)位于自己的Bank中的物理內(nèi)存,從而可以有效地緩解Bank行緩沖區(qū)沖突。然而,由于共享庫(kù)是一種進(jìn)程間的共享資源,它們被加載到內(nèi)存后,通常隨機(jī)地分布在不同的DRAM Bank中。因此,雖然基于DRAM Bank分區(qū)技術(shù)的解決方案可以有效地緩解由進(jìn)程訪問(wèn)私有內(nèi)存導(dǎo)致的Bank行緩沖區(qū)沖突問(wèn)題,但是,無(wú)法解決訪問(wèn)共享庫(kù)引起的Bank行緩沖區(qū)沖突問(wèn)題。

      該文提出了一種在多核系統(tǒng)中利用DRAM Bank分區(qū)技術(shù)實(shí)現(xiàn)共享庫(kù)隔離的方案(Isolation of Shared Libraries in MultiCore Systems via Bank Partitioning,ISMB)。ISMB為每個(gè)Core提供了一個(gè)共享庫(kù)的副本,并使運(yùn)行在相同Core上的所有進(jìn)程共享只屬于該Core的共享庫(kù)的副本。

      具體地,ISMB首先將共享庫(kù)的副本分別加載到位于對(duì)應(yīng)的Core的Bank中的物理頁(yè)面中,然后利用Bank分區(qū)技術(shù)使運(yùn)行在同一個(gè)Core上的所有進(jìn)程只能訪問(wèn)屬于該Core的共享庫(kù)的副本。因此,ISMB消除了共享庫(kù)導(dǎo)致的Bank行緩沖區(qū)沖突問(wèn)題,從而提升了系統(tǒng)整體的性能。

      從表1中可以看出,與其他沒(méi)有考慮共享庫(kù)的Bank分區(qū)方案相比,ISMB的創(chuàng)新性在于:在涉及共享庫(kù)的兩種情況下,ISMB都可以提供有效的隔離。例如,在情況2下,假設(shè)為Core 0和Core 1分別分配的是Bank 0和Bank 1,則運(yùn)行在Core 0上的應(yīng)用程序的二進(jìn)制可執(zhí)行代碼被加載到Bank 0中,而運(yùn)行在Core1上的共享庫(kù)的代碼被加載到Bank 1中,因此,當(dāng)Core 0和Core 1并發(fā)訪問(wèn)內(nèi)存時(shí),不會(huì)導(dǎo)致Bank行緩存區(qū)沖突。

      表1 ISMB與其他不考慮共享庫(kù)的Bank分區(qū)機(jī)制在共享庫(kù)隔離方面的對(duì)比

      對(duì)比實(shí)驗(yàn)結(jié)果表明,ISMB能夠有效地提升系統(tǒng)隔離性能。與未使用ISMB的Linux相比,在高負(fù)載的情況下,所有SPEC CPU2006基準(zhǔn)測(cè)試程序的減速率平均降低了3.9%,最大降低了26.3%。在混合負(fù)載的情況下,減速率平均降低了6%,最大降低了15.7%。

      1 相關(guān)工作

      1.1 DRAM控制器調(diào)度算法

      目前已有一些研究[14-16]通過(guò)優(yōu)化DRAM控制器調(diào)度算法來(lái)解決多核平臺(tái)上Bank行緩沖區(qū)沖突問(wèn)題,從而實(shí)現(xiàn)提高系統(tǒng)吞吐量或公平性的目的。雖然DRAM控制器調(diào)度算法優(yōu)化方案可以提高系統(tǒng)吞吐量或公平性,但是這些方案有以下三個(gè)缺點(diǎn):第一,涉及到內(nèi)存控制器硬件的修改;第二,這些方案的有效性受到諸多因素的限制,例如調(diào)度算法緩沖區(qū)的大小等等;第三,當(dāng)運(yùn)行在不同Core上的多個(gè)進(jìn)程共享DRAM時(shí),優(yōu)化后的DRAM控制器調(diào)度算法可能會(huì)導(dǎo)致饑餓現(xiàn)象的產(chǎn)生[11]。因此,利用優(yōu)化DRAM控制器調(diào)度算法來(lái)解決多核平臺(tái)上DRAM Bank行緩沖區(qū)沖突問(wèn)題,所能達(dá)到的效果有限。

      1.2 DRAM Bank分區(qū)技術(shù)

      DRAM Bank分區(qū)技術(shù)是通過(guò)軟件的方式緩解多核平臺(tái)上Bank行緩沖區(qū)沖突問(wèn)題的機(jī)制?;贒RAM Bank分區(qū)的方案[5-13]主要分為靜態(tài)分區(qū)和動(dòng)態(tài)分區(qū)兩類。其中,Bank靜態(tài)分區(qū)技術(shù)對(duì)DRAM中的Bank進(jìn)行靜態(tài)分區(qū),并將指定的Bank分配給指定的進(jìn)程,以減少Bank的行緩沖區(qū)沖突,從而提高系統(tǒng)性能。Bank動(dòng)態(tài)分區(qū)技術(shù)首先會(huì)根據(jù)進(jìn)程對(duì)Bank數(shù)量的需求,動(dòng)態(tài)地對(duì)DRAM中的Bank進(jìn)行分區(qū),然后在進(jìn)程運(yùn)行的不同階段,為其分配數(shù)量不等的Bank。

      1.3 共享庫(kù)隔離機(jī)制

      目前已有一些為共享庫(kù)提供隔離機(jī)制的解決方案,這些解決方案通常是將共享庫(kù)獨(dú)立地運(yùn)行在隔離環(huán)境中,例如不同的上下文環(huán)境[17]或獨(dú)立的虛擬機(jī)[18-19]中。在這些解決方案中,調(diào)用共享庫(kù)中函數(shù)需要進(jìn)行上下文環(huán)境或虛擬機(jī)的切換,因此,在函數(shù)調(diào)用很頻繁的情況下,這會(huì)造成很大的系統(tǒng)開(kāi)銷。除此之外,Kim等人提出了一種稱為選擇性共享的策略[20]。該策略首先為每個(gè)共享庫(kù)創(chuàng)建n+2個(gè)副本,其中n表示系統(tǒng)中Core的數(shù)量;然后將n個(gè)副本分別由運(yùn)行在n個(gè)Core上的高優(yōu)先級(jí)實(shí)時(shí)任務(wù)共享訪問(wèn);其次,將另外2個(gè)副本分別由運(yùn)行在所有Core上的低優(yōu)先級(jí)實(shí)時(shí)任務(wù)和非實(shí)時(shí)任務(wù)共享訪問(wèn)。由于低優(yōu)先級(jí)實(shí)時(shí)任務(wù)和非實(shí)時(shí)任務(wù)分別共享的2個(gè)共享庫(kù)仍然可以導(dǎo)致Bank行緩沖區(qū)沖突問(wèn)題,因此,該策略沒(méi)有徹底地解決共享庫(kù)引發(fā)的Bank行緩沖區(qū)沖突問(wèn)題。

      2 設(shè)計(jì)與實(shí)現(xiàn)

      ISMB的核心設(shè)計(jì)思想是:首先,為每個(gè)Core創(chuàng)建一個(gè)共享庫(kù)的副本;然后,利用Bank分區(qū)技術(shù)使運(yùn)行在某Core上的所有進(jìn)程只能訪問(wèn)該Core對(duì)應(yīng)的共享庫(kù)副本。

      如圖1所示,假設(shè)為Core 0和Core 1分別分配的是Bank 0和Bank 1,則運(yùn)行在Core 0上的進(jìn)程只能訪問(wèn)Bank 0中的進(jìn)程的私有內(nèi)存和Core 0的共享庫(kù)副本的共享內(nèi)存。因此,ISMB可以同時(shí)消除進(jìn)程訪問(wèn)私有內(nèi)存和共享庫(kù)導(dǎo)致的Bank行緩沖區(qū)沖突問(wèn)題,從而提升系統(tǒng)的整體性能。

      圖1 ISMB的共享庫(kù)隔離示意圖

      2.1 為Core分配DRAM Bank

      在Linux內(nèi)核中,ISMB為系統(tǒng)中所有的Core維護(hù)了一個(gè)空閑物理頁(yè)面鏈表數(shù)組pcpu_list,數(shù)組中鏈表的數(shù)量等于系統(tǒng)中Core的數(shù)量。除此之外,ISMB將系統(tǒng)中的所有DRAM Bank進(jìn)行分區(qū),并為每個(gè)Core分配了一組固定的Bank,因此,pcpu_list數(shù)組中每個(gè)鏈表存放的空閑物理頁(yè)面位于該鏈表對(duì)應(yīng)的Core的Bank中。例如,為Core 0分配的是Bank 0,則pcpu_list[0]鏈表中存放的空閑物理頁(yè)面都位于Bank 0中。當(dāng)運(yùn)行在Core 0上的進(jìn)程在運(yùn)行過(guò)程中發(fā)生缺頁(yè)異常,進(jìn)入異常處理程序后,ISMB通過(guò)修改Linux內(nèi)核函數(shù)_rmqueue,實(shí)現(xiàn)了直接從pcpu_list[0]鏈表而不是Linux伙伴系統(tǒng)中為進(jìn)程申請(qǐng)空閑物理頁(yè)面的操作。

      圖2是從pcpu_list[0]鏈表中為運(yùn)行在Core 0上的進(jìn)程申請(qǐng)空閑物理頁(yè)面的流程。如果pcpu_list[0]鏈表不為空,那么ISMB直接從pcpu_list[0]鏈表中取出第一個(gè)空閑物理頁(yè)面后,返回該物理頁(yè)面。否則,ISMB首先從Linux伙伴系統(tǒng)中申請(qǐng)一個(gè)空閑物理頁(yè)面,然后將其插入pcpu_list[0]鏈表。最后,從pcpu_list[0]鏈表中取出空閑物理頁(yè)面后,返回該物理頁(yè)面。在這個(gè)過(guò)程中,若從Linux伙伴系統(tǒng)申請(qǐng)的空閑物理頁(yè)面不位于Bank 0中,則把這些物理頁(yè)面分別插入適當(dāng)?shù)膒cpu_list鏈表,從而可以減少在將來(lái)申請(qǐng)空閑物理頁(yè)面的時(shí)間開(kāi)銷。

      圖2 從pcpu_list[0]鏈表中申請(qǐng)空閑物理頁(yè)面的流程

      2.2 DRAM Bank映射

      為了把從Linux伙伴系統(tǒng)中申請(qǐng)的空閑頁(yè)面插入適當(dāng)?shù)膒cpu_list鏈表,需要知道將物理地址轉(zhuǎn)換為DRAM地址的映射信息,從而確定一個(gè)物理頁(yè)面位于哪個(gè)DRAM Bank。對(duì)于沒(méi)有公開(kāi)地址映射信息的體系結(jié)構(gòu)(例如Intel),可以利用逆向技術(shù)獲取這些地址映射信息[21-27]。目前已有的逆向技術(shù)主要分為兩類:基于軟件的方法和基于硬件的方法。

      由于文中的實(shí)驗(yàn)平臺(tái)基于AMD架構(gòu),并且該架構(gòu)在其架構(gòu)手冊(cè)中明確地公開(kāi)了DRAM地址映射信息,因此,通過(guò)查詢AMD架構(gòu)手冊(cè)可知:物理地址中的Rank和Bank位的信息分別存放在“F2x[1,0][6C:60] DRAM CS Mask Registers”和“F2x[1,0]80 DRAM Bank Address Mapping Register”兩個(gè)寄存器中[28-29]。如表2所示,文中使用的實(shí)驗(yàn)平臺(tái)有1個(gè)通道,每個(gè)通道有2個(gè)DIMM,每個(gè)DIMM有2個(gè)Rank,每個(gè)Rank有8個(gè)Bank,因此,系統(tǒng)中總共有32個(gè)Bank,即在物理地址中,總共有5個(gè)比特位用來(lái)表示Bank的編號(hào)。

      圖3顯示了文中使用的實(shí)驗(yàn)平臺(tái)的DRAM Bank映射信息。由圖可知,比特位16~17用于表示Rank的編號(hào),比特位13~15用于表示Bank的編號(hào)。綜上,ISMB使用物理頁(yè)面的起始地址中的比特位13~17,來(lái)確定物理頁(yè)面所在的Bank的編號(hào)。例如,一個(gè)物理頁(yè)面的起始地址中的比特位13~17全為0,表示該物理頁(yè)面位于Bank 0中。

      圖3 文中實(shí)驗(yàn)平臺(tái)的DRAM Bank映射信息

      2.3 共享庫(kù)隔離

      在已經(jīng)對(duì)DRAM Bank進(jìn)行分區(qū),并將指定的Bank分配給指定Core的情況下,為了使進(jìn)程只能訪問(wèn)屬于運(yùn)行該進(jìn)程的Core的共享庫(kù)的副本,ISMB需要將屬于某個(gè)Core的共享庫(kù)的副本加載到位于該Core的Bank的物理頁(yè)面。

      ISMB使用了一種簡(jiǎn)單有效的方法[20]對(duì)共享庫(kù)進(jìn)行Core間的隔離。首先,在磁盤(pán)上為每個(gè)Core創(chuàng)建一個(gè)用于存放共享庫(kù)副本的目錄,并將共享庫(kù)分別復(fù)制到每個(gè)目錄中。然后,在運(yùn)行綁定在指定Core上的應(yīng)用程序前,將該Core對(duì)應(yīng)的存放共享庫(kù)副本的目錄添加到環(huán)境變量LD_LIBRARY_PATH。故該應(yīng)用程序在運(yùn)行過(guò)程中,只能使用該Core對(duì)應(yīng)目錄中的共享庫(kù)副本。因此,在已經(jīng)將指定Bank分配給指定Core的情況下,屬于某Core的共享庫(kù)副本只能被加載到位于該Core的Bank的物理頁(yè)面,并被該Core上運(yùn)行的所有進(jìn)程共享。

      3 實(shí)驗(yàn)與評(píng)估

      3.1 實(shí)驗(yàn)環(huán)境

      文中使用的實(shí)驗(yàn)平臺(tái)的參數(shù)如表2所示,如2.2節(jié)所述,實(shí)驗(yàn)平臺(tái)上總共有32個(gè)Bank。由于物理內(nèi)存的總大小為16 GB,因此,每個(gè)Bank的大小為512 MB。在所有實(shí)驗(yàn)中,為每個(gè)Core靜態(tài)地分配8個(gè)Bank。操作系統(tǒng)使用Ubuntu 18.04,其中Linux內(nèi)核版本為5.3。此外,在所有實(shí)驗(yàn)過(guò)程中,通過(guò)禁用不相關(guān)的服務(wù)(桌面服務(wù)和網(wǎng)絡(luò)服務(wù))以提高實(shí)驗(yàn)精度。

      表2 實(shí)驗(yàn)平臺(tái)參數(shù)

      在文中實(shí)驗(yàn)中,使用SPEC CPU2006[30]作為實(shí)驗(yàn)基準(zhǔn)測(cè)試程序,表3對(duì)每個(gè)SPEC CPU2006基準(zhǔn)測(cè)試程序使用的共享庫(kù)進(jìn)行了全面的統(tǒng)計(jì)。使用減速率(slowdown ratio)作為評(píng)估ISMB實(shí)現(xiàn)的性能隔離程度的指標(biāo)[12],其定義如下:

      表3 SPEC CPU2006基準(zhǔn)測(cè)試程序的共享庫(kù)使用統(tǒng)計(jì)信息

      其中,IPCalone表示在無(wú)負(fù)載的情況下,SPEC CPU2006基準(zhǔn)測(cè)試程序運(yùn)行時(shí),每個(gè)時(shí)鐘周期執(zhí)行的指令條數(shù)(Instructions Per Clock,IPC);IPCshared表示在有負(fù)載的情況下的IPC。減速率的值越小,說(shuō)明隔離性能越好。

      3.2 高負(fù)載的隔離性評(píng)估

      實(shí)驗(yàn)中將SPEC CPU2006基準(zhǔn)測(cè)試程序中的訪存密集型(Memory intensive)程序470.lbm作為負(fù)載[12],來(lái)評(píng)估ISMB實(shí)現(xiàn)的性能隔離程度。實(shí)驗(yàn)過(guò)程如下:首先,在沒(méi)有負(fù)載的情況下,在Core 0上運(yùn)行所有SPEC CPU2006基準(zhǔn)測(cè)試程序,并獲取它們的IPC作為IPCalone;然后,在Core 1~3上分別運(yùn)行三個(gè)470.lbm基準(zhǔn)測(cè)試程序作為負(fù)載,在Core 0上運(yùn)行所有SPEC CPU2006基準(zhǔn)測(cè)試程序,并獲取它們的IPC作為IPCshared;最后,利用公式(1)計(jì)算出SPEC CPU2006基準(zhǔn)測(cè)試程序的減速率。

      圖4顯示了將470.lbm作為負(fù)載的情況下,所有SPEC CPU2006基準(zhǔn)測(cè)試程序的規(guī)范化減速率。從圖中可以看出,在使用ISMB時(shí),大部分基準(zhǔn)測(cè)試程序的性能較好,除了如471.omnetpp之類的少數(shù)基準(zhǔn)測(cè)試程序,這些基準(zhǔn)測(cè)試程序的性能下降的原因主要是Bank數(shù)量減少導(dǎo)致的性能下降抵消了Bank分區(qū)技術(shù)帶來(lái)的性能提升。實(shí)驗(yàn)結(jié)果表明,在使用ISMB的情況下,SPEC CPU2006基準(zhǔn)測(cè)試程序的減速率平均降低了3.9%,最大降低了26.3%(470.lbm基準(zhǔn)測(cè)試程序,規(guī)范化減速率為0.737)。

      圖4 以470.lbm作為負(fù)載的SPEC CPU2006基準(zhǔn)測(cè)試程序的規(guī)范化減速率

      3.3 混合負(fù)載的隔離性評(píng)估

      為了模擬更加真實(shí)的運(yùn)行環(huán)境,如表4所示,從所有SPEC CPU2006基準(zhǔn)測(cè)試程序中隨機(jī)選擇10組基準(zhǔn)測(cè)試程序,每個(gè)測(cè)試組包含4個(gè)基準(zhǔn)測(cè)試程序。每個(gè)測(cè)試組的實(shí)驗(yàn)過(guò)程如下:首先,將測(cè)試組中的4個(gè)基準(zhǔn)測(cè)試程序分別同時(shí)運(yùn)行在4個(gè)Core上,并獲取各自的IPCshared;然后,結(jié)合上一小節(jié)實(shí)驗(yàn)中獲取的IPCalone,計(jì)算出每個(gè)SPEC CPU2006基準(zhǔn)測(cè)試程序的減速率;最后,計(jì)算出這4個(gè)基準(zhǔn)測(cè)試程序的平均減速率,作為測(cè)試組的減速率。

      表4 SPEC CPU2006基準(zhǔn)測(cè)試程序組

      圖5顯示了10個(gè)測(cè)試組在使用ISMB的情況下,每個(gè)測(cè)試組的規(guī)范化減速率。實(shí)驗(yàn)結(jié)果表明,在混合負(fù)載的情況下,ISMB的使用使SPEC CPU2006基準(zhǔn)測(cè)試程序的減速率平均降低了6%,最大降低了15.7%(Mix8測(cè)試組,規(guī)范化減速率為0.843)。因此,與未使用ISMB相比,ISMB可以有效地提升系統(tǒng)的隔離性能。

      圖5 SPEC CPU2006基準(zhǔn)測(cè)試程序組的規(guī)范化減速率

      4 結(jié)束語(yǔ)

      該文提出的在多核系統(tǒng)中利用DRAM Bank分區(qū)技術(shù)實(shí)現(xiàn)共享庫(kù)隔離的方案(ISMB)消除了共享庫(kù)導(dǎo)致的Bank行緩沖區(qū)沖突問(wèn)題,從而有效地提升了系統(tǒng)的整體性能。對(duì)比實(shí)驗(yàn)結(jié)果表明,與未使用ISMB的Linux相比,ISMB能夠有效地提高系統(tǒng)隔離性能。特別地,在高負(fù)載的情況下,SPEC CPU2006基準(zhǔn)測(cè)試程序的減速率最大降低了26.3%,在混合負(fù)載的情況下減速率最大降低了15.7%。提出的ISMB機(jī)制是基于靜態(tài)Bank分區(qū)技術(shù)實(shí)現(xiàn)的,在未來(lái)的研究工作中,計(jì)劃采用動(dòng)態(tài)Bank分區(qū)技術(shù)來(lái)實(shí)現(xiàn)ISMB機(jī)制。從而在保證ISMB隔離性的同時(shí),進(jìn)一步提升系統(tǒng)的整體性能。

      猜你喜歡
      測(cè)試程序鏈表副本
      基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
      面向流媒體基于蟻群的副本選擇算法①
      跟麥咭學(xué)編程
      基于Castle型機(jī)械手的三溫量產(chǎn)測(cè)試平臺(tái)實(shí)現(xiàn)
      基于鏈表多分支路徑樹(shù)的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
      手機(jī)APP交互界面人因適合性測(cè)試程序的設(shè)計(jì)與實(shí)現(xiàn)
      中心主導(dǎo)制訂的《VHF/UHF頻率范圍內(nèi)測(cè)向系統(tǒng)測(cè)向靈敏度的測(cè)試程序》等兩項(xiàng)國(guó)際標(biāo)準(zhǔn)在ITU官網(wǎng)正式發(fā)布
      副本放置中的更新策略及算法*
      電氣自動(dòng)化控制設(shè)備可靠性測(cè)試探討
      樹(shù)形網(wǎng)絡(luò)中的副本更新策略及算法*
      六枝特区| 原阳县| 罗源县| 仁化县| 松原市| 齐河县| 裕民县| 阿克陶县| 北票市| 曲松县| 安图县| 密山市| 大丰市| 大田县| 逊克县| 平潭县| 台南县| 巴楚县| 大荔县| 温宿县| 丁青县| 全南县| 威远县| 同心县| 陆良县| 剑阁县| 固原市| 玛纳斯县| 巫山县| 云浮市| 瓮安县| 长葛市| 兰溪市| 曲水县| 涟水县| 永登县| 通山县| 固镇县| 岗巴县| 凤台县| 宁强县|