[go: up one dir, main page]

WO2018033220A1 - Device and method arranged to support execution of a booting process - Google Patents

Device and method arranged to support execution of a booting process Download PDF

Info

Publication number
WO2018033220A1
WO2018033220A1 PCT/EP2016/069717 EP2016069717W WO2018033220A1 WO 2018033220 A1 WO2018033220 A1 WO 2018033220A1 EP 2016069717 W EP2016069717 W EP 2016069717W WO 2018033220 A1 WO2018033220 A1 WO 2018033220A1
Authority
WO
WIPO (PCT)
Prior art keywords
data block
booting process
storage
requested
block set
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/EP2016/069717
Other languages
French (fr)
Inventor
Michael Sternberg
Gil Sasson
Asaf Yeger
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201680087899.2A priority Critical patent/CN109564513A/en
Priority to PCT/EP2016/069717 priority patent/WO2018033220A1/en
Publication of WO2018033220A1 publication Critical patent/WO2018033220A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Definitions

  • the present invention is directed to a device and method, both arranged to support execution of a booting process. Further, the present invention relates to a correspondingly arranged computer program product and to a correspondingly arranged computer-readable medium.
  • a booting process is executed.
  • an initialization of the system and, if required, of applications running in the system is executed.
  • a booting process comprises identification of hardware and/or software components, verification of their availability and functionality, and controlling of said components such that they are ready for operation after the booting process.
  • a booting process comprises, for example, also execution of master boot record (MBR), loading of operating system (OS) kernel, loading of driver(s), and/or starting of the execution of services/daemons and/or applications.
  • MLR master boot record
  • OS operating system
  • driver(s) loading of driver(s)
  • the device After the execution of the booting process, the device is ready for its intended use.
  • the time from beginning a start-up of a device until it is fully functional is important. Particularly, this time should be as short as possible because it is always desired that the device is ready for its intended use as soon as possible after its start.
  • I/O input/output
  • a storage During a booting process, input/output (I/O) requests are issued to a storage to derive data blocks required for putting the device in a state enabling the intended use of the device.
  • the corresponding reads of the storage are performed in a non-uniform way and/or on demand.
  • the I/O requests request data blocks that are located randomly in the storage, and it takes time to detect the requested data blocks. Thus, it takes time to receive the requested data, necessary to execute the booting process.
  • the storage that comprises the requested data blocks usually comprises some limited amount of cache based on fast media (e.g., solid state drive (SSD) or dynamic random access memory (DRAM)) to speed up the I/O request handling.
  • the cache is used such that data blocks that are in vicinity of a data block, which was read in the storage last for the execution of the booting process last, are put or written into the cache for a faster access.
  • This principle of the use of the cache is referred to also as "locality of reference" principle and is based on the assumption that the data blocks required for the execution of the booting process are located in the same areas of the storage.
  • the object of the present invention is to provide a method and a device that enable an improved provision of data blocks necessary for the execution of a booting process.
  • the present invention provides a method and device that are arranged to support the execution of a booting process and that overcome at least the above mentioned drawbacks.
  • the method and the device are arranged such that they accelerate the provision of data blocks necessary for the execution of a booting process. In this way, also the booting process itself is accelerated. As a consequence, a faster putting of a device, which is booted, into a state in which the device that is booted is ready for its intended use is achieved.
  • the present invention as specified in claims and as described herein in connection with appended figures, on the one side, monitors, which data blocks are requested from a storage during a booting process, and stores this information accordingly, and, on the other side, uses the stored information on the requested data blocks during a next booting process for accelerating the execution of the booting process.
  • the present invention ensures that the device is quickly and with less effort put in a state, in which it is ready for its intended use, after its start.
  • the object of the present invention is achieved by the solution provided in the enclosed independent claims.
  • Advantageous implementations of the present invention are further defined in the respective dependent claims.
  • a device arranged to support execution of a booting process, wherein the device comprises at least one of the following: a requested data block processing unit, wherein the requested data block processing unit is configured to generate, during the booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process; a pre-fetching unit, wherein the pre-fetching unit is configured, during the booting process, to pre-fetch, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process.
  • pre-fetching has the usual meaning and refers to loading or storing of contents of a storage or memory into a higher level of a storage or memory hierarchy, wherein the higher level of the storage or memory hierarchy allows a higher access speed.
  • data blocks are loaded into or stored in a further memory that enables a faster access to the data blocks.
  • a monitoring of data blocks, which are required for the execution of the booting process is executed every time a booting process is executed, wherein a requested data block set is generated accordingly.
  • the requested data block set is generated anew, and in the booting process, following the second booting process, the requested data block set, generated during the second booting process, is used as the data block set used for the pre-fetching.
  • changes in a bootable device are taken into consideration constantly, because a requested data block set, generated during a current, ongoing, or present booting process, is used as the data block set, used for pre-fetching, in a next, following, or subsequent booting process.
  • the data block set, used for the prefetching in a current, ongoing, or present booting process is the requested data block set, generated during a previously executed booting process, i.e. a booting process that has been executed before the current, ongoing, or present booting process.
  • the information on a data block, requested from the storage during the booting process comprises an address of the data block in the storage and a size of the data block; and/or the information on a data block, requested from the storage during the previously executed booting process, comprises an address of the data block in the storage and a size of the data block.
  • the sizes of the sets i.e. of the requested data block set and of the data block set, are kept small. This allows a fast processing of the sets. Consequently, the handling of the sets does not affect the performance of the booting process.
  • the pre-fetching unit is configured to execute said pre-fetching by retrieving a data block from the storage by use of an information on the data block in a respective entry in the data block set and by storing the data block in a further storage, wherein the further storage is configured to allow a faster access to the data block than the storage.
  • the booting process is enabled to execute fast access to all or at least nearly all data blocks, required for the execution of the booting process.
  • the requested data block processing unit is configured to monitor, during the booting process, data block requests for requesting data blocks from the storage.
  • the monitoring enables a detection of all or at least nearly all data blocks, required for the execution of the booting process.
  • an accurate set or requested data blocks is generated by the requested data block processing unit such that the accuracy on provision of data blocks, actually required by a booting process, is improved for the subsequent booting process. This is crucial in particular in cases, in which changes, as indicated above, have been introduced with regard to the device, which is booted.
  • the requested data block processing unit is configured to collect, during the booting process, information on data blocks, requested from the storage during the booting process. In this way, it is ensured that the knowledge on all data blocks, required for the execution of the booting process, is collected. Thus, the accuracy on provision of data blocks, actually required by a booting process, is improved for the subsequent booting process.
  • the requested data block processing unit is configured to instruct storing of the requested data block set in the storage.
  • the pre-fetching unit is configured to retrieve and/or access, during the booting process, the data block set from the storage.
  • the device is a storage device, a hypervisor, or any other data processing device configured to process data.
  • a method arranged to support execution of a booting process comprises at least one of the following steps: generating, during the booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process; pre-fetching, during the booting process, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process.
  • the steps of the method correspond to the steps or activities executed by the device arranged to support execution of a booting process as introduced above and as described in more detail below.
  • the present invention refers to a computer program product comprising computer readable program code that is configured to cause a computing device to execute steps of the method introduced above and explained in more detail below.
  • the present invention relates to a computer-readable recording medium configured to store therein said computer program product.
  • Figs, la and lb show exemplary arrangements of a device, arranged to support the execution of a booting process, according to an embodiment of the present invention.
  • Fig. 2 shows steps of a method, arranged to support the execution of a booting process, according to an embodiment of the present invention.
  • Fig. 3 shows arrangements of a requested data block set and of a data block set according to an embodiment of the present invention.
  • Fig. 4a shows an exemplary arrangement of an entry of a requested data block set according to an embodiment of the present invention.
  • Fig. 4b shows an exemplary arrangement of an entry of a data block set according to an embodiment of the present invention.
  • Fig. 5 shows a flow-diagram of sub-steps of a requested data block set generation step according to an embodiment of the present invention.
  • Fig. 6 shows a flow-diagram of sub-steps of a pre-fetching step according to an embodiment of the present invention.
  • Figs, la and lb show exemplary arrangements of a device 110, 120, 130, arranged to support the execution of a booting process, according to an embodiment of the present invention.
  • the device 110 comprises both a requested data block processing unit 111 and a pre-fetching unit 112.
  • the requested data block processing unit 111 is configured to generate, during a booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process.
  • the pre-fetching unit 112 is configured, during the booting process, to pre-fetch, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process.
  • both components - the requested data block processing unit 111 and the pre-fetching unit 112— become active during a booting processing process.
  • the requested data block processing unit 111 is responsible for collecting data on data blocks requested from a storage during the booting process for executing the booting, e.g. in response to the above-mentioned I/O requests.
  • the pre-fetching unit 112 is responsible for using data on data blocks, as collected during a previous booting process, to enable a fast access on data blocks required for the execution of the booting process.
  • the requested data block set generated by the requested data block processing unit 111 during a current, ongoing or present booting process, will be used by the pre-fetching unit 112 in a next booting process as the data block set for pre-fetching data blocks.
  • the booting process which is executed after said change(s), will change too.
  • the changes in the computerized system, running on a bootable device and operating and controlling said bootable device cause changes in the booting process.
  • the booting process requires new or additional data block requests (e.g., I/O requests) and/or some of previously executed data block requests are no longer performed.
  • the one component i.e., the requested data block processing unit 111
  • the pre-fetching unit 112 for pre-fetching data blocks from already generated data block set (generated in a previous booting process)
  • the arrangements of the device 110, 120, 130, arranged to support the execution of a booting process, of the requested data block processing unit 111, and of the pre-fetching unit 112 may be provided in different ways according to the present invention. According to the
  • both the requested data block processing unit 111 and the pre-fetching unit 112 are included in one device 110 for supporting the execution of a booting process.
  • the requested data block processing unit 111 and the pre-fetching unit 112 are parts of two separate devices 120, 130 arranged to support the execution of a booting process.
  • the requested data block processing unit 111 is located in a first device 120 arranged to support the execution of a booting process
  • the pre-fetching unit 112 is located in a second device arranged to support the execution of the booting process.
  • Fig. 2 shows the general steps of a method arranged to support the execution of a booting process according to an embodiment of the present invention.
  • step 201 during a booting process, a requested data block set is generated, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process.
  • step 202 during a booting process, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, is pre-fetched wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process.
  • step 201 is executed by device 110, 120, arranged to support execution of a booting process.
  • step 201 is executed by the requested data block processing unit 111.
  • Step 202 is executed by device 110, 130, arranged to support execution of a booting process.
  • step 202 is executed by the prefetching unit 112.
  • Steps 201 and 202 are executed independently from each other during a booting process.
  • only step 201 is executed, i.e. only the requested data block processing unit 111 is active, because no data block set that could be used in step 202, i.e. that could be used by the pre-fetching unit 202 is present.
  • the data block set is present only after an execution of step 201, i.e. after the operation of the requested data block processing unit 111.
  • the previously generated requested data block set is used as the data block set for pre-fetching data blocks.
  • Fig. 3 shows arrangements of the requested data block set 311 and of the data block set 312 according to an embodiment of the present invention.
  • both sets 311, 312 are stored in a storage 301.
  • the storage 301 may be one component or may represent a plurality of storages 301.
  • the requested data block set 311 and of the data block set 312 may be stored in a common storage 301, or in a plurality of (i.e., at least two) different storage units 301.
  • the requested data block set 311, generated 201 by the requested data block processing unit 111 comprises a plurality of entries (i.e. at least one entry) 311-1, 311-2, 311-n.
  • n entries are indicated exemplary, wherein n > 1.
  • Each of the entries 311-1, 311-2, 311-n indicates one data block request, e.g., I/O request, performed during a booting process, with regard to which the requested data block set 311 is generated. Particularly, each of the entries 311-1, 311-2, 311-n indicates a data block that has been requested from a storage during the booting process. The execution of the booting process and, particularly, the data block requests are monitored, and each time a data block is requested a corresponding new entry
  • 311- 1, 311-2, ... , 311 -n of the requested data block set 311 is generated and added to the set 311.
  • the data block set 312 corresponds to a requested data block set 311 , generated by the requested data block processing unit 111 during a previously executed booting process.
  • the data block set 312 is used by the pre-fetching unit 112 for pre-fetching data blocks, observed during the previous booting process as required for its execution, for the current booting process.
  • the data block set 312 comprises a plurality of entries (i.e. at least one entry) 312-1,
  • each of the entries 312-1, 312-2, 312-m indicates one data block request, e.g., I/O request, performed during the previous booting process and assumed as required also for the current, ongoing, or present booting process.
  • each of the entries 312-1, 312-2, ..., 312-m indicates a data block that is assumed to be requested also during the present, ongoing, or current booting process.
  • each entry 312-1, 312-2, 312-m of the data block set 312 is considered. Particularly, it is determined, information on which data block the respective entry 312-1, 312-2, ...
  • the corresponding data block is derived from the storage and stored in a further storage that allows a faster access to the data block.
  • the further storage may be, for example, a cache.
  • the required data blocks are already present in the further storage (e.g., cache) for a faster access to said data blocks.
  • Fig. 4a shows an exemplary arrangement of an entry 311 -i of the requested data block set 311 , wherein 1 ⁇ i ⁇ n.
  • the entry 311-i comprises
  • said information comprises an address 401 of the requested data block in the storage and the size 402 of the data block.
  • the requested data block set 311 may be accessed in a fast way, without wasting processing time and, thus, without, affecting the execution of the booting process.
  • Fig. 4a is an example of the entry 311-i of the requested data block set 311.
  • an entry 311-i is arranged such that it allows an identification of the respective data block in the storage.
  • Fig. 4b shows an exemplary arrangement of an entry 312-j of the data block set 312 according to an embodiment of the present invention.
  • the entry 312-j comprises information on a data block, assumed to be requested from the storage during the current, ongoing, or present booting process.
  • said information comprises an address 411 of the data block in the storage and the size 412 of the data block. Also here, it is not necessary to store the whole data block in the data block set
  • the storage space is saved.
  • the data block set 312 may be accessed in a fast way, without wasting processing time and, thus, without, affecting the execution of the booting process.
  • Fig. 5 shows a flow-diagram of sub-steps of the requested data block set generation step 201 according to an embodiment of the present invention.
  • the sub-steps are executed, for example, by the device 110, 120 arranged to support the execution of the booting process. Particularly, the sub-steps are executed, for example, by the requested data block processing unit 111. Furthermore, the sub-steps are executed during a booting process.
  • step 501 data block requests (e.g., I/O requests), executed during the booting process, are monitored. In this way, it is determined, which data blocks are required by the booting process to set the device, which is booted, in a state in which it is ready for its intended use and operation.
  • the monitoring is executed, for example, by monitoring and detecting accesses to the storage, in which corresponding data blocks are stored.
  • the corresponding data blocks comprise, for example: data required for identification of hardware and/or software components of the device, which is booted; data required for verification of the availability and/or functionality of the hardware and/or software
  • step 502 information 401, 402 on the data blocks, requested from the storage during the booting process, is collected. For this purpose, once a request of a data block (e.g., I/O request) has been monitored or detected 501, the information 401, 402 on the data block is detected. As discussed above with regard to Figs. 3 and 4a, the information 401 , 402 comprises, for example, an address 401 of the data block in the storage and the size 402 of the data block.
  • a data block e.g., I/O request
  • the requested data block set 311 is stored in the storage. Particularly, an entry 311- 1, 311-2, 311 -i, 311-n of the requested data block set 311 is generated for the data block information 401 , 402 collected in step 502. Then, the corresponding data block information 401 , 402 is stored in the generated entry 311 - 1 , 311 -2, 311 -i, 311 -n.
  • the above described steps 502, 503 are executed with regard to each data block that has been monitored or detected in step 501.
  • the requested data block set 311 comprises information on all data blocks requested in said booting process and monitored in step 501.
  • Fig. 6 shows a flow-diagram of sub-steps of the pre-fetching step 202 according to an embodiment of the present invention.
  • the sub-steps are executed, for example, by the device 110, 130 arranged to support the execution of the booting process.
  • the sub-steps are executed, for example, by the pre-fetching unit 112.
  • the sub-steps are executed during a booting process.
  • step 601 the data block set 312 is retrieved from the storage.
  • the data block set 312 can be retrieved from the storage, if, in a previous booting process, a requested data block set 311 has been generated, as described above. If no requested data block set 311 has been generated in one of previous booting processes, the execution of the pre-fetching step 202 is not possible and is ended.
  • a requested data block set 311 has been generated 201 in a previous booting process
  • the previously generated data block set 311 is retrieved from the storage as the data block set 312.
  • the previously generated data block set 311 is accessed as the data block set 312. If in the booting process also the requested data block set generation is executed at the same time, a new requested data block set 311, concerning the booting process as executed currently or presently, is generated for the use in a subsequent booting process as the requested data block set 311.
  • the access to the data block set 312 is started at a predetermined entry 312-1, 312-2, 312-j, 312-m of the data block set 312, for example, at the first entry 312-1 of the data block set 312.
  • step 602 an entry 312-1, 312-2, 312-j, 312-m is accessed.
  • a data block information 411, 412 stored in the entry 312-1, 312-2, 312-j, 312-m is derived from said entry 312-1, 312-2, 312-j, 312-m.
  • the corresponding data block is retrieved from the storage by use of the information 411, 412.
  • the information 411 , 412 comprises an address 411 of the data block in the storage and the length 412 of the data block
  • the corresponding data block is retrieved by accessing the storage at the address 411 and reading a data block, starting at said address 411 and having the length 412.
  • step 604 the retrieved data block is stored in a further storage (e.g., cache), which allows a faster access to the data block that the storage, from which the data block has been retrieved in step 603.
  • step 605 it is verified, whether all entries 312-1, 312-2, 312-j, 312-m of the data block set 312 have been derived 602 and accessed 603 and whether all respective data blocks have been stored 604 in the further storage (e.g., cache). If the data block set 312 comprises un-considered entries 312-1, 312-2, 312-j, 312-m, i.e.
  • the execution of the pre-fetching is terminated or ended in step 606.
  • the execution of the steps 602 to 605 may be interrupted for a time period if the further storage (e.g., cache), into which the data blocks are stored 604 is full.
  • the execution of the steps 602 to 605 is continued after a use of one or more of data blocks, stored 604 in the further storage, has been finished in the booting process.
  • said one or more of data blocks, which have been stored 604 in the further storage and usage of which is finished in the booting process are considered as being not required for the further execution of the booting process.
  • said one or more data blocks are deleted from the further storage, and the execution of the sub-steps 602 to 605 is continued until all entries have been considered.
  • the above-mentioned interruption may be executed at any time where it is determined that the further storage (e.g., cache) is full.
  • the present invention is implementable in several technical areas where devices that are bootable are used.
  • the bootable devices i.e. devices, which can be booted, comprise various computing devices such as mobile devices (e.g., mobile phones, smart phones, vehicles, laptops, etc.) or stationary devices (e.g., facilities, sensors, actuators, etc.).
  • the present invention is implementable in different environments. Besides the usual computer-aided environments with physical devices or apparatus, the present invention is implementable also in virtual environments, cloud environments or virtual machines in general. Thus, also virtual systems and systems operated via cloud can be booted according to the present invention.
  • the device 110, 120 130 will be a device that comprises the virtual or cloud system and/or that manages and controls the virtual or cloud system.
  • the device 110, 120, 130 which is arranged to support the execution of a booting process, may be arranged in different ways. According to an embodiment, the device 110, 120, 130 is a part of the bootable device, while, according to another embodiment, the device 110, 120, 130 is a device that is external to the bootable device.
  • the device 110, 120, 130 is an apparatus that comprises a housing, while, according to another embodiment, the device 110, 120, 130 is rather a system or an arrangement comprising a plurality of (at least two) interconnected entities, units and/or devices.
  • the device 110, 120, 130 is a storage device, wherein, according to a further embodiment, the device 110, 120, 130 is the storage device, from which the data blocks are requested during the booting process.
  • the device 110, 120, 130 is a storage device that hosts virtual machine (VM) disks.
  • VM virtual machine
  • the device 110, 120, 130 is a hypervisor, i.e. a hardware and/or software device that creates and runs virtual machines.
  • the device 110, 120, 130 may be any computing device, wherein the term “device” comprises an apparatus with a housing, a system, or an arrangement as indicated above.
  • the storage in which data blocks are stored and from which the data blocks are requested during a booting process, may be any device that is configured to store data. According to an embodiment, said storage is a non-volatile storage, i.e. a storage that can retrieve stored information even after having been power cycled (turned off and back on).
  • the storage may be a part of the bootable device or may be located externally to the bootable device.
  • the storage is arranged as a system of plurality of sub-storage devices, some of the sub-storage devices may be located in the bootable device and some of the sub-storage devices may be located externally to the bootable device. Alternatively, all sub-storage devices may be located in the bootable device or may be provided externally to the bootable device.
  • the requested data block set 311 and the data block set 312 may be stored in the same storage, e.g., the storage in which data blocks are stored and from which the data blocks are requested during a booting process,.
  • the requested data block set 311 and the data block set 312 may be stored in at least one (e.g., non-volatile) storage different from the storage, from which data blocks are requested during a booting process.
  • the further storage e.g., cache
  • the further storage into which the data blocks are pre-fetched 202, is generally a storage that allows a faster access to the stored data than the storage, in which data blocks are stored and from which the data blocks are requested during a booting process.
  • the present invention is directed to a device and method, both arranged to support execution of a booting process.
  • a requested data block processing unit of the device is configured to generate, during the booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process.
  • a pre-fetching unit of the device is configured, during the booting process, to pre-fetch, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process.
  • the present invention relates to a correspondingly arranged computer program product and to a correspondingly arranged computer-readable medium.
  • the invention has been described in conjunction with various embodiments herein. However, other variations to the enclosed embodiments can be understood and effected by those skilled in the art and practicing the claimed invention, from a study of the drawings, the disclosure and the appended claims.
  • the word “comprising” does not exclude other elements or steps, and the indefinite article “a” or “an” does not exclude a plurality.
  • the mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The present invention is directed to a device and method, both arranged to support execution of a booting process. A requested data block processing unit of the device is configured to generate, during the booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process. A pre-fetching unit of the device is configured, during the booting process, to pre-fetch, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process. Further, the present invention relates to a correspondingly arranged computer program 10 product and to a correspondingly arranged computer-readable medium.

