TW202225963A - 載入容器映像的方法和設備 - Google Patents
載入容器映像的方法和設備 Download PDFInfo
- Publication number
- TW202225963A TW202225963A TW110134396A TW110134396A TW202225963A TW 202225963 A TW202225963 A TW 202225963A TW 110134396 A TW110134396 A TW 110134396A TW 110134396 A TW110134396 A TW 110134396A TW 202225963 A TW202225963 A TW 202225963A
- Authority
- TW
- Taiwan
- Prior art keywords
- container
- layers
- expected location
- expected
- location
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000003860 storage Methods 0.000 claims description 125
- 230000015654 memory Effects 0.000 claims description 49
- 230000004044 response Effects 0.000 claims description 13
- 230000002085 persistent effect Effects 0.000 claims description 10
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 238000004519 manufacturing process Methods 0.000 abstract description 8
- 230000006835 compression Effects 0.000 description 13
- 238000007906 compression Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000013507 mapping Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000009434 installation Methods 0.000 description 5
- 238000012913 prioritisation Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 241000446313 Lamella Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000005685 electric field effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
揭露了載入容器映像的方法、設備、系統和製品。一種範例設備包括優先順序排列器,其用以確定容器將要執行的優先順序等級。容器控制器係用以確定所述容器的第一組層的第一預期位置,所述容器控制器用以確定所述容器的第二組層的第二預期位置,所述第一預期位置和所述第二預期位置基於所述確定的優先順序等級來確定,所述第二組層在映像中透過地標與所述第一組層分開。容器載入器係用以從所述第一預期位置安裝所述第一組層。容器執行器係用以基於所述安裝的第一組層啟動所述容器的執行。
Description
本揭露通常涉及基於容器的計算,並且更具體地涉及實現容器映像的高效率載入。
容器是用於在主機虛擬化環境中執行應用程式的隔離實例的虛擬結構。容器用於促進作業系統虛擬化,從而從作業系統中提取(例如,隔離)應用程式。因此,在第一容器中執行的應用程式與在容器外部(例如,在主機作業系統或另一個容器中)執行的另一個應用程式(甚至可能是同一應用程式的副本)隔離。
及
作業系統(OS)等級虛擬化致使在計算系統上執行多個隔離的使用者空間實例。這種實例是通常被稱為容器,但可額外地或替代地被稱為區域、虛擬私有伺服器、分區、虛擬環境(VE)、虛擬核心、監獄等。這種容器從容器內執行的應用程式的觀點充當完整的電腦系統。然而,雖然在傳統電腦作業系統上執行的應用程式可以存取所述電腦的資源(例如,連接的裝置、檔案系統、網路共享等),但當應用程式在容器內執行時,應用程式只能存取與容器相關的那些資源。換句話說,除了特別允許應用程式存取的容器外的那些資源之外,應用程式無法存取容器外的資源(例如,另一個容器中的資源、主機作業系統的資源等)。
為此,從資源管理的角度來看(例如,容器化部件使用的資源被隔離,僅供屬於同一容器的一部分的那些部件使用)和/或從安全性的角度來看(例如,存取容器化檔案或部件可以被限制),容器是有用的。同樣地,容器對於實現輕量級、可重複的應用程式配置是有用的。以此方式,容器在雲端計算環境中頻繁使用以使得能夠基於需求來分配、移除和/或重新分配資源。
在主機環境中執行容器之前,容器被儲存為容器映像,所述映像指定容器的部件,包含例如執行容器所需的程式庫檔案、二進制檔案和/或其它檔案。
容器與容器映像不同,即使從儲存的角度來看也是如此,因為容器映像代表了容器開始的基礎。容器將在映像頂部添加一個既可讀又可寫的「薄」層。容器將嘗試對映像中檔案的內容進行的任何更改都將觸發寫入時複製機制,所述機制將改為在映像的檔案薄層中建立副本,接著將由容器使用所述副本以用於讀取和寫入目的。如此,容器映像,或者更一般地,容器不同於虛擬機映像(或其它資料結構),其中由在虛擬機器內執行的應用程式對虛擬機映像所做的更改將致使寫入映像本身。
容器映像可以包含一或多個容器層,這些層可以被認為是容器儲存的基本單元。每層都會向整體映像添加一組不同的檔案和資料夾。映像的容器層被認為是唯讀的,通常會被重新使用作為一或多個可以共享它們的容器的構建方塊(例如,具有相同作業系統的2個容器將共享代表所述作業系統的層)。當要建立容器時,容器運行時引擎(例如,在其壽命中建立和管理容器的實體)將有一個處置器,其將負責確保建立容器所需的所有層都存在於磁碟上,如果不可用,則從網路上的遠端儲存拉取它們並且建立容器可以讀取和寫入的最後的薄層(其特定於容器)。這種方法稱為寫入時複製(Copy-on-Write),可防止容器寫入唯讀層中的檔案。因此,當決定在主機環境中執行容器時,容器運行時引擎從容器註冊表(例如,經由網路)拉取所有遺失的層,建立小的寫入時複製層並在新容器中安裝所有層(安裝操作不涉及任何讀取、寫入或執行操作),並載入或運行容器指定從最終映像運行的任何二進制檔案或程式。建立容器儲存的這些步驟通常稱為:拉取階段、建立階段(包括安裝)和運行階段。這些步驟是啟動容器時任何負擔的主要原因,並且應該減輕。
在功能即服務(FAAS)和容器即服務(CAAS)環境中,從終端用戶的角度來看,容器啟動時間對服務品質(QoS)有重大影響。冷啟動時間,即從命令啟動容器所花費的時間量,經過3個準備步驟(拉取、建立、運行),直到在機器上第一次完成執行。根據遺失的層數以及建立和安裝所有容器層所需的時間,對功能性能的影響可能很大。對於第一次,這種冷啟動時間也可能因運行期間需要處理大型或大量檔案、檔案操作的高延遲等而受到影響。對於某些用例(例如,即時處理、串流、次秒(sub-second)功能),不能容忍高延遲和不穩定的運行時間。此外,對於被視為高優先順序的工作負載,理想情況下會減少和/或最小化啟動時間(以及所述時間的變動)。本文揭露的範例方法能夠減少容器啟動時間,尤其是在FaaS和CaaS環境中。此外,大多數的FaaS/CaaS服務主機希望具有低變動的可預測運行時間,因為長時間的冷啟動可能會致使客戶更高的費用(如果按時間計費)或供應商的損失(如果冷啟動不計費)。此外,本文揭露的範例基於特定容器的優先順序和/或重要性提供差異化服務。
現有方法試圖透過保持容器溫暖來最小化冷啟動時間。也就是說,容器的映像透過使用RAM磁碟保存在DRAM中。然而,在DRAM中連續儲存容器映像是一種成本高昂的解決方案,尤其是在這些容器未被積極使用的情況下。
一些其它現有方法試圖克服與將完整映像下載到磁碟上以啟動容器相關的延遲,取而代之提供映像的延遲載入。在這種先前的方法中,一旦映像的關鍵部分被下載到儲存中,容器就可以啟動,而其它層在容器啟動後下載,並在執行期間從註冊表中拉出。
如本文所述,使用分層儲存拓撲(例如,基於Intel® 3D XPoint)可以進一步縮短冷啟動時間、增加系統中配置的功能密度,並提供差異化服務(例如,基於工作負載優先順序改進載入時間)。以此方式,分層儲存拓撲(例如,基於Intel® 3D XPoint)用於在FaaS/CaaS配置中提供差異化服務並縮短容器冷啟動時間。在一些範例中,Intel®資源導向技術(Intel® RDT)用於進一步擴展服務差異化並提高性能可預測性(例如,容器運行時間)。以此方式,本文揭露的範例方法在分層儲存系統的上下文中擴展了映像延遲載入的概念,其具有使用分層儲存系統的各個層以提供不同程度的性能和/或可預測性的額外益處。
圖1A是舉例說明不包括地標的第一範例容器映像110和包括地標的第二範例容器映像120的方塊圖。圖1A的第一範例容器映像110是使用並未利用地標的第一壓縮格式壓縮的。在圖1A的舉例說明範例中,第一壓縮格式代表stargz壓縮格式。圖1A的第一範例容器映像110包括第一層131、第二層132、第三層133、第四層134、第五層135、目錄140和頁腳145。第一層131、第二層132、第三層133、第四層134和第五層135中之各者對應於映像110的各個部分。如在圖1A的舉例說明範例中所示,各個層131、132、133、134、135是TAR檔案。然而,可以額外地或替代地使用任何其它過去、現在和/或未來的存檔格式。在圖1A的舉例說明範例中,第一層131和第四層134代表立即執行容器所必需的層。以此方式,映像的立即執行不需要第二層132、第三層133和第五層135。
在圖1A的舉例說明範例中,目錄140包括映像的元資料和偏移資訊。在一些範例中,目錄140是使用JavaScript物件表示法(JSON)格式化的。然而,可以額外地或替代地使用任何其它資料格式。範例頁腳145表示與目錄140的偏移。
圖1A的第二範例映像120包括第一層131、第二層132、第三層133、第四層134、第五層135、目錄140和頁腳145。圖1A的第二範例映像120係使用包括地標150的第二壓縮格式進行壓縮。與第一範例映像110相比,第一層131和第四層134在第二映像120中的地標150之前佈置。第二層132、第三層133和第五層135在地標150之後佈置。
透過使用地標150,可以預提取地標150之前的映像層以載入到記憶體中。在一些範例中,地標150之前的層的預提取是使用單一操作來執行的。在圖1A的舉例說明範例中,執行容器所需的映像層(例如,第一層131和第四層134)在地標之前佈置,這種層可以被拉入儲存媒體,而不是需要磁碟上可用的整個映像。映像的特定層(例如,立即執行映像所需的層)的這種預提取和/或載入被稱為延遲載入和/或延遲映像拉取。
在圖1A的舉例說明範例中,第二壓縮格式是使用estargz壓縮格式來實現的。然而,使用地標和/或以其它方式實現映像的一系列層的預提取的任何其它壓縮格式可以額外地或替代地被使用。
雖然在圖1A的舉例說明範例中,範例映像顯示為每個具有五層,實際上,容器的映像可以包括任意數量的層。此外,雖然圖1A的範例映像顯示了立即執行映像所需的兩個層,實際上,可以將任意數量的這種層識別為立即執行映像所需的。
圖1B是舉例說明範例容器151的方塊圖。如上所述,在容器映像表示容器開始的基礎的意義上,容器不同於容器映像。在圖1B的舉例說明範例中,範例容器150包括「薄」層160,其既可讀取又可寫入。容器150還包括映像層170,其包括第一層171、第二層172、第三層173和第四層174。容器將試圖對映像層170中的檔案的內容做出的任何改變將觸發寫入時複製(copy-on-write)機制,所述機制將改為從映像170在檔案的薄層160中建立副本,接著容器將其用於讀取和寫入目的。
圖2是根據本揭露的教示實現以致使容器映像的延遲載入的範例容器運行時引擎201的方塊圖。圖2的舉例說明範例的範例容器運行時引擎201包括容器層管理器205和計算資源207。範例計算資源207包括第一層儲存裝置220、第二層儲存裝置225、第三層儲存裝置230和第n層儲存裝置235。圖2的舉例說明範例的範例容器層管理器205包括容器壓縮器250、優先順序排列器270、容器控制器275、容器載入器280和容器執行器290。範例容器運行時引擎201經由網路296與容器註冊表295進行通訊。
圖2的舉例說明範例的範例第一層儲存裝置220、範例第二層儲存裝置225、範例第三層儲存裝置230和範例第N層儲存裝置235由具有不同性能特徵的儲存裝置實現。例如,圖2的舉例說明範例的第一層記憶體裝置220具有最高的性能特徵(例如,最高的讀取/寫入速率、最高的頻寬等),圖2的舉例說明範例的第N層記憶體裝置235具有最低的性能特徵(例如,最低的讀取/寫入速率、最低的頻寬等)。使用更高性能的記憶體裝置存在各種權衡。例如,諸如DRAM磁碟之類的低延遲儲存裝置實施起來可能非常昂貴和/或數量大時不可靠。相比之下,性能較低的記憶體裝置可以更容易地以更大的數量和/或更可靠地實現。
在圖2的舉例說明範例中,第一層儲存裝置220使用動態隨機存取記憶體(DRAM)磁碟(例如,作為儲存裝置分配和安裝在機器上的DRAM記憶體的片)來實現。圖2的舉例說明範例的範例第二層記憶體裝置225是使用持續記憶體實現的,例如,Intel® Optane™ DC持續記憶體(DCPMM)。在一些範例中,持續記憶體以「App Direct」模式操作。以此方式,第二層儲存裝置225具有略低於第一層記憶體裝置230的性能特徵。範例第三層儲存裝置230使用固態硬碟(SSD)來實現,諸如,例如Intel® Optane™ DC固態硬碟(SSD)。範例第n層儲存裝置235是使用傳統固態硬碟和/或傳統硬碟(HDD)控制記憶體裝置235來實現的。雖然在圖2的舉例說明範例中顯示了四層儲存裝置,可以額外地或替代地使用任意層數的儲存裝置。此外,可以使用不同的記憶體技術來實現儲存裝置的每一層。例如,第一層儲存裝置220可以由持續記憶體(例如,Intel® Optane™ DC持續記憶體(DCPMM))實現。
圖2的舉例說明範例的範例容器壓縮器250使用包括地標的壓縮格式構建容器的映像。在本文揭露的範例中,在壓縮格式中使用地標使得壓縮的映像層能夠被拉入不同的記憶體層以進行儲存。在本文揭露的範例中,使用了estargz壓縮格式。然而,使用地標和/或以其它方式實現層分段以載入到操作記憶體中的任何其它壓縮格式可以額外地或替代地被使用。如此,第二組層(例如,出現在地標之後的層)可以在稍後被降低優先順序和/或被放置到較慢的儲存層中。因此,在容器準備好進入運行階段之前,來自不同媒體的不同層被安裝並且容器自己的薄層被建立(例如,在最快的可用儲存裝置中)。在所述層也安裝在容器中後,就可以開始執行了。在一些範例中,範例容器壓縮器250透過用於壓縮的裝置來實現。
圖2的舉例說明範例的範例優先順序排列器270確定將要排列優先順序的容器的優先順序等級。在本文揭露的範例中,基於容器控制器275接收到的儲存容器的請求中包含的指示來確定容器的優先順序。這種指示可以由例如提交請求的使用者提供。然而,容器的優先順序可以基於任何其它標準來確定,包括例如容器的執行歷史、容器執行的操作類型等。在一些範例中,優先順序可以對應於容器執行所需的延遲、所需的服務品質(QoS)等。在一些範例中,優先順序被增強以使用Intel®資源導向技術(Intel® RDT)。在一些範例中,優先順序排列器270透過用於優先順序排列的手段來實現。
圖2的舉例說明範例的範例容器控制器275基於容器將被排列的優先順序來選擇儲存位置。使用由優先順序排列器270識別的優先順序等級,範例容器控制器275查閱優先順序映射表(例如,下面結合圖3揭露的映射表300)。容器控制器275與容器註冊表295進行通訊以將層拉到它們適當的儲存裝置。在一些範例中,範例容器控制器275透過用於控制的裝置來實現。
圖2的舉例說明範例的範例容器載入器280,響應於載入容器的請求,查閱容器註冊表278以識別第一組層在第一記憶體中的位置,並執行一或多個操作以將容器的層拉入適當的一或多個儲存裝置。在一些範例中,如果例如資料已經儲存在磁碟上(例如,映像的層已經存在於儲存中),則容器載入器280省略載入操作的執行。在這種範例中,移動命令和/或複製命令可以由容器載入器280執行以將映像的層移動和/或複製到適當的儲存媒體以供執行。在一些範例中,容器載入器280透過用於載入的裝置來實現。
圖2的舉例說明範例的範例容器執行器290一旦到地標的層已經被拉入適當的儲存並已經建立了薄的讀寫層,就會觸發容器的執行。例如,在安裝第一組層並建立和安裝薄R/W層之後,範例容器執行器290可以使用第一組層觸發容器的執行,而容器載入器280繼續載入第二組層到其餘的儲存媒體中。在一些範例中,容器執行器290透過用於執行的裝置來實現。
圖2的舉例說明範例的範例容器註冊表295長期儲存容器映像,以便局部儲存裝置不會過載。在一些範例中,容器註冊表295被稱為容器儲存庫。範例容器註冊表295透過暴露用於儲存裝置(例如,快閃記憶體、磁媒體、光學媒體、固態磁碟、硬碟等)的類REST端點來實現。此外,儲存在範例容器註冊表278中的資料包含上文結合圖1A和1B描述逐層儲存的唯讀容器映像。容器註冊表通常以targz格式將層儲存,這將反向相容estargz格式及其地標。在圖2的舉例說明範例中,範例容器註冊表278還儲存關於容器的層應該被拉入哪個儲存/記憶體媒體的指示。在一些範例中,容器註冊表278額外地儲存優先順序到以下結合圖3揭露的記憶體層映射表。
圖2的舉例說明範例的範例網路296是透過互聯網實現的。然而,範例網路296可以由促進範例容器運行時引擎201和容器註冊表295之間的資料通訊的任何其它網路來實現。在一些範例中,網路296被實現為區域網路(LAN),但是可以額外地或替代地被實現為廣域網路(WAN)、虛擬專用網路(VPN)等。在一些範例中,網路296可以代表多個網路。
圖3是記憶體層映射表300的優先順序等級,其可用於識別用於儲存容器層的位置。圖3的舉例說明範例的範例映射表300包括優先順序等級行310、第一組層的儲存位置行320和第二組層的儲存位置行330。範例映射表300包含第一列340,其識別將被儲存的高優先順序容器的第一層和第二層的(例如,分別在第一層儲存和第二層儲存中)。範例映射表300包含第二列350,其識別將被儲存的中等優先順序容器的第一層和第二層(例如,分別在第一層儲存和第三層儲存中)。範例映射表300包含第三列360,其識別將被儲存的低優先順序容器的第一層和第二層(例如,分別在第二層儲存和第三層儲存中)。
雖然在圖3的舉例說明範例中,顯示了三個優先順序等級,可以使用任意數量的優先順序等級。例如,可以使用兩等級的優先順序系統(例如,高優先順序和低優先順序)、可以使用三等級的優先順序系統(例如,高優先順序、中優先順序、低優先順序)等。作為圖3的映射表300的替代範例,在兩個優先順序等級實現中,具有第一優先順序(例如,高優先順序)的第一容器的第一層可以儲存在第一層記憶體裝置220中,而第一容器的第二層可以儲存在第二層記憶體裝置220中。在同一替代範例中,具有第二優先順序(例如,低優先順序)的第二容器的第一層可以儲存在第二層記憶體裝置225中,而第二容器的第二層可以儲存在第三層記憶體裝置230中。定義額外的優先順序等級使得能夠使用記憶體裝置層的不同組合來儲存容器的層。
此外,雖然在圖3的舉例說明範例中,為每個優先順序等級定義了兩個儲存位置,在一些範例中,可以為每個優先順序等級定義額外的儲存位置。例如,第三組層可以具有定義的各自儲存位置。在這種範例中,可以在壓縮映像內檢測多個地標以能夠識別第一、第二和第三組層。
雖然在圖2中舉例說明了實現圖2的容器層管理器205的範例方式,圖2中舉例說明的元件、程序和/或裝置中的一或多個可以用任何其它方式組合、劃分、重新佈置、省略、消除和/或實現。此外,範例容器壓縮器250、範例優先順序排列器270、範例容器控制器275、範例容器載入器280、範例容器執行器290和/或更一般地,圖2的範例容器層管理器205可以由硬體、軟體、韌體和/或硬體、軟體和/或韌體的任何組合來實現。因此,例如,圖2的範例容器壓縮器250、範例優先順序排列器270、範例容器控制器275、範例容器載入器280、範例容器執行器290和/或更一般地,範例容器層管理器205中的任何一個可由一或多個類比或數位電路、邏輯電路、可程式化處理器、可程式化控制器、圖形處理單元(GPU)、數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、可程式化邏輯裝置(PLD)和/或現場可程式化邏輯裝置(FPLD)來實現。當閱讀本專利的任何設備或系統請求項以涵蓋純軟體和/或韌體實現時,圖2的範例容器壓縮器250、範例優先順序排列器270、範例容器控制器275、範例容器載入器280、範例容器執行器290,和/或更一般地,範例容器層管理器205中的至少一個在此明確定義為包括非暫態電腦可讀取儲存裝置或儲存磁碟,諸如記憶體、數位通用磁碟(DVD)、壓縮磁碟(CD)、藍光碟等,包含軟體和/或韌體。更進一步,除了或代替圖2舉例說明的那些元件、程序和/或裝置,圖2的範例容器層管理器205可以包括一或多個元件、程序和/或裝置,和/或可以包括任何或所有舉例說明的元件、程序和裝置中的一或多個。如本文所用,短語「與…進行通訊」,包含其變體,涵蓋透過一或多個中間部件的直接通訊和/或間接通訊,並且不需要直接實體(例如,有線)通訊和/或持續通訊,而是需要還包括以周期性間隔、預定間隔、非週期性間隔和/或一次性事件的選擇性通訊。
表示用於實現圖2的容器層管理器205的範例硬體邏輯、機器可讀取指令、硬體實現的狀態機和/或其任何組合的流程顯示在圖4和/或5中。機器可讀取指令可以是由電腦處理器和/或處理器電路(如下面結合圖6討論的範例處理器平台600中所示的處理器612)執行的一或多個可執行程式或可執行程式的一部分。所述程式可以體現在儲存在非暫態電腦可讀取儲存媒體上的軟體中,如CD-ROM、軟碟、硬碟、DVD、藍光光碟或與處理器612相關的記憶體,但整個程式和/或其部分可以替代地由除了處理器612之外的裝置執行和/或體現在韌體或專用硬體中。此外,雖然參考圖4和/或圖5中舉例說明的流程圖描述了範例程式,但是,可以替代地使用實現範例容器層管理器205的許多其它方法。例如,可以改變方塊的執行順序,和/或可以改變、消除或組合所描述的一些方塊。額外地或替代地,任何或所有方塊可以由一或多個硬體電路(例如,分立和/或整合類比和/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)被構造成在不執行軟體或韌體的情況下執行對應的操作。處理器電路可以分佈在不同的網路位置和/或一或多個裝置的局部(例如,單一機器中的多核心處理器、跨伺服器機架分佈的多個處理器等)。
本文描述的機器可讀取指令可以用壓縮格式、加密格式、分段格式、編譯格式、可執行格式、封包格式等中的一或多種儲存。如本文描述的機器可讀取指令可以儲存為可用於建立、製造和/或產生機器可執行指令的資料或資料結構(例如,指令的部分、碼、碼的表示等)。例如,機器可讀取指令可以被分段並儲存在位於網路或網路集合的相同或不同位置(例如,在雲端中、在邊緣裝置等)的一或多個儲存裝置和/或計算裝置(例如,伺服器)。機器可讀取指令可能需要安裝、修改、改編、更新、組合、補充、配置、解密、解壓縮、解封包、分發、重新分配、編譯等中的一項或多項,以使其直接可讀、可解釋和/或可由計算裝置和/或其它機器執行。例如,機器可讀取指令可以儲存在多個部分中,這些部分被單獨壓縮、加密並儲存在單獨的計算裝置上,其中這些部分在解密、解壓縮和組合時形成一組實現可以一起形成程式(諸如本文描述的程式)一或多個功能的可執行指令。
在另一個範例中,機器可讀取指令可以被儲存在它們可以被處理器電路讀取的狀態中,但是需要添加程式庫(例如,動態鏈接程式庫(DLL))、軟體開發工具包(SDK)、應用程式程式化介面(API)等,以便在特定計算裝置或其它裝置上執行指令。在另一個範例中,在機器可讀取指令和/或對應的程式可以全部或部分執行之前,可能需要配置機器可讀取指令(例如,儲存的設置、資料輸入、記錄的網路位址等)。因此,本文使用的機器可讀取媒體可以包括機器可讀取指令和/或程式,而不管機器可讀取指令和/或程式在儲存或以其它方式靜止或傳輸時的特定格式或狀態。
本文描述的機器可讀取指令可以用任何過去、現在或將來的指令語言、腳本語言、程式化語言等來表示。例如,可以使用以下語言中的任一種來表示機器可讀取指令:C、C++、Java、C#、Perl、Python、JavaScript、超文件標記語言(HTML)、結構化查詢語言(SQL)、Swift、Go等。
如上所述,圖4和/或圖5的範例程序可以使用儲存在非暫態電腦和/或機器可讀取媒體,諸如硬碟、快閃記憶體、唯讀記憶體、光碟、數位多功能磁碟、快取、隨機存取記憶體和/或任何其它儲存裝置或儲存磁碟,其中資訊儲存任何持續時間(例如,用於延長的時間段、永久地、用於簡要事例、用於臨時緩衝和/或快取資訊)上的可執行指令(例如,電腦和/或機器可讀取指令)來實現。如本文所使用的,非暫態電腦可讀取媒體之用語被明確地定義為包括任何類型的電腦可讀取儲存裝置和/或儲存磁碟並且不包括傳播訊號並且不包括傳輸媒體。
「包括」和「包含」(及其所有形式和時態)在本文中用作開放式用語。因此,每當請求項採用任何形式的「包括」或「包含」(例如,包含(comprises)、包括(includes)、包含(comprising)、包括(including)、具有(having)等),作為序言或在任何類型的請求項敘述中時,應理解為在不超出對應請求項或陳述的範圍的情況下,可以存在額外的元件、用語等。如本文所用,當短語「至少」用作例如請求項的序言中的過渡用語時,它以與開放式用語「包含」和「包括」相同的方式為開放式。用語「和/或」,當以諸如A、B和/或C的形式使用時是指A、B、C的任何組合或子集,諸如(1)A單獨、(2)B單獨(3)C單獨(4)A與B、(5)A與C、(6)B與C、以及(7)A與B和C。如本文在描述結構、部件、項目、物件和/或事物的上下文中所用,短語「A和B中的至少一個」意於指代包括(1)至少一個A、(2)至少一個B和(3)至少一個A和至少一個B中的任何實現。類似地,如本文在描述結構、部件、項目、物件和/或事物的上下文中所用,短語「A或B中的至少一個」意於指代包括(1)至少一個A、(2)至少一個B和(3)至少一個A和至少一個B中的任何實現。如本文在描述程序的性能或執行、指令、動作、活動和/或步驟的上下文中所用,短語「A和B中的至少一個」意於指代包括(1)至少一個A、(2)至少一個B和(3)至少一個A和至少一個B中的任何實現。類似地,如本文在描述程序的性能或執行、指令、動作、活動和/或步驟的上下文中所用,短語「A或B中的至少一個」意於指代包括(1)至少一個A、(2)至少一個B和(3)至少一個A和至少一個B中的任何實現。
如本文所用,單數參照(例如,「一個」、「一者」、「第一」、「第二」等)不排除複數。如本文所用,用語「一個」或「一者」實體是指所述實體中的一或多個。用語「一個」(或「一者」)、「一或多個」和「至少一個」在本文中可以互換使用。此外,儘管單獨列出,但是複數個裝置、元件或方法動作可以由例如單一單元或處理器來實現。此外,雖然單獨的特徵可能被包括在不同的範例或請求項中,但這些可能被組合,並且包括在不同的範例或請求項中並不意味著特徵的組合是不可行的和/或沒有優勢的。
圖4是表示可以被執行以實現圖2的範例計算系統以壓縮和儲存映像的範例機器可讀取指令的流程圖。圖4的舉例說明範例的範例程序400在範例容器壓縮器250使用包括地標的壓縮格式構建容器的映像時開始(方塊410)。在本文揭露的範例中,在壓縮格式中使用地標使得壓縮映像的層能夠被分段成不同的記憶體層以進行儲存。作為分段的因此,不同的段可以基於它們的優先順序被請求和/或被拉入儲存裝置的各個層(例如,第一層儲存裝置220、第二層儲存裝置225、第三層儲存裝置230、第n層儲存裝置235等)。在本文揭露的範例中,使用了estargz壓縮格式。然而,使用地標和/或以其它方式實現層分段以載入到操作記憶體中的任何其它壓縮格式可以額外地或替代地被使用。範例容器壓縮器250將用於儲存的映像傳輸到容器註冊表295(方塊420)。圖4的範例程序400終止,但可以在例如構建用於儲存在容器註冊表295中的映像的後續請求時重複。
圖5是表示可以被執行以實現圖2的範例計算系統以載入用於執行的容器的範例機器可讀取指令的流程圖。圖5的舉例說明範例的範例程序500在範例容器控制器275識別將被載入用於執行的容器時開始(方塊505)。可以基於例如從使用者或從任何其它實體接收到的執行容器的請求來識別容器。
範例優先順序排列器270確定容器要被排列優先順序的優先順序等級(方塊510)。在本文揭露的範例中,基於包括在執行容器的請求中的指示來確定容器的優先順序。這種指示可以由例如提交容器執行請求的使用者提供。然而,容器的優先順序可以基於任何其它標準來確定,包括例如容器執行的歷史、容器執行的操作類型等。在一些範例中,優先順序可以對應於容器執行所需的延遲、所需的服務品質(QoS)等。
範例容器控制器275基於由優先順序排列器270識別的優先順序等級來識別容器映像的第一組層的第一預期位置(方塊515)。在一些範例中,容器控制器275查閱優先順序映射表(例如,圖3的映射表300,其可以儲存在容器註冊表295中或替代地儲存在容器運行時引擎201的局部記憶體和/或儲存裝置中)來識別第一組層的第一預期位置。在本文揭露的範例中,可以使用任何數量的優先順序等級。例如,可以使用兩等級的優先順序系統(例如,高優先順序和低優先順序)、可以使用三等級的優先順序系統(例如,高優先順序、中優先順序、低優先順序)等。作為範例,在兩個優先順序等級實現中,具有第一優先順序(例如,高優先順序)的第一容器的第一層可以儲存在第一層記憶體裝置220中,而第一容器的第二層可以儲存在第二層記憶體裝置225中。在同一範例中,具有第二優先順序(例如,低優先順序)的第二容器的第一層可以儲存在第二層記憶體裝置225中,而第二容器的第二層可以儲存在第三層記憶體裝置230中。定義額外的優先順序等級使得能夠使用記憶體裝置層的不同組合來儲存容器的層。
範例容器載入器280確定第一組層是否存在於第一預期位置(方塊520)。如果範例容器載入器280確定第一組層存在於第一預期位置(例如,方塊520返回是的結果),則範例容器載入器280從第一預期位置安裝第一組層(方塊525)。以此方式,第一組層可以從儲存裝置的選定層開始執行,而其餘層被載入(或檢索)。
如果範例容器載入器280確定第一組層不存在於第一預期位置(例如,方塊520返回否的結果),則範例容器載入器280確定映像的第一組層是否存在於容器運行時引擎201的另一個儲存裝置上(方塊530)。如果映像的第一組層不存在於容器運行時引擎201的另一個儲存裝置上(例如,方塊530返回否的結果),則範例容器控制器275從容器註冊表中拉出第一組層到第一預期位置(方塊535)。範例容器載入器280接著從第一預期位置安裝第一組層(方塊525)。
在一些範例中,容器的第一組層可能尚未存在於第一預期位置處(例如,方塊520返回否的結果),但可能存在於容器運行時引擎201的不同儲存裝置中(例如,方塊530返回是的結果)。在一些範例中,這種情況可能是容器的優先順序改變的結果。可以進行這種改變以增加容器的優先順序(例如,致使從更快的儲存裝置載入層),或者可以進行降低容器的優先順序等級(例如,致使層從較慢的儲存裝置載入)。
如果範例容器載入器280確定映像的第一組層,雖然不存在於第一預期位置中,但存在於容器運行時引擎201的另一位置中(例如,方塊530返回是的結果),則範例容器載入器280從當前位置安裝第一組層(方塊540)。在這種範例中,與從容器註冊表295中拉出第一組層相比,使用來自當前位置的第一組層不僅會致使改進的載入性能,而且還可以節省網路頻寬,否則這些頻寬會因拉取來自容器註冊表295的第一組層而消耗。
在從它們的當前位置安裝第一組層之後(方塊540),範例容器載入器280將第一組層移動和/或複製到第一預期位置(方塊545)。這種移動/複製操作在背景執行,並確保在後續請求執行容器時,第一組層將出現在第一預期位置。在一些範例中,在將第一組層移動/複製到第一預期位置之後,從第一預期位置重新安裝第一組層。在一些替代範例中,第一組層首先被移動到第一預期位置並從那裡安裝(例如,而不是在第一組層被移動/複製到第一預期位置時從當前位置安裝)。
在安裝第一組層時(例如,從方塊525處的第一預期位置或從方塊540處的當前位置),範例容器執行器290開始容器的執行(方塊550)。在一些範例中,使容器執行器290執行容器包含初始化薄讀取/寫入層。如此,因為安裝了第一組層,並且可以從使用記憶體技術實現的第一儲存裝置來實現,所述記憶體技術與第二儲存裝置相比提供改進的性能(例如,其中映像的第二組層可以被儲存),容器的重要部件可以更快地安裝以供執行,而容器的較不重要的部件可以用延遲的方式安裝和/或可用延遲的方式用於執行。這種方法減少了容器執行的冷啟動時間。
範例容器控制器275基於由優先順序排列器270在方塊515識別的優先順序等級來識別容器映像的第二組層的第二預期位置(方塊555)。在一些範例中,第二組層的第二預期位置的識別可以與第一組層的第一預期位置的識別同時執行。換句話說,在識別了容器的優先順序等級之後,範例控制器275可以確定容器映像的層預計將被儲存在其中的每個位置。
範例容器載入器280確定第二組層是否存在於第二預期位置(方塊560)。如果範例容器載入器280確定第二組層存在於第二預期位置(例如,方塊560返回是的結果),則範例容器載入器280從第一預期位置安裝第二組層(方塊565)。如此,第二組層可以作為容器執行的一部分被存取。雖然在圖5舉例說明的範例中,第二組層從第二預期位置安裝。在一些範例中,第二預期位置可以對應於雖然對於第二組層的儲存有效但對於第二組層的執行效率低的儲存裝置。因此,在一些範例中,代替從第二預期位置直接安裝第二組層,範例容器載入器280可以將第二組層複製到另一位置以供安裝。換句話說,如果第二預期位置對應於第三層儲存裝置230,則可以將第二組層複製到第二層儲存裝置225(或第一層儲存裝置220)以供安裝和執行。在容器執行之後,第二組層可以從它們被臨時複製以執行的位置刪除。
如果範例容器載入器280確定第二組層不存在於第二預期位置(例如,方塊560返回否的結果),則範例容器載入器280確定映像的第二組層是否存在於容器運行時引擎201的另一個儲存裝置上(方塊570)。如果映像的第二組層不存在於容器運行時引擎201的另一個儲存裝置上(例如,方塊570返回否的結果),則範例容器控制器275從容器註冊表中拉出第二組層到第二預期位置(方塊575)。範例容器載入器280接著從第二預期位置安裝第二組層(方塊565)。
在一些範例中,容器的第二組層可能尚未存在於第二預期位置處(例如,方塊560返回否的結果),但可能存在於容器運行時引擎201的不同儲存裝置中(例如,方塊570返回是的結果)。在一些範例中,這種情況可能是容器的優先順序等級改變的結果。可以進行這種改變以增加容器的優先順序等級(例如,致使層從較快的儲存裝置載入),或者可以進行降低容器的優先順序等級(例如,致使層從較慢的儲存裝置載入)。
如果範例容器載入器280確定映像的第二組層雖然不存在於第二預期位置中,但存在於容器運行時引擎201的另一位置中(例如,方塊530返回是的結果),則範例容器載入器280從當前位置安裝第二組層(方塊580)。在這種範例中,與從儲存庫中拉取第二組層相比,使用來自當前位置的第二組層不僅會提高載入性能,而且還可以節省網路頻寬,否則這些頻寬會因拉取來自容器註冊表295的第二組層而消耗。
在從它們的當前位置安裝第二組層之後(方塊580),範例容器載入器280將第二組層移動和/或複製到第二預期位置(方塊585)。這種移動/複製操作在背景執行,並確保在後續請求執行容器時,第二組層將出現在第二預期位置。在一些範例中,在將第二組層移動/複製到第二預期位置之後,從第二預期位置重新安裝第二組層。在一些替代範例中,第二組層被第二次移動到第二預期位置並從那裡安裝(例如,而不是在第二組層被移動/複製到第二預期位置的同時從當前位置安裝)。
在安裝第二組層時(例如,從方塊525的第二預期位置或從方塊540的當前位置),範例容器執行器290使用第二組層中的層(必要時其以延遲方式安裝)繼續執行容器。如上所述,這種方法減少了容器執行的冷啟動時間。圖5的範例程序500接著終止(例如,當容器的執行繼續時)。圖5的範例程序500可以例如根據對容器執行的後續請求來重複。
例如,如果接收到對容器執行的後續(例如,第二)請求,並且初始請求係用以請求執行容器並且已經改變了容器的優先順序等級(例如,致使第一組層和/或第二組層分別移動到新的預期位置,如方塊540、545、580、585中所述),容器在第二請求的上下文中的執行將致使來自預期位置的層的安裝(例如,方塊525、565)。因此,與響應第一請求開始執行的時間相比,響應第二請求開始執行的時間得到改善,因為第一和/或第二組層到它們的新預期位置的移動不再是必要的。因此,雖然經由執行容器的請求指示的容器優先順序的改變可能不會影響響應於所述請求的容器的載入和/或執行,但是容器的後續執行可以受益於調整後的優先順序等級。
雖然在圖5的舉例說明範例中,在儲存容器映像的層的位置的調整係在執行容器的請求的上下文中進行,這種調整不需要僅響應於這種請求而執行,並且在一些範例中可以是在指示要更改容器的優先順序等級之後執行。換言之,第一組層和/或第二組層的位置可以獨立於執行與層相關的容器的請求而改變。
圖6是被構造為執行圖4和/或圖5的指令以實現圖2的容器層管理器205的範例處理器平台200的方塊圖。處理器平台600可以是例如伺服器、個人電腦、工作站、自學習機器(例如,神經網路)、行動裝置(例如,手機、智慧型電話、平板電腦,如iPad
TM)、個人數位助理(PDA)、互聯網裝置、DVD播放器、CD播放器、數位錄影機、藍光播放器、遊戲機、個人錄影機、機上盒、耳機或其它可穿戴裝置,或任何其它類型的計算裝置。
舉例說明範例的處理器平台600包括處理器612。舉例說明範例的處理器612是硬體。例如,處理器612可以由來自任何所需系列或製造商的一或多個積體電路、邏輯電路、微處理器、GPU、DSP或控制器來實現。硬體處理器可以是基於半導體(例如,基於矽)的裝置。在此範例中,處理器實現範例容器壓縮器250、範例優先順序排列器270、範例容器控制器275、範例容器載入器280和範例容器執行器290。
舉例說明範例的處理器612包括局部記憶體613(例如,快取記憶體)。舉例說明範例的處理器612經由匯流排618與包括揮發性記憶體614和非揮發性記憶體616的主記憶體進行通訊。揮發性記憶體614可以由同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS®動態隨機存取記憶體(RDRAM®)和/或任何其它類型的隨機存取記憶體裝置實現。非揮發性記憶體616可以由快閃記憶體和/或任何其它所需類型的記憶體裝置來實現。對主記憶體614、616的存取由記憶體控制器控制。
舉例說明範例的處理器平台600還包括介面電路620。介面電路620可以透過任何類型的介面標準來實現,如乙太網路介面、通用串列匯流排(USB)、藍牙(Bluetooth®)介面、近場通訊(NFC)介面和/或PCI Express介面。
在舉例說明範例中,一或多個輸入裝置622連接到介面電路620。輸入裝置622允許使用者將資料和/或命令輸入到處理器612中。輸入裝置可以透過例如音訊感測器、麥克風、相機(靜止或視訊)、鍵盤、按鈕、滑鼠、觸控螢幕、觸控板、軌跡球、等值點(isopoint)和/或語音識別系統來實現。
一或多個輸出裝置624也連接到舉例說明範例的介面電路620。輸出裝置624可以例如由顯示裝置(例如,發光二極體(LED)、有機發光二極體(OLED)、液晶顯示器(LCD)、陰極射線管顯示器(CRT)、橫向電場效應(IPS)顯示器、觸控螢幕等)、觸覺輸出裝置、印表機和/或揚聲器。因此,舉例說明範例的介面電路620通常包括圖形驅動卡、圖形驅動晶片和/或圖形驅動處理器。
舉例說明範例的介面電路620還包括諸如發射器、接收器、收發器、數據機、住宅閘道器、無線存取點和/或網路介面的通訊裝置以促進經由網路626與外部機器(例如,任何種類的計算裝置)的資料交換。通訊可以例如經由乙太網路連接、數位用戶線(DSL)連接、電話線連接、同軸電纜系統、衛星系統、定位線(line-of-site)無線系統、蜂巢式電話系統等。
舉例說明範例的處理器平台600還包括用於儲存軟體和/或資料的一或多個大容量儲存裝置628。這種大容量儲存裝置628的範例包括軟碟驅動器、硬碟磁碟、光碟驅動器、藍光光碟驅動器、獨立磁碟冗餘陣列(RAID)系統和數位多功能磁碟(DVD)驅動器。
圖4和/或圖5的機器可執行指令632可以儲存在大容量儲存裝置628、揮發性記憶體614、非揮發性記憶體616和/或可移動非暫態電腦可讀取儲存媒體(諸如CD或DVD)上。
舉例說明用於分發諸如圖6的範例電腦可讀取指令632的軟體到圖7舉例說明的第三方的範例軟體分發平台705的方塊圖。範例軟體分發平台705可以由能夠儲存軟體並將軟體傳輸到其它計算裝置的任何電腦伺服器、資料設施、雲端服務等來實現。第三方可以是擁有和/或經營軟體分發平台的實體的客戶。例如,擁有和/或經營軟體分發平台的實體可以是諸如圖6的範例電腦可讀取指令632的軟體的開發者、銷售者和/或授權人。第三方可以是消費者、使用者、零售商、OEM等,其購買和/或授權軟體以供使用和/或轉售和/或再授權。在舉例說明範例中,軟體分發平台705包括一或多個伺服器和一或多個儲存裝置。儲存裝置儲存電腦可讀取指令632,其可以對應於圖4和/或圖5的範例電腦可讀取指令400和/或500,如上所述。範例軟體分發平台705的一或多個伺服器與網路710進行通訊,所述網路可以對應於任何一或多個網際網路和/或上述範例網路626中的任何一個。在一些範例中,一或多個伺服器響應於請求將軟體傳輸到請求方作為商業交易的一部分。軟體的交貨、銷售和/或授權的支付可由軟體分發平台的一或多個伺服器和/或經由第三方支付實體處理。伺服器使購買者和/或授權人能夠從軟體分發平台705下載電腦可讀取指令632。例如,可以對應於圖6的範例電腦可讀取指令632的軟體可以被下載到範例處理器平台600,其將執行電腦可讀取指令632以實現容器層管理器205。在一些範例中,軟體分發平台705的一或多個伺服器週期性地提供、傳輸和/或強制更新軟體(例如,圖6的範例電腦可讀取指令632)以確保改進、補丁、更新等被分發並應用於終端使用者裝置處的軟體。
圖8是舉例說明作為使用本文揭露的範例方法的結果的範例性能改進的圖。圖8表示用於執行一百六十八個並行功能(例如,容器)的直方圖800。範例直方圖800包括表示頻率的縱軸810、表示時間段的橫軸820和兩個資料集830、840。第一資料集830表示被更頻繁地執行並因此導致較高優先順序等級的函數(例如,容器)。第二資料集840表示執行頻率較低(例如,比由第一資料集表示的功能)並因此導致較低優先順序等級的函數(例如,容器)。一般來說,具有較高優先順序等級的函數表現出更快的執行。
從上文可以理解,已經揭露了範例方法、設備和製品,其能夠將容器有效地載入到操作記憶體中以供執行。本文揭露的範例方法使得容器的映像的部分能夠被儲存在具有不同性能特徵的單獨的記憶體中,並且因此能夠以優先順序排列的方式載入容器映像的立即執行容器所需的部分。這種優先順序排列能夠改進此類容器的載入和/或執行時間。所揭露的方法、設備和製品透過使映像能夠被載入到操作記憶體中以便以更有效的方式執行來提高使用計算裝置的效率。所揭露的方法、設備和製品因此針對電腦功能的一或多個改進。
儘管本文揭露了某些範例方法、設備和製品,但本專利的覆蓋範圍不限於此。相反,本專利涵蓋了相當落入本專利的請求項的範圍內的所有方法、設備和製品。
本文揭露了載入容器映像的範例方法、設備、系統和製品。進一步的範例及其組合包括下列:
範例1包含一種管理容器映像的設備,所述設備包含排定優先順序排列器,其用以確定容器將要執行的優先順序等級、容器控制器,其用以確定所述容器的第一組層的第一預期位置,所述容器控制器用以確定所述容器的第二組層的第二預期位置,所述第一預期位置和所述第二預期位置基於所述確定的優先順序等級來確定,所述第二組層在映像中透過地標與所述第一組層分開、容器載入器,其用以從所述第一預期位置安裝所述第一組層,以及容器執行器,其用以基於所述安裝的第一組層啟動所述容器的執行。
範例2包括範例1的設備,還包括容器壓縮器,其用以使用包括所述地標的壓縮格式來構建所述容器的所述映像。
範例3包括範例1的設備,其中所述容器控制器用以將所述第一組層從容器註冊表拉到所述第一預期位置,所述容器控制器用以將所述第二組層從所述容器註冊表拉到所述第二預期位置。
範例4包括範例1的設備,其中所述容器執行器用以在所述容器載入器已經安裝所述第二組層之前,基於所述第一組層觸發所述容器的執行。
範例5包括範例1的設備,其中所述第一預期位置識別第一儲存裝置。
範例6包括範例5的設備,其中所述第一儲存裝置係使用動態隨機存取記憶體來實現。
範例7包括範例5的設備,其中所述第二預期位置識別與所述第一儲存裝置不同的第二儲存裝置。
範例8包括範例7的設備,其中所述第二儲存裝置係透過持續記憶體實現。
範例9包含至少一種包含指令的電腦可讀取媒體,當執行所述指令時使至少一個處理器至少用以確定容器將要執行的優先順序等級,確定所述容器的第一組層的第一預期位置,確定所述容器的第二組層的第二預期位置,所述第一預期位置和所述第二預期位置基於所述確定的優先順序等級來確定,所述第二組層在映像中透過地標與所述第一組層分開,從所述第一預期位置安裝所述第一組層,以及基於所述第一組層啟動所述容器的執行。
範例10包括範例9的至少一種非暫態電腦可讀取媒體,其中當執行所述指令時使所述至少一個處理器用以使用包括地標的壓縮格式來構建所述容器的所述映像。
範例11包括範例9的至少一種非暫態電腦可讀取媒體,其中當執行所述指令時使所述至少一個處理器用以響應於所述第一組層不存在於所述第一預期位置的第一確定,將所述第一組層從容器註冊表拉到所述第一預期位置,以及響應於所述第二組層不存在於所述第二預期位置的第二確定,將所述第二組層從所述容器註冊表拉到所述第二預期位置。
範例12包括範例9的至少一種非暫態電腦可讀取媒體,其中當執行所述指令時使所述至少一個處理器用以在所述基於所述第一組層啟動所述容器的所述執行之後從所述第二預期位置安裝所述第二組層。
範例13包括範例9的至少一種非暫態電腦可讀取媒體,其中所述第一預期位置識別第一儲存裝置。
範例14包括範例13的至少一種非暫態電腦可讀取媒體,其中所述第一儲存裝置係使用動態隨機存取記憶體來實現。
範例15包括範例13的至少一種非暫態電腦可讀取媒體,其中所述第二預期位置識別與所述第一儲存裝置不同的第二儲存裝置。
範例16包括範例15的至少一種非暫態電腦可讀取媒體,其中所述第二儲存裝置係持續記憶體。
範例17包含一種管理容器映像的方法,所述方法包含確定容器將要執行的優先順序等級,確定所述容器的第一組層的第一預期位置,透過利用處理器執行指令來確定所述容器的第二組層的第二預期位置,所述第一預期位置和所述第二預期位置基於所述確定的優先順序等級來確定,從所述第一預期位置安裝所述第一組層,以及基於所述第一組層啟動所述容器的執行。
範例18包括範例17的方法,還包括使用包括地標的壓縮格式來構建所述容器的所述映像。
範例19包括範例17的方法,還包括響應於所述第一組層不存在於所述第一預期位置的第一確定,將所述第一組層從容器註冊表拉到所述第一預期位置,以及響應於所述第二組層不存在於所述第二預期位置的第二確定,將所述第二組層從所述容器註冊表拉到所述第二預期位置。
範例20包括範例17的方法,還包括在所述基於所述第一組層啟動所述容器的所述執行之後從所述第二預期位置安裝所述第二組層。
範例21包含一種管理容器映像的設備,所述設備包含用於排定優先順序的裝置,其用以確定容器將要執行的優先順序等級、用於控制的裝置,其用以確定所述容器的第一組層的第一預期位置,所述用於控制的裝置用以確定所述容器的第二組層的第二預期位置,所述第一預期位置和所述第二預期位置基於所述確定的優先順序等級來確定,所述第二組層在映像中透過地標與所述第一組層分開、用於載入的裝置,其用以從所述第一預期位置安裝所述第一組層,以及用於執行的裝置,其用以基於所述安裝的第一組層啟動所述容器的執行。
範例22包括範例21的設備,還包括用於壓縮的裝置,其用以使用包括所述地標的壓縮格式來構建所述容器的所述映像。
範例23包括範例21的設備,其中所述用於控制的裝置用以將所述第一組層從容器註冊表拉到所述第一預期位置,所述用於控制的裝置用以將所述第二組層從所述容器註冊表拉到所述第二預期位置。
範例24包括範例21的設備,其中所述用於執行的裝置用以在用於載入的裝置已經安裝所述第二組層之前,基於所述第一組層觸發所述容器的執行。
範例25包括範例21的設備,其中所述第一預期位置識別第一儲存裝置。
範例26包括範例25的設備,其中所述第一儲存裝置係使用動態隨機存取記憶體來實現。
範例27包括範例25的設備,其中所述第二預期位置識別與所述第一儲存裝置不同的第二儲存裝置。
範例28包括範例27的設備,其中所述第二儲存裝置係透過持續記憶體實現。
以下請求項特此透過此參照結合到本詳細說明中,其中每個請求項獨立作為本揭露的單獨實施例。
110:容器映像
120:容器映像
131:第一層
132:第二層
133:第三層
134:第四層
135:第五層
140:目錄
145:頁腳
150:地標
151:容器
160:薄層
170:映像層
171:第一層
172:第二層
173:第三層
174:第四層
200:處理器平台
201:容器運行時引擎
205:容器層管理器
207:計算資源
220:第一層儲存裝置
225:第二層儲存裝置
230:第三層儲存裝置
235:第n層儲存裝置
250:容器壓縮器
270:優先順序排列器
275:容器控制器
280:容器載入器
290:容器執行器
295:容器註冊表
296:網路
300:映射表
310:優先順序等級行
320:第一組層的儲存位置行
330:第二組層的儲存位置行
340:第一列
350:第二列
360:第三列
400:程序
410:方塊
420:方塊
500:程序
505:方塊
510:方塊
515:方塊
520:方塊
525:方塊
530:方塊
535:方塊
540:方塊
545:方塊
550:方塊
555:方塊
560:方塊
565:方塊
570:方塊
575:方塊
580:方塊
585:方塊
600:處理器平台
612:處理器
613:局部記憶體
614:揮發性記憶體
616:非揮發性記憶體
618:匯流排
620:介面電路
622:輸入裝置
624:輸出裝置
626:網路
628:大容量儲存裝置
632:機器可執行指令
705:軟體分發平台
710:網路
800:直方圖
810:縱軸
820:橫軸
830:第一資料集
840:第二資料集
[圖1A]是舉例說明不包括地標的第一範例容器映像和包括地標的第二範例容器映像的方塊圖。
[圖1B]是舉例說明範例容器的方塊圖。
[圖2]是根據本揭露的教示以實現容器映像的延遲載入的範例計算系統的方塊圖。
[圖3]是可用以識別用於儲存容器層的位置的記憶體層映射表的範例優先順序等級。
[圖4]是表示可以被執行以實現圖2的範例計算系統以壓縮和儲存容器的範例機器可讀取指令的流程圖。
[圖5]是表示可以被執行以實現圖2的範例計算系統以載入用於執行的容器的範例機器可讀取指令的流程圖。
[圖6]是被構造為執行圖4和/或圖5的指令以實現圖2的範例計算系統的範例處理器平台的方塊圖。
[圖7]是用以將軟體(例如,對應於圖4和/或圖5的範例電腦可讀取指令的軟體)分發給諸如消費者的用戶端裝置(例如,用於授權、銷售和/或使用)、零售商(例如,用於銷售、轉售、授權和/或再授權)和/或原始設備製造商(OEM)(例如,用於包括在要分發給例如零售商和/或直接購買客戶)的範例軟體分發平台的方塊圖。
[圖8]是舉例說明作為使用本文揭露的範例方法的結果的範例性能改進的圖。
這些圖不是按比例繪製的。通常,貫穿附圖和隨附的書面描述將使用相同的參考符號來指代相同或相似的部件。
除非另有特別說明,諸如「第一」、「第二」、「第三」等的描述詞在本文中使用而不以任何方式強加或指示優先順序、實體順序、列表中的排列和/或排序的任何含義,而是僅用作標籤和/或任意名稱來區分元件,以便於理解所揭露的範例。在一些範例中,描述詞「第一」可用於指詳細描述中的元件,而相同的元件可在請求項中用不同的描述詞來指代,諸如「第二」或「第三」。在這種情況下,應當理解,這種描述詞僅用於清楚地識別那些可能例如共享相同名稱的元件。
207:計算資源
250:容器壓縮器
270:優先順序排列器
275:容器控制器
280:容器載入器
290:容器執行器
600:處理器平台
612:處理器
613:局部記憶體
614:揮發性記憶體
616:非揮發性記憶體
618:匯流排
620:介面電路
622:輸入裝置
624:輸出裝置
626:網路
628:大容量儲存裝置
632:機器可執行指令
Claims (25)
- 一種管理容器映像的設備,所述設備包含: 優先順序排列器,其用以確定容器將要執行的優先順序等級; 容器控制器,其用以確定所述容器的第一組層的第一預期位置,所述容器控制器用以確定所述容器的第二組層的第二預期位置,所述第一預期位置和所述第二預期位置基於所述確定的優先順序等級來確定,所述第二組層在映像中透過地標與所述第一組層分開; 容器載入器,其用以從所述第一預期位置安裝所述第一組層;以及 容器執行器,其用以基於所述安裝的第一組層啟動所述容器的執行。
- 如請求項1的設備,還包括容器壓縮器,其用以使用包括所述地標的壓縮格式來構建所述容器的所述映像。
- 如請求項1的設備,其中所述容器控制器用以將所述第一組層從容器註冊表拉到所述第一預期位置,所述容器控制器用以將所述第二組層從所述容器註冊表拉到所述第二預期位置。
- 如請求項1的設備,其中所述容器執行器用以在所述容器載入器已經安裝所述第二組層之前,基於所述第一組層觸發所述容器的執行。
- 如請求項1-4中任一項的設備,其中所述第一預期位置識別第一儲存裝置。
- 如請求項5的設備,其中所述第一儲存裝置係使用動態隨機存取記憶體來實現。
- 如請求項5的設備,其中所述第二預期位置識別與所述第一儲存裝置不同的第二儲存裝置。
- 如請求項7的設備,其中所述第二儲存裝置係透過持續記憶體實現。
- 一種包含指令的電腦可讀取媒體,當執行所述指令時使至少一個處理器至少用以: 確定容器將要執行的優先順序等級; 確定所述容器的第一組層的第一預期位置; 確定所述容器的第二組層的第二預期位置,所述第一預期位置和所述第二預期位置基於所述確定的優先順序等級來確定,所述第二組層在映像中透過地標與所述第一組層分開; 從所述第一預期位置安裝所述第一組層;以及 基於所述第一組層啟動所述容器的執行。
- 如請求項9的電腦可讀取媒體,其中當執行所述指令時使所述至少一個處理器用以使用包括地標的壓縮格式來構建所述容器的所述映像。
- 如請求項9的電腦可讀取媒體,其中當執行所述指令時使所述至少一個處理器用以: 響應於所述第一組層不存在於所述第一預期位置的第一確定,將所述第一組層從容器註冊表拉到所述第一預期位置;以及 響應於所述第二組層不存在於所述第二預期位置的第二確定,將所述第二組層從所述容器註冊表拉到所述第二預期位置。
- 如請求項9的電腦可讀取媒體,其中當執行所述指令時使所述至少一個處理器用以在所述基於所述第一組層啟動所述容器的所述執行之後從所述第二預期位置安裝所述第二組層。
- 如請求項9至13中任一項的電腦可讀取媒體,其中所述第一預期位置識別第一儲存裝置。
- 如請求項13的電腦可讀取媒體,其中所述第一儲存裝置係使用動態隨機存取記憶體來實現。
- 如請求項13的電腦可讀取媒體,其中所述第二預期位置識別與所述第一儲存裝置不同的第二儲存裝置。
- 如請求項15的電腦可讀取媒體,其中所述第二儲存裝置係持續記憶體。
- 一種管理容器映像的方法,所述方法包含: 確定容器將要執行的優先順序等級; 確定所述容器的第一組層的第一預期位置; 透過利用處理器執行指令來確定所述容器的第二組層的第二預期位置,所述第一預期位置和所述第二預期位置基於所述確定的優先順序等級來確定; 從所述第一預期位置安裝所述第一組層;以及 基於所述第一組層啟動所述容器的執行。
- 如請求項17的方法,還包括使用包括地標的壓縮格式來構建所述容器的所述映像。
- 如請求項17的方法,還包括: 響應於所述第一組層不存在於所述第一預期位置的第一確定,將所述第一組層從容器註冊表拉到所述第一預期位置;以及 響應於所述第二組層不存在於所述第二預期位置的第二確定,將所述第二組層從所述容器註冊表拉到所述第二預期位置。
- 如請求項17的方法,還包括在所述基於所述第一組層啟動所述容器的所述執行之後從所述第二預期位置安裝所述第二組層。
- 一種管理容器映像的設備,所述設備包含: 用於排定優先順序的裝置,其用以確定容器將要執行的優先順序等級; 用於控制的裝置,其用以確定所述容器的第一組層的第一預期位置,所述用於控制的裝置用以確定所述容器的第二組層的第二預期位置,所述第一預期位置和所述第二預期位置基於所述確定的優先順序等級來確定,所述第二組層在映像中透過地標與所述第一組層分開; 用於載入的裝置,其用以從所述第一預期位置安裝所述第一組層;以及 用於執行的裝置,其用以基於所述安裝的第一組層啟動所述容器的執行。
- 如請求項21的設備,還包括用於壓縮的裝置,其用以使用包括所述地標的壓縮格式來構建所述容器的所述映像。
- 如請求項21的設備,其中所述用於控制的裝置用以將所述第一組層從容器註冊表拉到所述第一預期位置,所述用於控制的裝置用以將所述第二組層從所述容器註冊表拉到所述第二預期位置。
- 如請求項21的設備,其中所述用於執行的裝置用以在用於載入的裝置已經安裝所述第二組層之前,基於所述第一組層觸發所述容器的執行。
- 如請求項21至24中任一項的設備,其中所述第一預期位置識別第一儲存裝置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/133,015 US20210208863A1 (en) | 2020-12-23 | 2020-12-23 | Methods and apparatus for loading of a container image |
US17/133,015 | 2020-12-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202225963A true TW202225963A (zh) | 2022-07-01 |
Family
ID=76654087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110134396A TW202225963A (zh) | 2020-12-23 | 2021-09-15 | 載入容器映像的方法和設備 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210208863A1 (zh) |
EP (1) | EP4020197B1 (zh) |
JP (1) | JP2022100244A (zh) |
KR (1) | KR20220091346A (zh) |
CN (1) | CN114661369A (zh) |
TW (1) | TW202225963A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114924845A (zh) * | 2022-07-21 | 2022-08-19 | 合肥中科类脑智能技术有限公司 | 适用于边缘ai场景的镜像延迟加载方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9582513B2 (en) * | 2013-12-08 | 2017-02-28 | Microsoft Technology Licensing, Llc | Accessing data in a compressed container through dynamic redirection |
US10659533B1 (en) * | 2017-04-26 | 2020-05-19 | EMC IP Holding Company LLC | Layer-aware data movement control for containers |
US10956222B2 (en) * | 2017-05-04 | 2021-03-23 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a scheduler and workload manager with dynamic workload termination based on cost-benefit analysis |
US11775475B2 (en) * | 2019-03-05 | 2023-10-03 | Microsoft Technology Licensing, Llc | Deferred path resolution during container deployment |
CN110119377B (zh) * | 2019-04-24 | 2021-01-15 | 华中科技大学 | 面向Docker容器的在线迁移系统实现和优化方法 |
US11966769B2 (en) * | 2019-05-23 | 2024-04-23 | Microsoft Technology Licensing, Llc | Container instantiation with union file system layer mounts |
-
2020
- 2020-12-23 US US17/133,015 patent/US20210208863A1/en active Pending
-
2021
- 2021-09-15 TW TW110134396A patent/TW202225963A/zh unknown
- 2021-11-05 KR KR1020210151074A patent/KR20220091346A/ko unknown
- 2021-11-18 CN CN202111371310.0A patent/CN114661369A/zh active Pending
- 2021-11-22 JP JP2021189563A patent/JP2022100244A/ja active Pending
- 2021-11-23 EP EP21209950.1A patent/EP4020197B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP4020197B1 (en) | 2023-10-11 |
JP2022100244A (ja) | 2022-07-05 |
KR20220091346A (ko) | 2022-06-30 |
EP4020197A1 (en) | 2022-06-29 |
CN114661369A (zh) | 2022-06-24 |
US20210208863A1 (en) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11288267B2 (en) | Pluggable storage system for distributed file systems | |
US20240048631A1 (en) | Demand resources | |
US9880824B2 (en) | On demand resources | |
US10656845B2 (en) | System and method for managing container image | |
CN101650660B (zh) | 从中央存储装置引导计算机系统 | |
US12056511B2 (en) | Container image creation and deployment using a manifest | |
US20110078681A1 (en) | Method and system for running virtual machine image | |
US10505795B2 (en) | Method for providing a trial environment to enable user to try out application in cloud environment and server using the same | |
US11029932B2 (en) | Hydration of applications | |
US20170132378A1 (en) | Devices, methods and computer readable mediums for flexible delivery and deployment of medical applications | |
US8356140B2 (en) | Methods and apparatus for controlling data between storage systems providing different storage functions | |
US11093350B2 (en) | Method and system for an optimized backup data transfer mechanism | |
US10296318B2 (en) | Offline tools upgrade for virtual machines | |
TW202225963A (zh) | 載入容器映像的方法和設備 | |
US11861402B2 (en) | Methods and apparatus for tenant aware runtime feature toggling in a cloud environment | |
CN107667343B (zh) | 用于加载按需加载资源的系统和方法 | |
JP2018538637A (ja) | アプリケーションの実行を加速する方法及びデバイス | |
US8051009B2 (en) | Method and apparatus for maintaining software at a third-party server | |
US10365907B2 (en) | Offline tools installation for virtual machines | |
US20210176134A1 (en) | Cloud server and operating method of the same | |
US12001405B2 (en) | Tape unmounting protocol |