TW202129508A - 完成物件輸入輸出的方法及系統、以及非暫時性電腦可讀取媒體 - Google Patents

完成物件輸入輸出的方法及系統、以及非暫時性電腦可讀取媒體 Download PDF

Info

Publication number
TW202129508A
TW202129508A TW109136584A TW109136584A TW202129508A TW 202129508 A TW202129508 A TW 202129508A TW 109136584 A TW109136584 A TW 109136584A TW 109136584 A TW109136584 A TW 109136584A TW 202129508 A TW202129508 A TW 202129508A
Authority
TW
Taiwan
Prior art keywords
buffer
group
objects
output
input
Prior art date
Application number
TW109136584A
Other languages
English (en)
Other versions
TWI829974B (zh
Inventor
堅 梁
羅納德 李
達斯 貝尼松 阿魯
拉姆拉杰 派迪恩
Original Assignee
南韓商三星電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/815,974 external-priority patent/US11243694B2/en
Application filed by 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW202129508A publication Critical patent/TW202129508A/zh
Application granted granted Critical
Publication of TWI829974B publication Critical patent/TWI829974B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

提供一種完成物件IO的方法,所述方法包括:接收目標儲存裝置的第一組物件IO;將第一組物件IO調度至第一區的第一緩衝器,所述第一緩衝器被配置成用作第一日誌緩衝器;序連第一組物件IO以在第一緩衝器中形成第一物件群組;將第一物件群組記錄至日誌裝置;將第一緩衝器的功能自第一日誌緩衝器修改為第一清除緩衝器;以及將第一物件群組傳送至目標儲存裝置。

Description

群組化鍵值物件輸入輸出以改善鍵值儲存裝置輸入輸出表現
本揭露的實施例的一或多個態樣大體而言是有關於最佳化鍵值儲存裝置的輸入/輸出(「input/output,IO」)效能。
近年來,鍵值固態驅動機(「key-value solid state drive,KV-SSD」)已用於越來越多的各種應用中。增強KV-SSD的IO效能以增強通量(throughput)及減少潛時(latency)可能是有益的。
然而,當KV-SSD遇到大物件IO與小物件IO二者的混合體時,IO效能可能會降低,此乃因KV-SSD處理可以相同的方式應對大物件IO與小物件IO二者。
因此,KV-SSD處理可能有利於大物件IO,此導致小物件IO具有更高的潛時。作為另一選擇,KV-SSD處理可能有利於小物件IO,此導致大物件IO具有較低的通量。
本揭露的實施例的各態樣是有關於一種自適應地適應小物件IO與大物件IO二者以增強IO效能的系統及方法。
根據本揭露的一個實施例,提供一種完成物件IO的方法,所述方法包括:接收目標儲存裝置的第一組物件IO;將所述第一組物件IO調度至第一區的第一緩衝器,所述第一緩衝器被配置成用作第一日誌緩衝器;序連所述第一組物件IO以在所述第一緩衝器中形成第一物件群組;將所述第一物件群組記錄至日誌裝置;將所述第一緩衝器的功能自所述第一日誌緩衝器修改為第一清除緩衝器;以及將所述第一物件群組傳送至所述目標儲存裝置。
所述方法可更包括:接收所述目標儲存裝置的第二組物件IO;將所述第二組物件IO調度至所述第一區的第二緩衝器,所述第二緩衝器被配置成因應於所述第一緩衝器用作所述第一清除緩衝器而用作第二日誌緩衝器;序連所述第二組物件IO以在所述第二緩衝器中形成第二物件群組;將所述第二物件群組記錄至所述日誌裝置;將所述第二緩衝器的功能自所述第二日誌緩衝器修改為第二清除緩衝器;以及將所述第二物件群組傳送至所述目標儲存裝置。
所述方法可更包括:接收所述目標儲存裝置的第三組物件IO;將所述第三組物件IO調度至第二區的第三緩衝器,所述第三緩衝器被配置成用作第三日誌緩衝器;序連所述第三組物件IO以在所述第三緩衝器中形成第三物件群組;將所述第三物件群組記錄至所述日誌裝置;將所述第三緩衝器的功能自所述第三日誌緩衝器修改為第三清除緩衝器;以及將所述第三物件群組傳送至所述目標儲存裝置,其中所述第三組物件IO包括高優先權資料,且其中所述第一組物件IO或所述第二組物件IO包括低優先權資料。
所述方法可更包括調整超時窗口(timeout window)、欲保持於所述第一日誌緩衝器中的所述第一組物件IO的最大數目或者所述第一物件群組的臨限大小,所述超時窗口對應於在所述第一日誌緩衝器中儲存所述第一組物件IO中的一者的最大時間量,其中所述第一物件群組基於所述超時窗口、欲保持於第一日誌緩衝器中的物件IO的所述最大數目或者所述第一物件群組的所述臨限大小而被記錄至所述日誌裝置。
所述調整所述超時窗口、所述第一組物件IO的所述最大數目或者所述臨限大小可根據回饋演算法(feedback algorithm)來實行。
所述方法可更包括使用現場可程式化閘陣列(field-programmable gate array,FPGA)處理儲存於所述第一緩衝器中的資料。
所述方法可更包括:接收大物件IO;自所述第一組物件IO分離所述大物件IO;以及將所述大物件IO直接傳遞至所述目標儲存裝置。
所述將所述第一物件群組傳送至所述目標儲存裝置可包括:搜尋包括鏈接於一起的髒物件IO(dirty object IO)的鏈接列表(linked list);以及將所述髒物件IO傳送至所述目標儲存裝置,所述髒物件IO屬於所述第一物件群組。
根據本揭露的另一實施例,提供一種在用於完成物件IO的系統上實施的非暫時性電腦可讀取媒體,所述非暫時性電腦可讀取媒體具有電腦碼,所述電腦碼當在處理器上執行時實施一種完成物件IO的方法,所述方法包括:接收目標儲存裝置的第一組物件IO;將所述第一組物件IO調度至第一區的第一緩衝器,所述第一緩衝器被配置成用作第一日誌緩衝器;序連所述第一組物件IO以在所述第一緩衝器中形成第一物件群組;將所述第一物件群組記錄至日誌裝置;將所述第一緩衝器的功能自所述第一日誌緩衝器修改為第一清除緩衝器;以及將所述第一物件群組傳送至所述目標儲存裝置。
所述電腦碼當由所述處理器執行時可進一步藉由以下方式實施所述完成物件IO的方法:接收所述目標儲存裝置的第二組物件IO;將所述第二組物件IO調度至所述第一區的第二緩衝器,所述第二緩衝器被配置成當所述第一緩衝器用作所述第一清除緩衝器時用作第二日誌緩衝器;序連所述第二組物件IO以在所述第二緩衝器中形成第二物件群組;將所述第二物件群組記錄至所述日誌裝置;將所述第二緩衝器的功能自所述第二日誌緩衝器修改為第二清除緩衝器;以及將所述第二物件群組傳送至所述目標儲存裝置。
所述電腦碼當由所述處理器執行時可進一步藉由以下方式實施所述完成IO的方法:接收所述目標儲存裝置的第三組物件IO;將所述第三組物件IO調度至第二區的第三緩衝器,所述第三緩衝器被配置成用作第三日誌緩衝器;序連所述第三組物件IO以在所述第三緩衝器中形成第三物件群組;將所述第三物件群組記錄至所述日誌裝置;以及將所述第三緩衝器的功能自所述第三日誌緩衝器修改為第三清除緩衝器;以及將所述第三物件群組傳送至所述目標儲存裝置,其中所述第三組物件IO包括高優先權資料,且其中所述第一組物件IO或所述第二組物件IO包括低優先權資料。
所述電腦碼當由所述處理器執行時可進一步藉由以下方式實施所述完成IO的方法:調整超時窗口、欲保持於所述第一日誌緩衝器中的所述第一組物件IO的最大數目或者所述第一物件群組的臨限大小,所述超時窗口對應於在所述第一日誌緩衝器中儲存所述第一組物件IO中的一者的最大時間量,其中所述第一物件群組基於所述超時窗口、欲保持於第一日誌緩衝器中的物件IO的所述最大數目或者所述第一物件群組的所述臨限大小而被記錄至所述日誌裝置。
所述調整所述超時窗口、所述第一組物件IO的所述最大數目或者所述臨限大小可根據回饋演算法來實行。
所述電腦碼當由所述處理器執行時可進一步藉由使用現場可程式化閘陣列處理儲存於所述第一緩衝器中的資料來實施所述完成IO的方法。
所述電腦碼當由所述處理器執行時可進一步藉由以下方式實施所述完成IO的方法:接收大物件IO;自所述第一組物件IO分離所述大物件IO;以及將所述大物件IO直接傳遞至所述目標儲存裝置。
所述將所述第一物件群組傳送至所述目標儲存裝置可包括:搜尋包括鏈接於一起的髒物件IO的鏈接列表;以及將所述髒物件IO傳送至所述目標儲存裝置,所述髒物件IO屬於所述第一物件群組。
根據本揭露的又一實施例,提供一種用於完成物件IO的系統,所述系統包括日誌裝置、目標儲存裝置及記憶體快取,其中所述系統被配置成:接收所述目標儲存裝置的第一組物件IO;將所述第一組物件IO調度至第一區的第一緩衝器,所述第一緩衝器被配置成用作第一日誌緩衝器;序連所述第一組物件IO以在所述第一緩衝器中形成第一物件群組;將所述第一物件群組記錄至所述日誌裝置;將所述第一緩衝器的功能自所述第一日誌緩衝器修改為第一清除緩衝器;以及將所述第一物件群組傳送至所述目標儲存裝置。
所述系統可被進一步配置成:接收所述目標儲存裝置的第二組物件IO;將所述第二組物件IO調度至所述第一區的第二緩衝器,所述第二緩衝器被配置成因應於所述第一緩衝器用作所述第一清除緩衝器而用作第二日誌緩衝器;序連所述第二組物件IO以在所述第二緩衝器中形成第二物件群組;將所述第二物件群組記錄至所述日誌裝置;將所述第二緩衝器的功能自所述第二日誌緩衝器修改為第二清除緩衝器;以及將所述第二物件群組清除至所述目標儲存裝置。
所述系統可被進一步配置成:接收所述目標儲存裝置的第三組物件IO;將所述第三組物件IO調度至第二區的第三緩衝器,所述第三緩衝器被配置成用作第三日誌緩衝器;序連所述第三組物件IO以在所述第三緩衝器中形成第三物件群組;將所述第三物件群組記錄至所述日誌裝置;將所述第三緩衝器的功能自所述第三日誌緩衝器修改為第三清除緩衝器;以及將所述第三物件群組傳送至所述目標儲存裝置,其中所述第三組物件IO包括高優先權資料,且其中所述第一組物件IO或所述第二組物件IO包括低優先權資料。
所述系統可被進一步配置成:調整超時窗口、欲保持於所述第一日誌緩衝器中的所述第一組物件IO的最大數目或者所述第一物件群組的臨限大小,所述超時窗口對應於在所述第一日誌緩衝器中儲存所述第一組物件IO中的一者的最大時間量,其中所述第一物件群組基於所述超時窗口、欲保持於第一日誌緩衝器中的物件IO的所述最大數目或者所述第一物件群組的所述臨限大小而被記錄至所述日誌裝置。
因此,本揭露的實施例的系統能夠藉由自適應地適應小物件IO與大物件IO二者來改善IO效能,以藉此增加大物件IO的通量,同時降低小物件IO的平均潛時。
藉由參照對實施例的詳細說明以及附圖,可更容易地理解本發明概念的特徵及達成所述特徵的方法。在下文中,將參照附圖更詳細地闡述實施例。然而,所闡述的實施例可以各種不同的形式實施,且不應被解釋為僅限於本文中所示的實施例。相反,提供該些實施例作為實例,以使得此揭露內容將透徹及完整,且將向熟習此項技術者充分傳達本發明概念的各態樣及特徵。因此,可不闡述對於此項技術中具有通常知識者完全理解本發明概念的各態樣及特徵而言不必要的製程、元件及技術。
除非另有指明,否則在所有隨附圖式及書面說明通篇中,相同的參考編號表示相同的元件,且因此將不再對其予以贅述。此外,可能不示出與對實施例的說明不相關的部件,以使說明清楚。在圖式中,為清晰起見,元件、層及區域的相對大小可能被誇大。
在詳細說明中,出於闡釋的目的,闡述了諸多具體細節以提供對各種實施例的透徹理解。然而,顯而易見的是,可不使用該些具體細節或者利用一或多種等效佈置來實踐各種實施例。在其他情形中,眾所習知的結構及裝置以方塊圖形式示出,以避免不必要地模糊各種實施例。
應理解,儘管本文中可能使用用語「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、區域、層及/或區段,然而該些元件、組件、區域、層及/或區段不應受該些用語的限制。該些用語用於區分各個元件、組件、區域、層或區段。因此,在不背離本揭露的精神及範圍的情況下,以下所述的第一元件、組件、區域、層或區段可被稱為第二元件、組件、區域、層或區段。
本文中所使用的術語僅用於闡述特定的實施例,而不旨在限制本揭露。除非上下文另外清楚地指示,否則本文中所使用的單數形式「一(a/an)」旨在亦包括複數形式。應進一步理解,當在本說明書中使用時,用語「包括(comprises/comprising)」、「具有(have/having)」及「包含(includes/including)」指明所陳述的特徵、整數、步驟、操作、元件及/或組件的存在,但是不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其組合的存在或添加。本文中所使用的用語「及/或」包括相關聯列出項中一或多個項的任意及所有組合。
本文中所使用的用語「實質上(substantially)」、「約(about)」、「近似(approximately)」及相似用語被用作近似用語,而並非用作程度用語,且旨在慮及此項技術中具有通常知識者將認識到的量測值或計算值的固有偏差。本文中所使用的「約」或「近似」包括所闡述值且意指處於由此項技術中具有通常知識者確定的特定值的可接受偏差範圍內,此考慮到所討論的量測及與特定量的量測相關聯的誤差(即,量測系統的限制)。
當某一實施例可被以不同的方式實施時,可與所闡述的次序不同地實行特定製程次序。舉例而言,兩個連續闡述的製程可實質上同時實行,或者以與所闡述的次序相反的次序實行。
根據本文中所闡述的本揭露的實施例的電子或電裝置及/或任何其他相關裝置或組件可利用任何合適的硬體、韌體(例如,特殊應用積體電路)、軟體或者軟體、韌體及硬體的組合來實施。舉例而言,該些裝置的各種組件可形成於一個積體電路(integrated circuit,IC)晶片上或單獨的IC晶片上。此外,該些裝置的各種組件可實施於撓性印刷電路膜、載帶封裝(tape carrier package,TCP)、印刷電路板(printed circuit board,PCB)上,或者形成於一個基板上。
此外,該些裝置的各種組件可為在一或多個計算裝置中在一或多個處理器上運行、執行電腦程式指令並與用於實行本文中所述的各種功能性的其他系統組件交互作用的進程或執行緒(thread)。電腦程式指令儲存於記憶體中,所述記憶體可使用例如(舉例而言)隨機存取記憶體(random access memory,RAM)等標準記憶體裝置在計算裝置中實施。電腦程式指令亦可儲存於例如(舉例而言)光碟唯讀記憶體(compact disc-read only memory,CD-ROM)、快閃驅動機等其他非暫時性電腦可讀取媒體中。此外,熟習此項技術者應認識到,在不背離本揭露的實施例的精神及範圍的情況下,各種計算裝置的功能性可被組合或整合至單一計算裝置中,或者特定計算裝置的功能性可分佈於一或多個其他計算裝置中。
本文中所使用的用語「第一緩衝器(first buffer)」、「第二緩衝器(second buffer)」、「第三緩衝器(third buffer)」等用於闡述可提供特定功能(例如,日誌緩衝器功能或清除緩衝器功能)且可依據下文所更詳細闡述的某些條件而改變或被修改的緩衝器系列。因此,在一或多個實施例中,用語「第一緩衝器」、「第二緩衝器」、「第三緩衝器」等可指代單一緩衝器的不同部分,而在一或多個其他實施例中,用語「第一緩衝器」、「第二緩衝器」、「第三緩衝器」等可指代多於一個緩衝器。
除非另有定義,否則本文中所使用的所有用語(包括技術及科學用語)具有與本發明概念所屬技術中具有通常知識者所通常理解的含義相同的含義。應進一步理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術及/或本說明書的上下文中的含義一致的含義,且除非本文中明確如此定義,否則不應將其解釋為具有理想化或過於正式的意義。
圖1是繪示根據本揭露一或多個實施例的網路的方塊圖。
參照圖1,根據本揭露一或多個實施例的網路100遵循基於組構的快速非揮發性記憶體(Non-Volatile Memory Express over Fabrics,NVMeoF)架構。在一或多個實施例中,網路100包括主機102、網路交換機104(例如,NVMeoF交換機)、目標106(例如,NVMe目標)及目標儲存裝置108(例如,基於NVMe的鍵值SSD或KV-SSD)。
參照圖1,一或多個主機102可根據資料處理應用或軟體產生一或多個IO請求。IO請求可包括對於基於物件的儲存(例如,對於鍵值儲存)的例如「放(put)」、「取(get)」、「刪除(delete)」等IO操作。IO請求可包括不同的    IO大小(例如,小物件IO及/或大物件IO)。所述一或多個主機102可將一或多個IO請求轉送或傳輸至網路交換機104,例如在電腦網路上將裝置連接於一起的多埠網路橋接器(multi-port network bridge)。網路交換機104可使用硬體位址來處理及轉送資料。因此,網路交換機104可將所述一或多個IO請求傳輸至一或多個目標中合適的目標106。
所述一或多個目標106中的目標106可包括調度器110、記憶體快取(例如,動態隨機存取記憶體(dynamic random access memory,DRAM)快取)及日誌裝置117(例如,低潛時日誌裝置)。調度器110可為用於自網路交換機104接收一或多個IO並將所述一或多個IO調度至記憶體快取的部分的KV IO調度器。所述記憶體快取可包括可由記憶體快取中的分區(partition)形成的用於接收及處置來自調度器110的小物件IO的一或多個區116。
區116可包括接收自調度器110調度的所述一或多個小物件IO的日誌緩衝器112。舉例而言,至少兩個區可各自包括接收自調度器110調度的一或多個相應小物件IO的日誌緩衝器。調度器110可將一或多個IO(稱為集合)調度至多個區中的對應日誌緩衝器。
日誌緩衝器112可將自調度器110接收的物件IO記錄或儲存於日誌裝置117中。作為實例,日誌裝置117可為非揮發性雙列直插式記憶體模組(non-volatile dual in-line memory module,NVDIMM)或者用於損壞恢復(crash recovery)目的的低潛時SSD。
日誌裝置117可在持續記憶體(persistent memory)中維持日誌,在系統損壞之後可檢查所述日誌以判斷相應的IO是否完成。若一或多個IO未完成,則所述系統可基於所述日誌來確定哪些附加步驟(若有)可合適於完成任何未完成的IO。日誌裝置117可適合地使用較目標儲存裝置108少的儲存容量(例如,以節省成本)。
區116可包括清除緩衝器114,清除緩衝器114將物件IO清除(例如,將清除緩衝器的內容寫入或傳送至例如目標儲存裝置等目的地)至目標儲存裝置108(例如,清除至KV-SSD)來完成IO。目標儲存裝置108的其他實施例可包括能夠儲存物件的任何硬體及/或軟體系統。
依據自網路交換機104接收的物件IO的大小,目標106可確定物件IO的路徑。舉例而言,目標106可包括第一路徑(例如,正常路徑)118,由目標106接收的一或多個大物件IO可經由第一路徑118直接傳遞至目標儲存裝置108,而不被日誌緩衝器112接收,進而使得物件IO可儲存於日誌裝置117中。大物件IO可為處於或高於臨限大小的物件IO,其中在一或多個實施例中,臨限大小可為可調整的。
目標106亦可包括第二路徑(例如,群組化路徑)120,一或多個小物件IO經由第二路徑120被調度器110接收。小物件IO可為低於臨限大小的物件IO。在第二路徑120上,調度器110可將所述一或多個小物件IO調度或傳輸至對應的區116(例如,調度或傳輸至區116的日誌緩衝器112)。依據根據本揭露一或多個實施例的群組化架式,第二路徑120上的所述一或多個小物件IO可在日誌緩衝器112中序連以形成物件群組115或剪輯(clip)。
因此,如上所述,物件IO可藉由可調整的臨限大小來篩選或分離,且根據所揭露的群組化架式,大物件IO可遵循第一路徑118,而小物件IO遵循第二路徑120。
儘管目標106在本文中被闡述為對應於物件IO的路徑,然而在一或多個其他實施例中,其他合適的模組或裝置可用於基於大小來確定物件IO的路徑。此外,大物件IO可能不會被篩選或分離,且可能會出於任何合適的目的被調度至區。舉例而言,第一路徑118上的大物件IO可被直接調度至清除緩衝器,以被直接清除至目標儲存裝置108,而不再如下文所欲闡述般繞過日誌-清除緩衝器循環。在此種情形中,提供與日誌緩衝器112相同功能的另一系統(例如,具有冗餘複本的分佈式系統)可用於在系統損壞期間恢復資料。
儘管目標儲存裝置108在圖1中被繪示為與目標106分開,然而目標儲存裝置108的分類不限於此,且在其他實施例中,目標儲存裝置108可被視為目標106的一部分。此外,儘管圖1中示出三個主機102、兩個目標106及兩個目標儲存裝置108,然而可在對一或多個主機102、目標106及目標儲存裝置108的輸入及輸出進行合適修改的情況下使用任何合適數目的主機、目標及目標儲存裝置。因此,網路交換機104可向與一或多個目標儲存裝置108相關聯的多個目標106傳輸IO請求。因此,NVMeoF架構可將多個KV-SSD(例如,數千個或更多個容納於專用儲存專供伺服器中的KV-SSD)連接至主機。
圖2是繪示根據本揭露一或多個實施例的群組化架式的方塊圖。
參照圖2,群組化架式200包括調度器202(例如,KV IO調度器)、一或多個區204、日誌裝置206及目標儲存裝置(例如,比如KV-SSD等持續儲存裝置)208。
目標(例如,圖1所示目標106)可包括用於在每一區中查找的散列表210以及髒物件IO(例如,尚未完成的物件IO)的鏈接列表。調度器202可基於散列鍵來確定讓一或多個區204中的哪一區發送小物件IO的鍵值,所述散列鍵可自包括於一或多個區204中的每一者中的散列表210確定。
目標可包括維持髒物件IO的次序的鏈接列表(例如,在先來先奉(first-come first-serve)的基礎上對物件IO進行順序排序的鏈接列表)。記憶體快取可使用鏈接列表來辨識記憶體快取中的髒物件IO。在一或多個實施例中,鏈接列表可保存於記憶體快取中。因此,髒物件IO的鏈接列表可用於將髒物件IO鏈接於一起,以藉由辨識髒物件IO(與搜尋整個散列表210相反)來高效地清除髒物件IO。辨識髒物件IO可藉由自鏈接列表的頂部掃描至鏈接列表的尾部來達成。因此,確定散列表210的哪些桶(bucket)具有髒物件IO的高效方式可避免不必要地在散列表210中搜尋欲清除的髒物件IO。
使用多個區204能夠使得為不同的相應目的指定不同的區。舉例而言,區204可被指定用於具有不同通量及潛時要求的不同類型的資料。調度器202可基於與所調度的IO相關聯的優先權來確定用於接收所述IO的相應區204。舉例而言,高優先權資料可被發送至用於高優先權資料的第一區,而低優先權資料可被發送至用於低優先權資料的第二區。第一區與第二區可具有不同的臨限參數、通訊量(traffic)及/或資料處理特性,以分別適應高優先權資料及低優先權資料。因此,由於具有較高優先權的資料可與具有較低優先權的資料區分開、進而使得不同的資料可由調度器202發送至相應的合適區,因此可最佳化或改善IO效能。
使用多個區204能夠使得藉由在非共享執行緒中對物件進行分區來達成無鎖IO過程(lockless IO process)。換言之,區204可為專用的,進而使得例如對同一物件的請求被映射至相同的對應區204。作為實例,區204可被指定為使用容許區204繼續處置請求及完成的一種類型的命令(例如,「讀取」命令)。因此,無鎖實施方式可避免同時出現或在相同的事件中出現同一物件的「讀取」或「寫入」命令。
在一或多個實施例中,若物件IO具有足夠高的優先權(例如,「最高」優先權),則無論物件IO的大小如何,物件IO均可遵循第一路徑(例如,圖1所示第一路徑118),且可跳過日誌-清除緩衝器循環以直接傳遞至目標儲存裝置208。藉由跳過日誌-清除緩衝器循環,物件IO行經正常的IO路徑(例如,圖1所示第一路徑118)而不保存於日誌裝置206中,且亦不通過日誌緩衝器212。因此,個別高優先權物件IO的潛時降低。因此,本揭露的系統及方法可被配置成基於優先權來篩選或分離物件IO,以將物件IO放置於不同的相應區204中及/或經由不同的相應路徑來放置物件IO。
可定製用於自調度器202接收鍵值的區204。作為實例,在IO完成之前(例如,在資料被清除至目標儲存裝置208之前),一或多個區204可被指定用於重複刪除(deduplication)、壓縮及/或類似操作。
在一或多個實施例中,所述指定區204用於重複刪除、壓縮及/或類似操作可使用NVME名稱空間或密鑰前綴辨識服務或應用來達成。然而,本揭露的實施例不限於此,且可根據本揭露使用指定區204用於特定類型的資料處理的其他合適方法。此外,且作為實例,進一步的資料處理(例如重複刪除、壓縮及/或類似操作)可由現場可程式化閘陣列(FPGA)實行。然而,可使用任何合適的裝置來處理區204中的資料,且可根據本揭露實行任何進一步合適形式的資料處理。
根據一或多個實施例,所述一或多個區中的每一者可包括包含一或多個緩衝器的記憶體快取。舉例而言,區204可包括第一緩衝器(例如,日誌緩衝器)212及第二緩衝器(例如,清除緩衝器)214。然而,應注意,第一緩衝器212及第二緩衝器214可自由地改變功能(例如,自日誌緩衝器改變為清除緩衝器及/或自清除緩衝器改變為日誌緩衝器),且可根據在目標儲存裝置208頂上運行的軟體模組來設定功能。
日誌緩衝器(例如,圖2中所示的第一緩衝器212)可接受傳入的小物件IO請求作為第二路徑(例如,圖1所示第二路徑120)的一部分。日誌緩衝器可藉由將所接收的小物件IO群組化於一起來準備小物件IO。換言之,第一緩衝器212可將每一小物件IO與一或多個其他小物件IO序連,以形成物件群組或剪輯216。
日誌緩衝器可繼續接收小物件IO,直至達到條件或觸發點(trigger)為止(例如,直至物件群組大小超過臨限或最大大小為止、直至最大數目的小物件IO已形成為物件群組216為止及/或直至超時窗口已經過去為止,其中所述臨限、最大數目及/或超時窗口在一或多個實施例中是可調整的)。超時窗口指代期間由日誌緩衝器接收小物件IO或小物件IO位於日誌緩衝器內的時間週期。舉例而言,可根據物件群組216及/或區204依據小物件IO的潛時及通量合適性來設定所述時間週期。
舉例而言,超時窗口的時間週期可至少基於物件群組216中物件IO的優先權(例如,基於物件IO的數目及/或自接收到高優先權物件IO以來經過的時間)來調整,及/或可基於與區相關的條件(例如,基於指定為高優先權區或低優先權區)來調整。
日誌緩衝器接收週期的結束可能取決於單一條件。然而,在一或多個實施例中,接收週期的結束可能取決於多於一個條件。舉例而言,接收週期的結束可能取決於首先滿足的任何所設定條件或觸發點,或者可能取決於例如(舉例而言)物件群組大小、所述群組中小物件IO的數目、優先權及/或所經過時間的加權組合等組合。然而,應注意,以上是作為非限制性實例來提供。
在一或多個實施例中,對目標條件、日誌緩衝器條件及/或清除緩衝器條件的自適應調整可根據自適應回饋演算法來實行。作為實例,自適應回饋演算法是使用例如初始緩衝器大小、物件IO臨限大小、每物件群組的物件數目及/或超時窗口而建立在IO輸出效能的基礎上。基於該些初始參數的效能,自適應回饋演算法可調整緩衝器大小、物件IO臨限大小、每物件群組的物件數目及/或超時窗口。舉例而言,自適應回饋演算法可在入站IO的大小及頻率改變時(例如,在入站IO模式改變時)監控輸出效能,且由於日誌緩衝器在達到超時窗口之前達到滿容量,因此可確定出可合適地增大緩衝器大小或者可合適地減小超時窗口。
作為另一選擇,由於太頻繁得達到超時窗口,因此自適應回饋演算法可確定出可合適地減小緩衝器大小或者可合適地增大超時窗口。判斷是否調整超時窗口、緩衝器大小及/或日誌緩衝器中的物件數目可基於哪一參數改善每秒完成的物件IO(object IOs completed per second,IOPS)的數目。因此,自適應回饋演算法可直觀地設置物件IO臨限大小、緩衝器大小、每物件群組的物件數目及/或超時窗口。
儘管說明書通篇中使用用語「物件群組」,然而若僅接收到單一小物件IO且在接收週期內日誌緩衝器未接收到其他小物件IO,則序連可能不會發生,且物件群組216可僅包括所述單一小物件IO。
因此,在日誌緩衝器212中形成包括一或多個小物件IO的物件群組或剪輯216。序連的物件群組216可被視為單一大物件IO(由於序連),以便將小物件IO寫入至儲存裝置(例如日誌裝置206)及目標儲存裝置208(例如KV-SSD)。藉由此種方式,由於小物件IO被視為單一大物件IO,因此小物件IO的平均潛時及通量可得到增強。
在一或多個實施例中,出於損壞恢復目的,日誌緩衝器將物件群組216持續保持至或記錄至日誌裝置206,日誌裝置206可為具有持續記憶體的裝置。舉例而言,若在物件IO完成之前(例如,在物件IO被清除至目標儲存裝置208之前)發生系統損壞,則所記錄的資料可用於幫助恢復先前位於日誌緩衝器中的物件IO。因此,系統可判斷所記錄的IO是否完成,且亦可確定哪些步驟(若有)將合適地完成所記錄的IO。
在一或多個實施例中,日誌緩衝器可被配置成在將小物件IO記錄至日誌裝置206之後改變角色以用作清除緩衝器。舉例而言,清除緩衝器(例如,圖2中所示的第二緩衝器214)可在其中儲存包括小物件IO的物件群組或剪輯218。若多個日誌緩衝器改變角色以用作清除緩衝器(例如,藉此形成大小更大的單一清除緩衝器),則清除緩衝器可包括多個物件群組218。
一旦達到例如臨限清除緩衝器大小及/或臨限空閒週期(例如,基於清除緩衝器中存在的物件IO的所經過時間)等某一條件,清除緩衝器便可清除所述清除緩衝器的內容(例如,可將物件群組218清除至目標儲存裝置208。然後,清除緩衝器的內容可被標記為刪除,以去除所述清除緩衝器的內容,以藉此當所述清除緩衝器被清空且物件IO完成時釋放記憶體快取中的空間。
在清除緩衝器被清空之後,所述清除緩衝器可能夠用於改變角色以用作日誌緩衝器,藉此完成單一日誌-清除循環。在一或多個實施例中,第一緩衝器212與第二緩衝器214可併發地(例如,實質上同時)重複多個日誌-清除循環。此外,臨限清除緩衝器大小及/或臨限空閒週期可為可調整的(例如,藉由演算法、應用程式設計介面(application programing interface)、配置檔案或任何其他合適的方法)。
因此,就所揭露系統內的功能性而言,第一緩衝器212與第二緩衝器214可具有相反的角色。舉例而言,第一緩衝器212可用作日誌緩衝器,而第二緩衝器214可用作清除緩衝器。如上所述,當第一緩衝器212改變角色以用作清除緩衝器時,第二緩衝器214改變角色以用作日誌緩衝器。換言之,IO可被自調度器202調度至用作日誌緩衝器(例如,序連傳入的IO以形成第二物件群組216且將其內容(例如第二物件群組216)記錄至日誌裝置206)的第二緩衝器214,而第一緩衝器212用作清除緩衝器(例如,而第一緩衝器212將第一物件群組218清除至KV-SSD 208)。隨後,第一緩衝器212可恢復用作日誌緩衝器,而第二緩衝器214恢復用作清除緩衝器。因此,可維持IO通量及低IO潛時,此乃因存在用於併發地處理資料的現用日誌緩衝器與現用清除緩衝器。
在一或多個實施例中,日誌緩衝器及/或清除緩衝器的大小可被動態地更改,以適應來自自適應回饋演算法的調整。舉例而言,調度器202可基於欲被調度的物件IO的大小且基於被調度至日誌緩衝器的先前IO來確定被合適地確定大小的日誌緩衝器合適於適應所述欲被調度的物件IO。因此,日誌緩衝器的大小可被調整為能夠接收附加的物件IO。此外,調度器202可基於對應區204中的日誌緩衝器的可用空間或記憶體,將物件IO調度至所述區204。
圖3是示出根據本揭露一或多個實施例的基於日誌-清除緩衝器循環的IO路徑的流程圖300。
參照圖3,目標可接收傳入的物件IO,且可判斷所述物件IO是低於設定大小還是處於或高於設定大小(302)。設置大小可為可藉由應用程式設計介面或配置檔案來調整的可調整臨限大小。因此,臨限大小可用於判斷傳入的物件IO是小物件IO還是大物件IO。
若物件IO處於或大於臨限大小,則所述物件IO可跳過日誌-清除緩衝器循環,且所述物件IO可直接傳遞至目標儲存裝置(304)以儲存於持續記憶體中。
舉例而言,藉由跳過日誌-緩衝器循環,大物件IO可經由正常的IO路徑前行,而不被保存於低潛時日誌裝置中,亦不通過日誌緩衝器或清除緩衝器。因此,由於大物件IO不會遭受在其他情況下與小物件IO相關聯的潛時問題(所述潛時問題藉由如上所述群組化小物件IO而減少),因此藉由群組化大物件IO來將大物件IO保存至低潛時日誌裝置可能獲得很少益處或根本不會獲得益處。
然而,若物件IO低於設定大小,則可將所述物件IO(或小物件IO)傳輸或調度至目標的用作日誌緩衝器的第一緩衝器(306)。
在此時間點處,若日誌緩衝器是空的(308),則可將所述物件IO儲存於日誌緩衝器中,且可重置超時窗口(310)。此後,超時週期可開始。
若在日誌緩衝器將所述物件IO儲存至日誌裝置之前達到超時窗口(312),則可將當前位於日誌緩衝器中的所述物件IO記錄至日誌裝置(314)。
隨後,日誌緩衝器(例如,第一緩衝器)可停止用作日誌緩衝器,且此後可充當清除緩衝器(316)。在一或多個實施例中,在一或多個日誌緩衝器調換或改變功能以充當清除緩衝器時,所述清除緩衝器保持一或多個物件群組。換言之,清除緩衝器的大小會擴展或增大,以包含一或多個日誌緩衝器的內容。
清除緩衝器中的所述一或多個物件群組可能經歷進一步的資料處理,或者可在清除緩衝器中保持空閒,直至滿足清除緩衝器條件為止(317)。舉例而言,清除緩衝條件可對應於空閒度檢測(idleness detection)及/或記憶體快取大小。空閒度檢測可基於可調整的空閒度超時(例如,空閒度超時窗口(idleness timeout window)),所述可調整的空閒度超時可基於物件IO的優先權及/或自最末物件群組被添加至清除緩衝器以來的時間。在一或多個實施例中,記憶體快取大小可基於記憶體快取中剩餘的可用空間的可調整臨限(例如,基於用於清除緩衝器及日誌緩衝器的DRAM快取中剩餘的可用空間或記憶體)。
在滿足清除緩衝器條件(317)之後,清除緩衝器可開始將儲存於其中的鍵值清除或清空至目標儲存裝置(例如KV-SSD)(318)。
在一或多個實施例中,目標可包括實行與由第一緩衝器實行的功能相反的功能的第二緩衝器。舉例而言,在第一緩衝器用作日誌緩衝器的同時,第二緩衝器用作清除緩衝器,且在第二緩衝器用作日誌緩衝器的同時,第一緩衝器用作清除緩衝器。因此,物件IO能夠繼續被調度至第一緩衝器或第二緩衝器中的任一者,同時另一緩衝器正在將資料清除或傳送至目標儲存裝置。
在將清除緩衝器的內容儲存於目標儲存裝置上(318)之後,可將清除緩衝器的鍵值標記為刪除以自記憶體刪除,且清除緩衝器可再次改變角色以充當日誌緩衝器(320),藉此完成日誌-清除緩衝器循環。在一或多個實施例中,在KV-SSD頂上運行的軟體模組可觸發自日誌緩衝器至清除緩衝器以及自清除緩衝器至日誌緩衝器的角色改變或修改。
在一或多個實施例中,物件IO可在超時窗口內被調度至日誌緩衝器,且所述日誌緩衝器可能已經包括一或多個物件IO。即,可確定出所述緩衝器不是空的(308)。在此種情形中,可對所述物件IO實行序連,以在日誌緩衝器中形成物件群組或剪輯(324)。舉例而言,可各別地序連每一傳入的小物件IO,以在日誌緩衝器中形成一個不斷增大的物件群組。因此,小物件IO在被序連以在日誌緩衝器中形成群組之前,可能會在日誌緩衝器中累積。因此,物件群組可能包括多個小鍵/值物件。
日誌緩衝器可接收附加小物件IO以包括於物件群組中,直至滿足或觸發一或多個條件為止(326)。舉例而言,所述條件可包括物件群組大小超過可調整臨限大小、可調整數目的小物件IO形成為物件群組及/或經過超時窗口中的一或多者。所述一或多個條件可藉由軟體輸入及/或自適應回饋演算法來調整。因此,依據對所述一或多個條件作出的變化,小物件IO的潛時及通量可能會受到影響。可慮及物件群組大小、群組中小物件IO的數目及/或所經過時間的組合。
即使各別物件IO的完成由於例如序連、等待週期及將物件群組記錄於低潛時日誌裝置中的動作而具有較長的潛時,然而由於物件群組被實際上視為單一大鍵值,因此相較於被一次一個地完成的小物件IO,與所述物件群組相關聯的平均潛時可減少。
換言之,對於儲存於日誌緩衝器中的第一小物件IO,日誌-清除緩衝器循環可能會導致較高的IO潛時。然而,日誌-清除緩衝器循環可能一般會導致物件群組的較低的平均IO潛時。舉例而言,群組化架式可將IO的潛時減少約一半,且可將小物件IO叢發(burst)的通量增加約一倍。
因此,如本文中所揭露,本揭露的實施例藉由群組化小物件IO以將所述小物件IO視為單一大物件IO來改善小物件IO的平均潛時及通量。此外,本揭露的實施例自適應地適應大物件IO與小物件IO的混合體,以維持大物件IO上相對高的通量與小物件IO上相對低的潛時二者,藉此增強IO效能。
儘管已參照本揭露的一些示例性實施例具體示出並闡述了本揭露,然而此項技術中具有通常知識者將理解,在不背離如在以下申請專利範圍及其等效範圍中闡述的本揭露的精神及範圍的條件下,可對其作出形式及細節上的各種變化。
100:網路 102:主機 104:網路交換機 106:目標 108:目標儲存裝置 110、202:調度器 112:日誌緩衝器 114:清除緩衝器 116、204:區 117、206:日誌裝置 118:第一路徑 120:第二路徑 200:群組化架式 208:目標儲存裝置/KV-SSD 210:散列表 212:日誌緩衝器/第一緩衝器 214:第二緩衝器 216:物件群組/第二物件群組/剪輯 218:物件群組/第一物件群組/剪輯 300:流程圖 302、304、306、308、310、312、314、316、317、318、320、324、326:步驟
參照以下各圖闡述本發明實施例的非限制性及非窮盡性實施例,其中除非另有指明,否則在各個圖中相同的參考編號指代相同的部件。 圖1是繪示根據本揭露一或多個實施例的用於改善IO效能的網路的方塊圖。 圖2是繪示根據本揭露一或多個實施例的群組化架式(grouping schema)的方塊圖。 圖3是示出根據本揭露一或多個實施例的基於日誌-清除緩衝器循環(log-flush buffer cycle)的IO路徑的流程圖。
在圖式中的幾個圖中,對應的參考編號指示對應的組件。熟習此項技術者將理解,圖中的元件是為簡單及清晰而示出,且未必按比例繪製。舉例而言,圖中的一些元件、層及區域的尺寸可能相對於其他元件、層及區域被誇大,以幫助改善各種實施例的清晰度及對各種實施例的理解。此外,可能不示出與對實施例的說明不相關的常見但眾所習知的元件及部件,以便於得到該些不同實施例的障礙較少的圖,並使說明清楚。
100:網路
102:主機
104:網路交換機
106:目標
108:目標儲存裝置
110:調度器
112:日誌緩衝器
114:清除緩衝器
116:區
117:日誌裝置
118:第一路徑
120:第二路徑

Claims (20)

  1. 一種完成物件輸入輸出的方法,所述方法包括: 接收目標儲存裝置的第一組物件輸入輸出; 將所述第一組物件輸入輸出調度至第一區的第一緩衝器,所述第一緩衝器被配置成用作第一日誌緩衝器; 序連所述第一組物件輸入輸出以在所述第一緩衝器中形成第一物件群組; 將所述第一物件群組記錄至日誌裝置; 將所述第一緩衝器的功能自所述第一日誌緩衝器修改為第一清除緩衝器;以及 將所述第一物件群組傳送至所述目標儲存裝置。
  2. 如請求項1所述的方法,更包括: 接收所述目標儲存裝置的第二組物件輸入輸出; 將所述第二組物件輸入輸出調度至所述第一區的第二緩衝器,所述第二緩衝器被配置成因應於所述第一緩衝器用作所述第一清除緩衝器而用作第二日誌緩衝器; 序連所述第二組物件輸入輸出以在所述第二緩衝器中形成第二物件群組; 將所述第二物件群組記錄至所述日誌裝置; 將所述第二緩衝器的功能自所述第二日誌緩衝器修改為第二清除緩衝器;以及 將所述第二物件群組傳送至所述目標儲存裝置。
  3. 如請求項2所述的方法,更包括: 接收所述目標儲存裝置的第三組物件輸入輸出; 將所述第三組物件輸入輸出調度至第二區的第三緩衝器,所述第三緩衝器被配置成用作第三日誌緩衝器; 序連所述第三組物件輸入輸出以在所述第三緩衝器中形成第三物件群組; 將所述第三物件群組記錄至所述日誌裝置; 將所述第三緩衝器的功能自所述第三日誌緩衝器修改為第三清除緩衝器;以及 將所述第三物件群組傳送至所述目標儲存裝置, 其中所述第三組物件輸入輸出包括高優先權資料,且 其中所述第一組物件輸入輸出或所述第二組物件輸入輸出包括低優先權資料。
  4. 如請求項1所述的方法,更包括調整超時窗口、欲保持於所述第一日誌緩衝器中的所述第一組物件輸入輸出的最大數目或者所述第一物件群組的臨限大小,所述超時窗口對應於在所述第一日誌緩衝器中儲存所述第一組物件輸入輸出中的一者的最大時間量, 其中所述第一物件群組基於所述超時窗口、欲保持於所述第一日誌緩衝器中的物件輸入輸出的所述最大數目或者所述第一物件群組的所述臨限大小而被記錄至所述日誌裝置。
  5. 如請求項4所述的方法,其中調整所述超時窗口、所述第一組物件輸入輸出的所述最大數目或者所述臨限大小是根據回饋演算法來實行。
  6. 如請求項1所述的方法,更包括使用現場可程式化閘陣列處理儲存於所述第一緩衝器中的資料。
  7. 如請求項1所述的方法,更包括: 接收大物件輸入輸出; 自所述第一組物件輸入輸出分離所述大物件輸入輸出;以及 將所述大物件輸入輸出直接傳遞至所述目標儲存裝置。
  8. 如請求項1所述的方法,其中將所述第一物件群組傳送至所述目標儲存裝置包括: 搜尋包括鏈接於一起的髒物件輸入輸出的鏈接列表;以及 將所述髒物件輸入輸出傳送至所述目標儲存裝置,所述髒物件輸入輸出屬於所述第一物件群組。
  9. 一種在用於完成物件輸入輸出的系統上實施的非暫時性電腦可讀取媒體,所述非暫時性電腦可讀取媒體具有電腦碼,所述電腦碼當在處理器上執行時實施一種完成物件輸入輸出的方法,所述方法包括: 接收目標儲存裝置的第一組物件輸入輸出; 將所述第一組物件輸入輸出調度至第一區的第一緩衝器,所述第一緩衝器被配置成用作第一日誌緩衝器; 序連所述第一組物件輸入輸出以在所述第一緩衝器中形成第一物件群組; 將所述第一物件群組記錄至日誌裝置; 將所述第一緩衝器的功能自所述第一日誌緩衝器修改為第一清除緩衝器;以及 將所述第一物件群組傳送至所述目標儲存裝置。
  10. 如請求項9所述的非暫時性電腦可讀取媒體,其中所述電腦碼當由所述處理器執行時進一步藉由以下方式實施所述完成物件輸入輸出的方法 接收所述目標儲存裝置的第二組物件輸入輸出; 將所述第二組物件輸入輸出調度至所述第一區的第二緩衝器,所述第二緩衝器被配置成因應於所述第一緩衝器用作所述第一清除緩衝器而用作第二日誌緩衝器; 序連所述第二組物件輸入輸出以在所述第二緩衝器中形成第二物件群組; 將所述第二物件群組記錄至所述日誌裝置; 將所述第二緩衝器的功能自所述第二日誌緩衝器修改為第二清除緩衝器;以及 將所述第二物件群組傳送至所述目標儲存裝置。
  11. 如請求項10所述的非暫時性電腦可讀取媒體,其中所述電腦碼當由所述處理器執行時進一步藉由以下方式實施所述完成輸入輸出的方法 接收所述目標儲存裝置的第三組物件輸入輸出; 將所述第三組物件輸入輸出調度至第二區的第三緩衝器,所述第三緩衝器被配置成用作第三日誌緩衝器; 序連所述第三組物件輸入輸出以在所述第三緩衝器中形成第三物件群組; 將所述第三物件群組記錄至所述日誌裝置; 將所述第三緩衝器的功能自所述第三日誌緩衝器修改為第三清除緩衝器;以及 將所述第三物件群組傳送至所述目標儲存裝置, 其中所述第三組物件輸入輸出包括高優先權資料,且 其中所述第一組物件輸入輸出或所述第二組物件輸入輸出包括低優先權資料。
  12. 如請求項9所述的非暫時性電腦可讀取媒體,其中所述電腦碼當由所述處理器執行時進一步藉由以下方式實施所述完成輸入輸出的方法 調整超時窗口、欲保持於所述第一日誌緩衝器中的所述第一組物件輸入輸出的最大數目或者所述第一物件群組的臨限大小,所述超時窗口對應於在所述第一日誌緩衝器中儲存所述第一組物件輸入輸出中的一者的最大時間量, 其中所述第一物件群組基於所述超時窗口、欲保持於所述第一日誌緩衝器中的物件輸入輸出的所述最大數目或者所述第一物件群組的所述臨限大小而被記錄至所述日誌裝置。
  13. 如請求項12所述的非暫時性電腦可讀取媒體,其中調整所述超時窗口、所述第一組物件輸入輸出的所述最大數目或者所述臨限大小是根據回饋演算法來實行。
  14. 如請求項9所述的非暫時性電腦可讀取媒體,其中所述電腦碼當由所述處理器執行時進一步藉由使用現場可程式化閘陣列處理儲存於所述第一緩衝器中的資料來實施所述完成輸入輸出的方法。
  15. 如請求項9所述的非暫時性電腦可讀取媒體,其中所述電腦碼當由所述處理器執行時進一步藉由以下方式實施所述完成輸入輸出的方法 接收大物件輸入輸出; 自所述第一組物件輸入輸出分離所述大物件輸入輸出;以及 將所述大物件輸入輸出直接傳遞至所述目標儲存裝置。
  16. 如請求項9所述的非暫時性電腦可讀取媒體,其中將所述第一物件群組傳送至所述目標儲存裝置包括: 搜尋包括鏈接於一起的髒物件輸入輸出的鏈接列表;以及 將所述髒物件輸入輸出傳送至所述目標儲存裝置,所述髒物件輸入輸出屬於所述第一物件群組。
  17. 一種用於完成物件輸入輸出的系統,所述系統包括日誌裝置、目標儲存裝置及記憶體快取,其中所述系統被配置成: 接收所述目標儲存裝置的第一組物件輸入輸出; 將所述第一組物件輸入輸出調度至第一區的第一緩衝器,所述第一緩衝器被配置成用作第一日誌緩衝器; 序連所述第一組物件輸入輸出以在所述第一緩衝器中形成第一物件群組; 將所述第一物件群組記錄至所述日誌裝置; 將所述第一緩衝器的功能自所述第一日誌緩衝器修改為第一清除緩衝器;以及 將所述第一物件群組傳送至所述目標儲存裝置。
  18. 如請求項17所述的用於完成物件輸入輸出的系統,其中所述系統被進一步配置成: 接收所述目標儲存裝置的第二組物件輸入輸出; 將所述第二組物件輸入輸出調度至所述第一區的第二緩衝器,所述第二緩衝器被配置成因應於所述第一緩衝器用作所述第一清除緩衝器而用作第二日誌緩衝器; 序連所述第二組物件輸入輸出以在所述第二緩衝器中形成第二物件群組; 將所述第二物件群組記錄至所述日誌裝置; 將所述第二緩衝器的功能自所述第二日誌緩衝器修改為第二清除緩衝器;以及 將所述第二物件群組傳送至所述目標儲存裝置。
  19. 如請求項18所述的用於完成物件輸入輸出的系統,其中所述系統被進一步配置成: 接收所述目標儲存裝置的第三組物件輸入輸出; 將所述第三組物件輸入輸出調度至第二區的第三緩衝器,所述第三緩衝器被配置成用作第三日誌緩衝器; 序連所述第三組物件輸入輸出以在所述第三緩衝器中形成第三物件群組; 將所述第三物件群組記錄至所述日誌裝置; 將所述第三緩衝器的功能自所述第三日誌緩衝器修改為第三清除緩衝器;以及 將所述第三物件群組傳送至所述目標儲存裝置, 其中所述第三組物件輸入輸出包括高優先權資料,且 其中所述第一組物件輸入輸出或所述第二組物件輸入輸出包括低優先權資料。
  20. 如請求項19所述的用於完成物件輸入輸出的系統,其中所述系統被進一步配置成: 調整超時窗口、欲保持於所述第一日誌緩衝器中的所述第一組物件輸入輸出的最大數目或者所述第一物件群組的臨限大小,所述超時窗口對應於在所述第一日誌緩衝器中儲存所述第一組物件輸入輸出中的一者的最大時間量, 其中所述第一物件群組基於所述超時窗口、欲保持於所述第一日誌緩衝器中的物件輸入輸出的所述最大數目或者所述第一物件群組的所述臨限大小而被記錄至所述日誌裝置。
TW109136584A 2020-01-29 2020-10-22 完成物件輸入輸出的方法及系統、以及非暫時性電腦可讀取媒體 TWI829974B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062967231P 2020-01-29 2020-01-29
US62/967,231 2020-01-29
US16/815,974 2020-03-11
US16/815,974 US11243694B2 (en) 2020-01-29 2020-03-11 Grouping key value object IOs to improve IO performance for key-value storage devices

Publications (2)

Publication Number Publication Date
TW202129508A true TW202129508A (zh) 2021-08-01
TWI829974B TWI829974B (zh) 2024-01-21

Family

ID=74215705

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109136584A TWI829974B (zh) 2020-01-29 2020-10-22 完成物件輸入輸出的方法及系統、以及非暫時性電腦可讀取媒體

Country Status (4)

Country Link
EP (1) EP3859511B1 (zh)
KR (1) KR20210097010A (zh)
CN (1) CN113190168B (zh)
TW (1) TWI829974B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230205698A1 (en) * 2021-12-29 2023-06-29 Advanced Micro Devices, Inc. Cache blocking for dispatches

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8380962B2 (en) * 2010-08-16 2013-02-19 Symantec Corporation Systems and methods for efficient sequential logging on caching-enabled storage devices
US9251058B2 (en) * 2010-09-28 2016-02-02 SanDisk Technologies, Inc. Servicing non-block storage requests
US9092475B2 (en) * 2011-11-07 2015-07-28 Sap Se Database log parallelization
CN107209726B (zh) * 2014-08-15 2020-12-11 微软技术许可有限责任公司 文件系统中的冲刷
US9965196B2 (en) * 2014-10-20 2018-05-08 Netapp, Inc. Resource reservation for storage system metadata updates
WO2016186583A1 (en) * 2015-05-21 2016-11-24 Agency For Science, Technology And Research Cache architecture and algorithms for hybrid object storage devices
US9959046B2 (en) * 2015-12-30 2018-05-01 Samsung Electronics Co., Ltd. Multi-streaming mechanism to optimize journal based data storage systems on SSD
US10430103B1 (en) * 2017-03-20 2019-10-01 Amazon Technologies, Inc. Using log objects in object storage for durability of file objects in volatile memory
US11175853B2 (en) * 2017-05-09 2021-11-16 Samsung Electronics Co., Ltd. Systems and methods for write and flush support in hybrid memory
US10528404B2 (en) * 2018-06-01 2020-01-07 Micron Technology, Inc. Event logging in a multi-core system

Also Published As

Publication number Publication date
CN113190168B (zh) 2023-05-02
KR20210097010A (ko) 2021-08-06
TWI829974B (zh) 2024-01-21
EP3859511B1 (en) 2024-04-17
EP3859511A1 (en) 2021-08-04
CN113190168A (zh) 2021-07-30

Similar Documents

Publication Publication Date Title
US11243694B2 (en) Grouping key value object IOs to improve IO performance for key-value storage devices
US11531472B2 (en) Scalable memory system protocol supporting programmable number of levels of indirection
US10019196B2 (en) Efficient enforcement of command execution order in solid state drives
US9110831B2 (en) High-speed memory system
JP5535115B2 (ja) マルチスレッド型ファイル入出力システム、及びマルチスレッド型ファイル入出力プログラム
US20140189264A1 (en) Reads and Writes Between a Contiguous Data Block and Noncontiguous Sets of Logical Address Blocks in a Persistent Storage Device
US9672180B1 (en) Cache memory management system and method
US10146475B2 (en) Memory device performing control of discarding packet
KR20180059342A (ko) 저장 장치의 i/o 성능 개선을 위한 시스템 및 방법
TW202129508A (zh) 完成物件輸入輸出的方法及系統、以及非暫時性電腦可讀取媒體
US8713278B2 (en) System and method for stranded file opens during disk compression utility requests
US9645738B2 (en) Direct memory access of remote data
US8793462B2 (en) Implementing storage adapter performance optimization with enhanced resource pool allocation
KR102462048B1 (ko) 이중 slc/qlc 프로그래밍 및 리소스 해제
WO2009024458A1 (en) Segmentation of logical volumes
US9990284B2 (en) Storage control device
JP6013609B2 (ja) ストレージ装置及びデータ入出力方法
CN110502459A (zh) 包括能处理数据的存储器设备的半导体系统及其操作方法
TWI813876B (zh) 解壓縮系統、記憶體系統以及解壓縮的方法
US11494303B1 (en) Data storage system with adaptive, memory-efficient cache flushing structure
US20150261464A1 (en) Memory system and method of controlling memory system
KR101455682B1 (ko) 해시 파티셔닝 장치 및 방법