Description

DEVICE AND METHOD ARRANGED TO SUPPORT EXECUTION OF A BOOTING
PROCESS
TECHNICAL FIELD The present invention is directed to a device and method, both arranged to support execution of a booting process. Further, the present invention relates to a correspondingly arranged computer program product and to a correspondingly arranged computer-readable medium.
BACKGROUND Many devices are operated and controlled by a computerized system such as computers or computer appliances. In response to switching on or starting a device, the corresponding computerized system is started, i.e. a booting process is executed. For this purpose, an initialization of the system and, if required, of applications running in the system is executed. In particular a booting process comprises identification of hardware and/or software components, verification of their availability and functionality, and controlling of said components such that they are ready for operation after the booting process. A booting process comprises, for example, also execution of master boot record (MBR), loading of operating system (OS) kernel, loading of driver(s), and/or starting of the execution of services/daemons and/or applications. After the execution of the booting process, the device is ready for its intended use. The time from beginning a start-up of a device until it is fully functional is important. Particularly, this time should be as short as possible because it is always desired that the device is ready for its intended use as soon as possible after its start.
During a booting process, input/output (I/O) requests are issued to a storage to derive data blocks required for putting the device in a state enabling the intended use of the device. The corresponding reads of the storage are performed in a non-uniform way and/or on demand. Between the individual issuances of corresponding I/O requests some time runs. Further, the I/O requests request data blocks that are located randomly in the storage, and it takes time to detect the requested data blocks. Thus, it takes time to receive the requested data, necessary to execute the booting process. To accelerate the booting process, the storage that comprises the requested data blocks usually comprises some limited amount of cache based on fast media (e.g., solid state drive (SSD) or dynamic random access memory (DRAM)) to speed up the I/O request handling. Conventionally, the cache is used such that data blocks that are in vicinity of a data block, which was read in the storage last for the execution of the booting process last, are put or written into the cache for a faster access. This principle of the use of the cache is referred to also as "locality of reference" principle and is based on the assumption that the data blocks required for the execution of the booting process are located in the same areas of the storage.
Although various implementations for storage access and cache use during a booting process have been implemented, the growing complexity of computerized systems and the desired prompt operational readiness of a device after its start-up require further improved methodologies for providing data blocks, required for the execution of the boot process, in a fast way.
Thus, further methodologies supporting a fast and efficient execution of a booting process are required. Particularly, a methodology is desired that enables a fast provision of data blocks necessary for the execution of a booting process and, thus, for putting a respective device in a state, in which it is ready for its intended use, after the start of the device.
SUMMARY The object of the present invention is to provide a method and a device that enable an improved provision of data blocks necessary for the execution of a booting process.
The present invention provides a method and device that are arranged to support the execution of a booting process and that overcome at least the above mentioned drawbacks. In particular, the method and the device are arranged such that they accelerate the provision of data blocks necessary for the execution of a booting process. In this way, also the booting process itself is accelerated. As a consequence, a faster putting of a device, which is booted, into a state in which the device that is booted is ready for its intended use is achieved.
In particular, the present invention as specified in claims and as described herein in connection with appended figures, on the one side, monitors, which data blocks are requested from a storage during a booting process, and stores this information accordingly, and, on the other side, uses the stored information on the requested data blocks during a next booting process for accelerating the execution of the booting process. In this way, a fast and efficient execution of a booting process is enabled. Further, the present invention ensures that the device is quickly and with less effort put in a state, in which it is ready for its intended use, after its start. The object of the present invention is achieved by the solution provided in the enclosed independent claims. Advantageous implementations of the present invention are further defined in the respective dependent claims.
According to a first aspect, a device arranged to support execution of a booting process is provided, wherein the device comprises at least one of the following: a requested data block processing unit, wherein the requested data block processing unit is configured to generate, during the booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process; a pre-fetching unit, wherein the pre-fetching unit is configured, during the booting process, to pre-fetch, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process.
In this way, only data blocks, which have been monitored as being required for the execution of the booting process during a previous booting process, are pre-fetched for the execution of a current or present booting process. Here, the term "pre-fetching" has the usual meaning and refers to loading or storing of contents of a storage or memory into a higher level of a storage or memory hierarchy, wherein the higher level of the storage or memory hierarchy allows a higher access speed. In other words, data blocks are loaded into or stored in a further memory that enables a faster access to the data blocks. Additionally, a monitoring of data blocks, which are required for the execution of the booting process, is executed every time a booting process is executed, wherein a requested data block set is generated accordingly. In this way an improved reaction on changes, which occurred between a first and a second booting process in and/or with regard to the device, which is booted, is provided. If, for example, new hardware and/or software components have been added, existing hardware and/or software components have been changed, and/or existing hardware and/or software components have been deleted between the execution of a first and a second booting process, the second booting process will be executed with regard to said changes, i.e. by issuing new or amended data block requests and/or by refraining from the issuance of requests for some data blocks requested before. During the second booting process, the requested data block set is generated anew, and in the booting process, following the second booting process, the requested data block set, generated during the second booting process, is used as the data block set used for the pre-fetching. Thus, changes in a bootable device are taken into consideration constantly, because a requested data block set, generated during a current, ongoing, or present booting process, is used as the data block set, used for pre-fetching, in a next, following, or subsequent booting process. Vice versa, the data block set, used for the prefetching in a current, ongoing, or present booting process, is the requested data block set, generated during a previously executed booting process, i.e. a booting process that has been executed before the current, ongoing, or present booting process.
Furthermore, an acceleration of the booting process is achieved in view of the more reliable pre-fetching of the data blocks required for the execution of the booting process. The number of faulty data block accesses for executing pre-fetching can be reduced. In a first possible implementation form according to the first aspect, the information on a data block, requested from the storage during the booting process, comprises an address of the data block in the storage and a size of the data block; and/or the information on a data block, requested from the storage during the previously executed booting process, comprises an address of the data block in the storage and a size of the data block. In this way, only small information amount on the data blocks is stored instead of storing the whole data blocks. When doing so, the sizes of the sets, i.e. of the requested data block set and of the data block set, are kept small. This allows a fast processing of the sets. Consequently, the handling of the sets does not affect the performance of the booting process.
In a second possible implementation form according to the first aspect as such or according to the first implementation form of the first aspect, the pre-fetching unit is configured to execute said pre-fetching by retrieving a data block from the storage by use of an information on the data block in a respective entry in the data block set and by storing the data block in a further storage, wherein the further storage is configured to allow a faster access to the data block than the storage. Thus, the booting process is enabled to execute fast access to all or at least nearly all data blocks, required for the execution of the booting process.
In a third possible implementation form according to the first aspect as such or according to the any of the preceding implementation forms of the first aspect, the requested data block processing unit is configured to monitor, during the booting process, data block requests for requesting data blocks from the storage. The monitoring enables a detection of all or at least nearly all data blocks, required for the execution of the booting process. Thus, an accurate set or requested data blocks is generated by the requested data block processing unit such that the accuracy on provision of data blocks, actually required by a booting process, is improved for the subsequent booting process. This is crucial in particular in cases, in which changes, as indicated above, have been introduced with regard to the device, which is booted.
In a fourth possible implementation form according to the first aspect as such or according to the any of the preceding implementation forms of the first aspect, the requested data block processing unit is configured to collect, during the booting process, information on data blocks, requested from the storage during the booting process. In this way, it is ensured that the knowledge on all data blocks, required for the execution of the booting process, is collected. Thus, the accuracy on provision of data blocks, actually required by a booting process, is improved for the subsequent booting process. In a fifth possible implementation form according to the first aspect as such or according to the any of the preceding implementation forms of the first aspect, the requested data block processing unit is configured to instruct storing of the requested data block set in the storage. In this way, loss of the information on data blocks required for the execution of a booting process is avoided. In a sixth possible implementation form according to the first aspect as such or according to the any of the preceding implementation forms of the first aspect, the pre-fetching unit is configured to retrieve and/or access, during the booting process, the data block set from the storage.
In a seventh possible implementation form according to the first aspect as such or according to the any of the preceding implementation forms of the first aspect, the device is a storage device, a hypervisor, or any other data processing device configured to process data.
According to a second aspect, a method arranged to support execution of a booting process is provided, wherein the method comprises at least one of the following steps: generating, during the booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process; pre-fetching, during the booting process, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process. Generally, the steps of the method correspond to the steps or activities executed by the device arranged to support execution of a booting process as introduced above and as described in more detail below.
According to a third aspect, the present invention refers to a computer program product comprising computer readable program code that is configured to cause a computing device to execute steps of the method introduced above and explained in more detail below.
According to a fourth aspect, the present invention relates to a computer-readable recording medium configured to store therein said computer program product.
BRIEF DESCRIPTION OF THE DRAWINGS
The above-described aspects and implementation forms of the present invention will be explained in the following description of specific embodiments in relation to the enclosed drawings, in which:
Figs, la and lb show exemplary arrangements of a device, arranged to support the execution of a booting process, according to an embodiment of the present invention.
Fig. 2 shows steps of a method, arranged to support the execution of a booting process, according to an embodiment of the present invention.
Fig. 3 shows arrangements of a requested data block set and of a data block set according to an embodiment of the present invention.
Fig. 4a shows an exemplary arrangement of an entry of a requested data block set according to an embodiment of the present invention.
Fig. 4b shows an exemplary arrangement of an entry of a data block set according to an embodiment of the present invention. Fig. 5 shows a flow-diagram of sub-steps of a requested data block set generation step according to an embodiment of the present invention. Fig. 6 shows a flow-diagram of sub-steps of a pre-fetching step according to an embodiment of the present invention.
DETAILED DESCRIPION OF THE EMBODIMENTS Generally, it has to be noted that all arrangements, devices, modules, components, models, elements, units, entities, and means and so forth described in the present application could be implemented by software or hardware elements or any kind of combination thereof. All steps which are performed by the various entities described in the present application as well as the functionality described to be performed by the various entities are intended to mean that the respective entity is adapted to or configured to perform the respective steps and functionalities. Even if in the following description of the specific embodiments, a specific functionality or step to be performed by a general entity is not reflected in the description of a specific detailed element of the entity which performs the specific step or functionality, it should be clear for a skilled person that these methods and functionalities can be implemented in respective hardware or software elements, or any kind of combination thereof. Further, the method of the present invention and its various steps are embodied in the functionalities of the various described apparatus elements. Moreover, any of the embodiments and features of any of the embodiments, described herein, may be combined with each other, unless a combination is explicitly excluded.
Figs, la and lb show exemplary arrangements of a device 110, 120, 130, arranged to support the execution of a booting process, according to an embodiment of the present invention. According to the embodiment of Fig. la, the device 110 comprises both a requested data block processing unit 111 and a pre-fetching unit 112. As specified above, the requested data block processing unit 111 is configured to generate, during a booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process. The pre-fetching unit 112, in turn, is configured, during the booting process, to pre-fetch, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process. Thus, both components - the requested data block processing unit 111 and the pre-fetching unit 112— become active during a booting processing process. The requested data block processing unit 111 is responsible for collecting data on data blocks requested from a storage during the booting process for executing the booting, e.g. in response to the above-mentioned I/O requests. The pre-fetching unit 112 is responsible for using data on data blocks, as collected during a previous booting process, to enable a fast access on data blocks required for the execution of the booting process. Thus, the requested data block set, generated by the requested data block processing unit 111 during a current, ongoing or present booting process, will be used by the pre-fetching unit 112 in a next booting process as the data block set for pre-fetching data blocks.
Because the computerized system running on a device, which can be booted, may change, e.g. due to an installation of a new software and/or hardware, due to a change/update of an existing software and/or hardware, and/or due to a deletion of an existing software and/or hardware, the booting process, which is executed after said change(s), will change too. The changes in the computerized system, running on a bootable device and operating and controlling said bootable device, cause changes in the booting process. In view of the changes, the booting process requires new or additional data block requests (e.g., I/O requests) and/or some of previously executed data block requests are no longer performed. The provision of two components - the one component (i.e., the requested data block processing unit 111) for collecting and monitoring the current data blocks required for executing the booting process and the another component (i.e., the pre-fetching unit 112) for pre-fetching data blocks from already generated data block set (generated in a previous booting process) - ensures that each subsequent booting process will be able to handle the changes executed in the computerized system of the bootable device and that the efficiency of the execution of the booting process is maintained.
The arrangements of the device 110, 120, 130, arranged to support the execution of a booting process, of the requested data block processing unit 111, and of the pre-fetching unit 112 may be provided in different ways according to the present invention. According to the
embodiment of Fig. la, both the requested data block processing unit 111 and the pre-fetching unit 112 are included in one device 110 for supporting the execution of a booting process. According to the embodiment of Fig. lb, the requested data block processing unit 111 and the pre-fetching unit 112 are parts of two separate devices 120, 130 arranged to support the execution of a booting process. The requested data block processing unit 111 is located in a first device 120 arranged to support the execution of a booting process, and the pre-fetching unit 112 is located in a second device arranged to support the execution of the booting process. Fig. 2 shows the general steps of a method arranged to support the execution of a booting process according to an embodiment of the present invention. According to the present embodiment, in step 201, during a booting process, a requested data block set is generated, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process. In step 202, during a booting process, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, is pre-fetched wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process. In view of the embodiments of Figs, la and lb, step 201 is executed by device 110, 120, arranged to support execution of a booting process. Particularly, step 201 is executed by the requested data block processing unit 111. Step 202 is executed by device 110, 130, arranged to support execution of a booting process. Particularly, step 202 is executed by the prefetching unit 112. Steps 201 and 202 are executed independently from each other during a booting process. In case of a first execution of the methodology of the present invention, only step 201 is executed, i.e. only the requested data block processing unit 111 is active, because no data block set that could be used in step 202, i.e. that could be used by the pre-fetching unit 202 is present. The data block set is present only after an execution of step 201, i.e. after the operation of the requested data block processing unit 111. The requested data block set, generated in step 201, i.e. generated by the requested data block processing unit 111, becomes the data block set used in step 201, i.e. by the pre-fetching unit 112, in a subsequent booting process. Thus, the previously generated requested data block set is used as the data block set for pre-fetching data blocks.
Fig. 3 shows arrangements of the requested data block set 311 and of the data block set 312 according to an embodiment of the present invention. According to the present embodiment, both sets 311, 312 are stored in a storage 301. The storage 301 may be one component or may represent a plurality of storages 301. Thus, the requested data block set 311 and of the data block set 312 may be stored in a common storage 301, or in a plurality of (i.e., at least two) different storage units 301. The requested data block set 311, generated 201 by the requested data block processing unit 111, comprises a plurality of entries (i.e. at least one entry) 311-1, 311-2, 311-n. In Fig. 3, n entries are indicated exemplary, wherein n > 1. Each of the entries 311-1, 311-2, 311-n indicates one data block request, e.g., I/O request, performed during a booting process, with regard to which the requested data block set 311 is generated. Particularly, each of the entries 311-1, 311-2, 311-n indicates a data block that has been requested from a storage during the booting process. The execution of the booting process and, particularly, the data block requests are monitored, and each time a data block is requested a corresponding new entry
311- 1, 311-2, ... , 311 -n of the requested data block set 311 is generated and added to the set 311.
The data block set 312 corresponds to a requested data block set 311 , generated by the requested data block processing unit 111 during a previously executed booting process. The data block set 312 is used by the pre-fetching unit 112 for pre-fetching data blocks, observed during the previous booting process as required for its execution, for the current booting process. The data block set 312 comprises a plurality of entries (i.e. at least one entry) 312-1,
312- 2, ... , 312-m. In Fig. 3, m entries are indicated exemplary, wherein m > 1. Each of the entries 312-1, 312-2, 312-m indicates one data block request, e.g., I/O request, performed during the previous booting process and assumed as required also for the current, ongoing, or present booting process. Particularly, each of the entries 312-1, 312-2, ..., 312-m indicates a data block that is assumed to be requested also during the present, ongoing, or current booting process. During the pre-fetching 202, each entry 312-1, 312-2, 312-m of the data block set 312 is considered. Particularly, it is determined, information on which data block the respective entry 312-1, 312-2, ... , 312-m comprises, and the corresponding data block is derived from the storage and stored in a further storage that allows a faster access to the data block. The further storage may be, for example, a cache. Thus, when the present, ongoing, or current booting process is executed, the required data blocks are already present in the further storage (e.g., cache) for a faster access to said data blocks.
Fig. 4a shows an exemplary arrangement of an entry 311 -i of the requested data block set 311 , wherein 1 < i <n. According to the present embodiment, the entry 311-i comprises
information on a data block, requested from the storage during the current or present booting process. According to the present embodiment, said information comprises an address 401 of the requested data block in the storage and the size 402 of the data block. In this way, it is not necessary to store the whole data block in the requested data block set 311 and, particularly, in the respective entry 311-i. Thus, the storage space is saved. Furthermore, the requested data block set 311 may be accessed in a fast way, without wasting processing time and, thus, without, affecting the execution of the booting process.
Here, it has to be noted, that according to at least one further embodiment, also further and/or other information on a data block, requested from the storage during the current or present booting process, is stored in the entry 311-i of the requested data block set 311. The embodiment of Fig. 4a is an example of the entry 311-i of the requested data block set 311. In general, an entry 311-i is arranged such that it allows an identification of the respective data block in the storage. Fig. 4b shows an exemplary arrangement of an entry 312-j of the data block set 312 according to an embodiment of the present invention. According to the present embodiment, the entry 312-j comprises information on a data block, assumed to be requested from the storage during the current, ongoing, or present booting process. According to the present embodiment, said information comprises an address 411 of the data block in the storage and the size 412 of the data block. Also here, it is not necessary to store the whole data block in the data block set
312 and, particularly, in the respective entry 312-j. Thus, also here, the storage space is saved. Furthermore, the data block set 312 may be accessed in a fast way, without wasting processing time and, thus, without, affecting the execution of the booting process.
Further, also here it has to be noted, that according to at least one further embodiment, also further and/or other information on a data block, assumed to be requested from the storage during the current, ongoing, or present booting process, is stored in the entry 312-j of the requested data block set 312. The embodiment of Fig. 4b is an example of the entry 312-j of the data block set 312. In general, an entry 312-j is arranged such that it allows an
identification of the respective data block in the storage. Fig. 5 shows a flow-diagram of sub-steps of the requested data block set generation step 201 according to an embodiment of the present invention. The sub-steps are executed, for example, by the device 110, 120 arranged to support the execution of the booting process. Particularly, the sub-steps are executed, for example, by the requested data block processing unit 111. Furthermore, the sub-steps are executed during a booting process. In step 501, data block requests (e.g., I/O requests), executed during the booting process, are monitored. In this way, it is determined, which data blocks are required by the booting process to set the device, which is booted, in a state in which it is ready for its intended use and operation. The monitoring is executed, for example, by monitoring and detecting accesses to the storage, in which corresponding data blocks are stored.
The corresponding data blocks comprise, for example: data required for identification of hardware and/or software components of the device, which is booted; data required for verification of the availability and/or functionality of the hardware and/or software
components; data required for controlling said hardware and/or software components such that they are ready for operation after the booting process; data required for initialization and/or operation of the computerized system of the device, which is booted; data required for initialization and/or operation of applications executed in the device, which is booted; data required for the execution of the MBR in the device, which is booted; data required for loading the OS kernel in the device, which is booted; data required for loading driver(s) in the device, which is booted; data required for starting of the execution of services/daemons and/or applications in the device, which is booted; and/or any further data required during the booting process.
In step 502, information 401, 402 on the data blocks, requested from the storage during the booting process, is collected. For this purpose, once a request of a data block (e.g., I/O request) has been monitored or detected 501, the information 401, 402 on the data block is detected. As discussed above with regard to Figs. 3 and 4a, the information 401 , 402 comprises, for example, an address 401 of the data block in the storage and the size 402 of the data block.
In step 503, the requested data block set 311 is stored in the storage. Particularly, an entry 311- 1, 311-2, 311 -i, 311-n of the requested data block set 311 is generated for the data block information 401 , 402 collected in step 502. Then, the corresponding data block information 401 , 402 is stored in the generated entry 311 - 1 , 311 -2, 311 -i, 311 -n. The above described steps 502, 503 are executed with regard to each data block that has been monitored or detected in step 501. At the end of the execution of the requested data block set generation step 201, i.e. at the end of the booting process, the requested data block set 311 comprises information on all data blocks requested in said booting process and monitored in step 501.
Fig. 6 shows a flow-diagram of sub-steps of the pre-fetching step 202 according to an embodiment of the present invention. The sub-steps are executed, for example, by the device 110, 130 arranged to support the execution of the booting process. Particularly, the sub-steps are executed, for example, by the pre-fetching unit 112. Furthermore, the sub-steps are executed during a booting process.
In step 601, the data block set 312 is retrieved from the storage. The data block set 312 can be retrieved from the storage, if, in a previous booting process, a requested data block set 311 has been generated, as described above. If no requested data block set 311 has been generated in one of previous booting processes, the execution of the pre-fetching step 202 is not possible and is ended.
However, if a requested data block set 311 has been generated 201 in a previous booting process, the previously generated data block set 311 is retrieved from the storage as the data block set 312. Particularly, the previously generated data block set 311 is accessed as the data block set 312. If in the booting process also the requested data block set generation is executed at the same time, a new requested data block set 311, concerning the booting process as executed currently or presently, is generated for the use in a subsequent booting process as the requested data block set 311.
When turning back to the step 601, according to an embodiment, the access to the data block set 312 is started at a predetermined entry 312-1, 312-2, 312-j, 312-m of the data block set 312, for example, at the first entry 312-1 of the data block set 312.
In step 602, an entry 312-1, 312-2, 312-j, 312-m is accessed. In particular, a data block information 411, 412 stored in the entry 312-1, 312-2, 312-j, 312-m is derived from said entry 312-1, 312-2, 312-j, 312-m.
In step 603, the corresponding data block is retrieved from the storage by use of the information 411, 412. For example, if the information 411 , 412 comprises an address 411 of the data block in the storage and the length 412 of the data block, the corresponding data block is retrieved by accessing the storage at the address 411 and reading a data block, starting at said address 411 and having the length 412.
In step 604, the retrieved data block is stored in a further storage (e.g., cache), which allows a faster access to the data block that the storage, from which the data block has been retrieved in step 603. In step 605, it is verified, whether all entries 312-1, 312-2, 312-j, 312-m of the data block set 312 have been derived 602 and accessed 603 and whether all respective data blocks have been stored 604 in the further storage (e.g., cache). If the data block set 312 comprises un-considered entries 312-1, 312-2, 312-j, 312-m, i.e. entries 312-1, 312-2, 312-j, 312-m that have not been handled in the previous steps 602 to 604, the execution of the pre-fetching 202 continues with a new execution of step 602 and, thus, with a consideration of a further entry 312-1, 312-2, 312- j, 312-m of the data block set 312.
If all entries 312-1, 312-2, 312-j, 312-m of the data block set 312 have been considered, the execution of the pre-fetching is terminated or ended in step 606. Here, it has to be noted that the execution of the steps 602 to 605 may be interrupted for a time period if the further storage (e.g., cache), into which the data blocks are stored 604 is full. The execution of the steps 602 to 605 is continued after a use of one or more of data blocks, stored 604 in the further storage, has been finished in the booting process. Here, said one or more of data blocks, which have been stored 604 in the further storage and usage of which is finished in the booting process, are considered as being not required for the further execution of the booting process. Thus, said one or more data blocks are deleted from the further storage, and the execution of the sub-steps 602 to 605 is continued until all entries have been considered. The above-mentioned interruption may be executed at any time where it is determined that the further storage (e.g., cache) is full. With each restart of the execution of the sub-steps 602 to 605, a data block, which has been previously stored 604 in the further storage and processing of which during the booting process has been finished, will be replaced by a new data block identified by further execution of the sub-steps 602 to 605.
The present invention is implementable in several technical areas where devices that are bootable are used. The bootable devices, i.e. devices, which can be booted, comprise various computing devices such as mobile devices (e.g., mobile phones, smart phones, vehicles, laptops, etc.) or stationary devices (e.g., facilities, sensors, actuators, etc.).
Furthermore, the present invention is implementable in different environments. Besides the usual computer-aided environments with physical devices or apparatus, the present invention is implementable also in virtual environments, cloud environments or virtual machines in general. Thus, also virtual systems and systems operated via cloud can be booted according to the present invention. In this case, the device 110, 120 130 will be a device that comprises the virtual or cloud system and/or that manages and controls the virtual or cloud system. The device 110, 120, 130, which is arranged to support the execution of a booting process, may be arranged in different ways. According to an embodiment, the device 110, 120, 130 is a part of the bootable device, while, according to another embodiment, the device 110, 120, 130 is a device that is external to the bootable device. According to an embodiment the device 110, 120, 130 is an apparatus that comprises a housing, while, according to another embodiment, the device 110, 120, 130 is rather a system or an arrangement comprising a plurality of (at least two) interconnected entities, units and/or devices. According to an embodiment, the device 110, 120, 130 is a storage device, wherein, according to a further embodiment, the device 110, 120, 130 is the storage device, from which the data blocks are requested during the booting process. According to an embodiment, the device 110, 120, 130 is a storage device that hosts virtual machine (VM) disks. According to another embodiment, the device 110, 120, 130 is a hypervisor, i.e. a hardware and/or software device that creates and runs virtual machines. Generally, the device 110, 120, 130 may be any computing device, wherein the term "device" comprises an apparatus with a housing, a system, or an arrangement as indicated above. The storage, in which data blocks are stored and from which the data blocks are requested during a booting process, may be any device that is configured to store data. According to an embodiment, said storage is a non-volatile storage, i.e. a storage that can retrieve stored information even after having been power cycled (turned off and back on). The storage may be a part of the bootable device or may be located externally to the bootable device. If the storage is arranged as a system of plurality of sub-storage devices, some of the sub-storage devices may be located in the bootable device and some of the sub-storage devices may be located externally to the bootable device. Alternatively, all sub-storage devices may be located in the bootable device or may be provided externally to the bootable device. Here, several embodiments on arranging the storage. The requested data block set 311 and the data block set 312 may be stored in the same storage, e.g., the storage in which data blocks are stored and from which the data blocks are requested during a booting process,. Alternatively, the requested data block set 311 and the data block set 312 may be stored in at least one (e.g., non-volatile) storage different from the storage, from which data blocks are requested during a booting process. The further storage (e.g., cache), into which the data blocks are pre-fetched 202, is generally a storage that allows a faster access to the stored data than the storage, in which data blocks are stored and from which the data blocks are requested during a booting process. In view of the aforesaid, it becomes clear that different arrangements of the present invention are possible. The present invention allows a modular implementation. Therefore, the above described embodiments are combinable with each other.
Thus, as shown above, the present invention is directed to a device and method, both arranged to support execution of a booting process. A requested data block processing unit of the device is configured to generate, during the booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process. A pre-fetching unit of the device is configured, during the booting process, to pre-fetch, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process. Further, the present invention relates to a correspondingly arranged computer program product and to a correspondingly arranged computer-readable medium. The invention has been described in conjunction with various embodiments herein. However, other variations to the enclosed embodiments can be understood and effected by those skilled in the art and practicing the claimed invention, from a study of the drawings, the disclosure and the appended claims. In the claims, the word "comprising" does not exclude other elements or steps, and the indefinite article "a" or "an" does not exclude a plurality. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.

Claims

CLAIMS A device arranged to support execution of a booting process, wherein the device comprises at least one of the following: a requested data block processing unit (111), wherein the requested data block processing unit is configured to generate, during the booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process; a pre-fetching unit (112), wherein the pre-fetching unit is configured, during the booting process, to pre-fetch, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process. The device according to claim 1, wherein: the information on a data block, requested from the storage during the booting process, comprises an address of the data block in the storage and a size of the data block; and/or the information on a data block, requested from the storage during the previously executed booting process, comprises an address of the data block in the storage and a size of the data block. The device according to claim 1 or 2, wherein the pre-fetching unit is configured to execute said pre-fetching by retrieving a data block from the storage by use of an information on the data block in a respective entry in the data block set and by storing the data block in a further storage, wherein the further storage is configured to allow a faster access to the data block than the storage. The device according to any one of the preceding claims, wherein the requested data block processing unit is configured to monitor, during the booting process, data block requests for requesting data blocks from the storage. The device according to any one of the preceding claims, wherein the requested data block processing unit is configured to collect, during the booting process, information on data blocks, requested from the storage during the booting process. The device according to any one of the preceding claims, wherein the requested data block processing unit is configured to instruct storing of the requested data block set in the storage. The device according to any one of the preceding claims, wherein the pre-fetching unit is configured to retrieve and/or access, during the booting process, the data block set from the storage. The device according to any one of the preceding claims, wherein the device is a storage device, a hypervisor, or any other data processing device configured to process data. A method arranged to support execution of a booting process, wherein the method comprises at least one of the following steps: generating (201), during the booting process, a requested data block set, wherein each entry of the requested data block set comprises information on a data block, requested from a storage during the booting process; pre-fetching (202), during the booting process, for each entry of a data block set, from the storage a data block, information on which is stored in the entry of the data block set, wherein each entry of the requested data block set comprises information on a data block, requested from the storage during a previously executed booting process. 0. A computer program product comprising computer readable program code that is configured to cause a computing device to execute steps of method of claim 9.
1. A computer-readable recording medium configured to store therein a computer program product, which comprises a computer readable program code that is configured to cause a computing device to execute steps of method of claim 9.
PCT/EP2016/069717 2016-08-19 2016-08-19 Device and method arranged to support execution of a booting process Ceased WO2018033220A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201680087899.2A CN109564513A (en) 2016-08-19 2016-08-19 A device and method for supporting execution of a boot process
PCT/EP2016/069717 WO2018033220A1 (en) 2016-08-19 2016-08-19 Device and method arranged to support execution of a booting process

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2016/069717 WO2018033220A1 (en) 2016-08-19 2016-08-19 Device and method arranged to support execution of a booting process

Publications (1)

Publication Number Publication Date
WO2018033220A1 true WO2018033220A1 (en) 2018-02-22

Family

ID=56851558

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2016/069717 Ceased WO2018033220A1 (en) 2016-08-19 2016-08-19 Device and method arranged to support execution of a booting process

Country Status (2)

Country Link
CN (1) CN109564513A (en)
WO (1) WO2018033220A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030135729A1 (en) * 2001-12-14 2003-07-17 I/O Integrity, Inc. Apparatus and meta data caching method for optimizing server startup performance
US20080209198A1 (en) * 2007-02-26 2008-08-28 Majni Timothy W Boot Acceleration For Computer Systems
US20140129814A1 (en) * 2012-04-12 2014-05-08 Tencent Technology (Shenzhen) Company Limited Method and device, terminal and computer readable medium for accelerating startup of operating system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7607000B1 (en) * 2003-05-13 2009-10-20 Apple Inc. Method for booting an operating system
US7127600B2 (en) * 2003-09-30 2006-10-24 Intel Corporation Aggressive content pre-fetching during pre-boot runtime to support speedy OS booting
US8010776B2 (en) * 2007-12-17 2011-08-30 Spansion Llc Adaptive system boot accelerator for computing systems
US8230208B2 (en) * 2009-04-20 2012-07-24 Intel Corporation Booting an operating system of a system using a read ahead technique

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030135729A1 (en) * 2001-12-14 2003-07-17 I/O Integrity, Inc. Apparatus and meta data caching method for optimizing server startup performance
US20080209198A1 (en) * 2007-02-26 2008-08-28 Majni Timothy W Boot Acceleration For Computer Systems
US20140129814A1 (en) * 2012-04-12 2014-05-08 Tencent Technology (Shenzhen) Company Limited Method and device, terminal and computer readable medium for accelerating startup of operating system

Also Published As

Publication number Publication date
CN109564513A (en) 2019-04-02

Similar Documents

Publication Publication Date Title
EP2005295B1 (en) Direct boot arrangement using a nand flash memory
US9910664B2 (en) System and method of online firmware update for baseboard management controller (BMC) devices
US10007540B2 (en) Virtual machine reboot information persistence into host memory
JP6297715B2 (en) Compute device initialization trace
EP2840495A1 (en) Container-based processing method, device and system
JP2012508932A (en) Manage cache data and metadata
WO2014109007A1 (en) Storage hierarchical management system
BR112013027073B1 (en) computing device, method for providing a virtual bios for a virtual machine and computer-readable media
CN104685443B (en) Lock-on guidance data are faster to guide
JP7355876B2 (en) Program startup method, equipment, and storage medium
US20170308386A1 (en) Disk sector based remote storage booting
TW201502782A (en) Os bootloader caching in non-volatile memory
US10838737B1 (en) Restoration of memory content to restore machine state
CN121029314A (en) Processor Feature ID Response for Virtualization
WO2018033220A1 (en) Device and method arranged to support execution of a booting process
CN101950256A (en) Embedded system and method for resetting same
CN113950673B (en) Non-volatile storage partition identifier
CN117850982A (en) seL virtual machine security measurement method, seL virtual machine security measurement equipment and seL virtual machine security measurement medium
WO2018024327A1 (en) Device and method arranged to support execution of a booting process executed during an instant restore process
CN103729233A (en) Multiple virtual machines management method and device
CN112784276B (en) Method and device for realizing trusted measurement
JP2015191606A (en) Information processing apparatus, information processing apparatus control method, and information processing apparatus control program
JP6035993B2 (en) Information processing apparatus, apparatus management method, and apparatus management program
RU2780973C2 (en) Response with processor function identifier for virtualization
AU2015100549A4 (en) Pinning boot data for faster boot

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16758119

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16758119

Country of ref document: EP

Kind code of ref document: A1