US20140129665A1 - Dynamic data prefetching - Google Patents
Dynamic data prefetching Download PDFInfo
- Publication number
- US20140129665A1 US20140129665A1 US14/155,067 US201414155067A US2014129665A1 US 20140129665 A1 US20140129665 A1 US 20140129665A1 US 201414155067 A US201414155067 A US 201414155067A US 2014129665 A1 US2014129665 A1 US 2014129665A1
- Authority
- US
- United States
- Prior art keywords
- given
- storage
- computing device
- application
- mobile phone
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/08—Protocols specially adapted for terminal emulation, e.g. Telnet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/535—Tracking the activity of the user
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5681—Pre-fetching or pre-delivering data based on network characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/289—Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
Definitions
- At least one embodiment of the present invention pertains to cloud storage service, and more particularly, performing dynamic data prefetching on a computing device utilizing a cloud based file system.
- Cloud storage service is popular nowadays for providing online storage space to host user files. Users of a cloud storage service can upload files to the cloud and later access the uploaded files over the internet from the same or a different computing device.
- a cloud storage service can provide client applications for different types of computing devices.
- a user can use a computing device to download and install a client application of the cloud storage service at the device.
- the client application can enable the user to drop any file into a designated folder. Any file in the designated folder is synchronized with the cloud storage service.
- the user can then use the device or other devices having a client application installed to access these synchronized files stored the cloud storage service.
- the cloud storage service can further provide a web interface. Through the web interface, a user can upload files to and download files from the cloud storage service, without the need of installing the client application.
- the user needs to manually decide which files to be synchronized by dropping the files into the designated folder or drive.
- the designated folders or drives are generally treated as external folders or drives by the operating systems of the computing devices.
- the operating systems do not rely on the designated folders or drives to perform, and do not utilize the designated folders or drives to perform any operating system related tasks.
- a computing device includes a file system having multiple storage objects (e.g., files).
- the metadata of the storage objects are stored in local storage of the computing device.
- a remote storage server is responsible for storing the content data of the storage objects.
- the computing device presents the storage objects via an output device as if the content data are stored locally in the computing device.
- the computing device can further identify some of the storage objects that have a high possibility of being accessed by computer applications of the computing device, and caches the content data of these storage objects locally.
- a method for generating a prefetching profile for storage objects associated with an application executing on a computing device includes receiving, by a profile manager, a first storage object access pattern associated with a first instance of the application executing on the computing device, where a given storage object access pattern includes information regarding an access request for a given storage object from a given instance of the application.
- the given storage object access pattern includes information regarding a current execution state of the given instance of the application during at least one of one or more access requests for storage objects by the given instance of the application.
- the method includes receiving, by the profile manager, a second storage object access pattern associated with a second instance of the application executing on another computing device.
- the method further includes receiving, by the profile manager, a current execution state of the first instance of the application executing on the computing device.
- the method includes utilizing the first storage object access pattern and the second storage object access pattern to determine, by the profile manager, one or more future access requests for a subset of storage objects associated with the application, where the one or more future access requests is a function of the current execution state of the first instance of the application.
- the method further includes generating, by the profile manager, the prefetching profile utilizing the determined subset of storage objects.
- the computing device utilizes the prefetching profile and a metadata associated with the storage objects to gather content associated with one or more storage objects of the subset of storage objects, where the content associated with the given storage object is stored in a storage server while the metadata associated with the given storage object being stored in the computing device.
- FIG. 1 illustrates an example system for computing devices connected to a cloud storage server.
- FIG. 2 contains a diagram illustrating an example operating system of a computing device.
- FIG. 3 illustrates an example of photo devices connected to a cloud-based server.
- FIG. 4 illustrates an example of a process for managing a device file system integrated with a storage server.
- FIG. 5 illustrates an example of an alternative process for a cloud based file system that can surpass device storage limit.
- FIG. 6A contains a block diagram illustrating example components of a local prefetching module for an electronic device.
- FIG. 6B contains a diagram illustrating an example usage profile maintained by a local profile manager.
- FIG. 6C contains a diagram illustrating an example prefetching profile received by a local profile manager.
- FIG. 6D contains a block diagram illustrating example components of the global prefetching module.
- FIG. 7 contains a flowchart illustrating an example operation of a global profile manager.
- FIG. 8 contains a flowchart illustrating an example operation of the local prefetching module.
- FIG. 9 contains a high-level block diagram showing an example architecture of a computer server, which may represent any computer described herein.
- FIG. 1 illustrates an example system for computing devices connected to a cloud storage server.
- the system includes a cloud server 110 configured to communicate with the computing devices.
- the cloud server 110 can be a server cluster having computer nodes interconnected with each other by a network.
- the cloud server 110 can contain storage nodes 112 .
- Each of the storage nodes 112 contains one or more processors 114 and storage devices 116 .
- the storage devices can include optical disk storage, RAM, ROM, EEPROM, flash memory, phase change memory, magnetic cassettes, magnetic tapes, magnetic disk storage or any other computer storage medium which can be used to store the desired information.
- the computing devices 130 and 140 can each communicate with the cloud server 110 via network 120 .
- the network 120 can be, e.g., the Internet.
- FIG. 1 illustrates two computing devices 130 and 140 , a person having ordinary skill in the art will readily understand that the technology disclosed herein can be applied to a single computing device or more than two computing devices connected to the cloud server 110 .
- the computer applications 134 stored in the computing device 130 can include applications for general productivity and information retrieval, including email, calendar, contacts, and stock market and weather information.
- the computer applications 134 can also include applications in other categories, such as mobile games, factory automation, GPS and location-based services, banking, order-tracking, ticket purchases or any other categories as contemplated by a person having ordinary skill in the art.
- the kernel 204 may include a network I/O module 206 , a file I/O module 208 , a multi-threading module 210 , a user input module 214 , a system interrupts module 216 , and a shared memory access module 218 .
- the file system manager 220 maintains a file system including multiple files.
- the metadata of the files are stored in the local storage, while the content data of the files are stored in a remote cloud storage server.
- the file system manager 220 presents the files to the applications and users of the computing device, as if the content data are stored locally.
- the local prefetching module 230 is responsible to retrieve content data from the storage server as cache data based on the access pattern and other factors.
- Examples of photo devices 311 , 312 and 313 may include, but are not limited to, a mobile phone, a smartphone, a personal digital assistant (PDA), a tablet, a mobile game console, a laptop computer, a desktop computer, or any other devices having communication capability.
- PDA personal digital assistant
- Examples of photo devices 311 , 312 and 313 may include, but are not limited to, a mobile phone, a smartphone, a personal digital assistant (PDA), a tablet, a mobile game console, a laptop computer, a desktop computer, or any other devices having communication capability.
- PDA personal digital assistant
- the photo device 311 - 313 stores the metadata, e.g., the exchangeable image file format (EXIF) information and thumbnails of the photo files locally.
- the server 300 stores the content data of the photo files.
- server 300 may also monitor the file access patterns of the photo devices 311 - 313 and send content data of the files as cache data. For example, in some embodiments, server 300 may determine or identify, a photo file of photo device 311 that is frequently accessed and likely will be read again in near future. The server 300 may notify the device 311 and send the content data of the photo device 311 . The photo device 311 caches the content data of that photo file so that a read request of the photo file can be satisfied locally without sending a request to the server 300 .
- photo devices 311 , 312 and 313 can be, e.g., tablets, smart phones or laptop computers respectively.
- the server 300 is capable of storing content data of files designed for these different types of devices.
- FIG. 4 illustrates an example of a process 400 for managing a device file system integrated with a storage server.
- the process 400 starts at step 405 , where the computing device stores metadata of a plurality of storage objects (e.g. files) in a file system of the computing device, wherein a storage server stores content data of the plurality of storage objects.
- the computing device may store some of the content data as cache data. At least one of the content data of the plurality of storage objects is not stored locally in the computing device such that a maximum size of the file system can exceed a physical storage limit of the computing device.
- the computing device determines at least one storage object of the plurality of storage objects that has a high possibility to be read by computer applications of the computing device. For instance, the at least one storage object that has the high possibility to be read by the computer applications can be determined based on an access pattern to the plurality of storage objects on the computing device.
- the computing device caches the content data of the at least one storage object.
- the cached content data can be used for satisfying future read requests. For instance, at step 425 , the computing device receives a read request for a storage object from one of the computer applications running at the computing device. At step 430 , the computing device determines whether the content data of the storage object is cached at the computing device. If the content data of the storage object is cached at the computing device, at step 435 , the computing device reads the content data of the storage object from its cached location at the computing device. If the content data of the storage object is not cached at the computing device, at step 440 , the computing device requests the content data of the storage object from the storage server.
- the computing device receives a write request for a storage object from one of the computer applications.
- the computing device determines whether the content data of the storage object is cached at the computing device. If the content data of the storage object is cached at the computing device, at step 455 , the computing device updates the storage object based on the write request.
- the computing device synchronizes the updated storage object with the content data of the storage object in the storage server. If the content data of the storage object is not cached at the computing device, at step 465 , the computing device records a sequential list of changes to the storage object based on the write request into a log data structure.
- the computing device sends the log data structure to the server so that the server applies the sequential list of changes to one or more storage objects stored in the server based on the log data structure.
- the logic illustrated in FIG. 4 and described above, and in each of the flow diagrams discussed below if any, may be altered in a variety of ways. For example, the order of the logic may be rearranged, substeps may be performed in parallel, illustrated logic may be omitted, other logic may be included, etc.
- the write request may be received and handled by the computing device before receiving and handling the read request. Alternatively, the write and read requests can be received and handled in separate processes.
- a file system manager of a computing device can be responsible for creating the files in a way that metadata are stored in the local storage and that content data of the files are stored remotely.
- FIG. 5 illustrates an example of an alternative process 500 for a cloud based file system that can surpass device storage limit.
- the process 500 starts at step 505 , where a file system manager of a computing device receives an instruction from a first application running at the computing device to create a file stored at the computing device.
- the file system manager maintains a file system including files for the computing device having a total size larger than a storage limit of the local storage device of the computing device.
- the file system manager creates the file by storing metadata of the file in a local storage device of the computing device and transmitting content data of the file to a storage server, wherein he metadata include a link to a location where the storage server stores the content data of the file.
- Applications running at the computing device can read files managed by the file system manager of the computing device as if the content data of the files are stored in the local storage device of the computing device.
- the storage server stores at least a portion of the metadata of the file as well.
- the storage server may store file information data structures (e.g. inodes) for the content data, so that the storage server can identify the files to which the content data belong.
- the computing device presents, via an output device (e.g. display) of the computing device, the file as a file stored in the local storage device of the computing device based on the metadata of the file.
- the computing device may display or present, e.g., the filename, the directory in which the file is located, and a preview content (e.g., a thumbnail image or a preview clip) of the file.
- the user of the computing device perceives that the content of the file is locally stored in the computing device.
- the file system manager identifies a file having a tendency to be read by the computing device in future based on a file access pattern discovered by the file system manager.
- the file system manager can identify such tendency in different ways, e.g., as illustrated in diagrams discussed below.
- the file system manager caches the identified file in the local storage device by retrieving the content data of the identified file from the storage server.
- the file system manager receives an instruction to read the file from a second application running at the computing device.
- the first application which instructs to create the file and the second application which instructs to read the file may be the same application or different applications.
- the first and second applications can be the same word processing application that instructs to create and later to read a document file.
- the first application can be a file explorer application controlled by a user to create a new document file, while the second application can be a separate word processing application to read the document file.
- the file system manager determines whether the content data of the file is cached locally in the computing device. If so, at step 540 , the file system manager provides the location of the locally cached content data to the second application. Otherwise, at step 545 , the file system manager retrieves the content data of the file from the storage server based on the metadata including the link to the location. For instance, the file system manager may examine the metadata of the file to identify the location on the storage server where the content data of the file is stored, and then request the content data with the location from the storage server. At step 550 , the file system manager provides the content data to the application as if the local storage device stores the content data of the file.
- FIG. 6A contains a block diagram illustrating example components of a local prefetching module 630 for an electronic device.
- the local prefetching module 630 includes a local data manager 632 , a local profile manager 634 and a request handler 636 .
- the local profile manager 634 maintains one or more usage profiles in the primary store and sends them to the prefetching server. It can send the usage profiles periodically, as soon as there is an update, in response to a request from the prefetching server, and so on.
- FIG. 6B contains a diagram illustrating an example usage profile.
- a usage profile can contain any information about the activities performed on the electronic device in terms of required files. In one embodiment, the usage profile contains any information on access to the files stored in the primary store.
- Such information can include the name of a file, the type of the file (partial computer application, full computer application, application data, etc.), the size of the file, the time of access to the file, the type of access (read, write, etc.), the location of the electronic device at the time of access, and so on.
- the local profile manager 634 also receives prefetching profiles from the prefetching server and stores them in the primary store. It can also send requests to the prefetching server for the prefetching profiles periodically, when it has extra bandwidth available, and so on.
- FIG. 6C contains a diagram illustrating an example prefetching profile.
- a prefetching profile specifies files to be preloaded on an electronic device in anticipation of the user performing activities which require the files. For each of the specified files, information regarding the name, the type, the size, the access type, the likelihood that it is to be accessed within a predetermined timeframe, etc. can be included.
- the local data manager 632 sends requests to the cloud service to retrieve specific computer applications or application data. It can also send requests to whichever separate servers are hosting the computer applications or application data. In addition, the local data manager 632 receives the requested computer applications or application data and stores them in the primary store or the secondary store on the electronic device.
- the pace of sending the requests and storing the requested computer applications or application data can depend on where the requested computer applications or application data are to be stored, When they are to be stored in the primary store on the electronic device, it generally means that they are to be accessed immediately and the sending and storing could be performed without much delay, while when they are to be stored in the secondary store, it generally means that they are likely to be accessed in the near future and the sending and storing can be performed with some flexibility in timing.
- the local data manager 302 determines which requests for file retrieval to send and in what order. It may first filter the prefetching profile to remove any file that is already present in the primary store. Next, in one example, it may decide that requests are to be sent for all the files specified in the prefetching profile as the number of such files is small. In another example, it may decide that requests would first be sent for a predetermined number of files with the highest likelihoods or with the shortest time frames. On the other hand, when the size of the secondary store is limited, the local data manager 632 can enforce overwrite policies, such as cache algorithms known to someone of ordinary skill in the art.
- the request handler 636 accepts user requests for certain files and ultimately serves those files from the primary store. In general, it may first look in the primary store, which has pre installed or previously installed files. If the requested file is not there, it looks in the secondary store, which has prefetched files. It saves the requested file in the primary store before serving it in response to user requests.
- the prefetching server hosts a global prefetching module.
- FIG. 6D contains a block diagram illustrating example components of the global prefetching module 660 .
- the global prefetching module 660 includes a global data manager 662 , a global profile manager 664 and an analysis engine 666 .
- the global data manager 662 receives requests for computer applications or application data from the electronic devices and forwards them to the cloud service or other sources.
- the global data manager 662 also receives the requested computer applications or application data from the cloud service or other sources and forwards them to the electronic devices.
- the pace of forwarding the requests and the requested computer applications or application data can similarly depend on where the requested computer applications or application data are to be stored, as discussed above.
- the global profile manager 664 receives usage profiles from the electronic devices and forwards them to the cloud service for storage. It can forward a usage profile to the cloud service immediately upon receiving it from an electronic device. It can also forward the usage profiles received from an electronic device according to a preset schedule. In addition, it can forward the usage profiles received from multiple electronic devices in batches of a predetermined size or periodically. The global profile manager also maintains a global index of usage profiles in the local storage device indicating how to access the usage profiles stored with the cloud service.
- the global profile manager 664 also receives prefetching profiles from the cloud service and forwards them to the electronic devices. Similarly, it can forward a prefetching profile to the appropriate electronic device immediately or in response to a request from the electronic device for a prefetching profile. It can also wait to forward the prefetching profile together with a response to the next request from the electronic device, such as a request to retrieve certain computer application or application data. In addition, it can forward the prefetching profiles to one or more electronic devices according to a predetermined schedule.
- the analysis engine 666 manages analytical algorithms, the input to which are usage profiles and the output from which are prefetching profiles. Many types of analysis can be performed on the usage profiles, individually and collectively, to detect usage patterns (also referred to as data access patterns).
- the usage profiles may indicate that on an electronic device, a computer application or a part thereof is often executed or a piece of application data is often used on a certain day or at a certain time, when the computer application or the piece of application data has a certain size, immediately before or after another computer application or piece of application data, when the electronic device is at a certain location, when another electronic device is connected to the prefetching server, etc. The lack of execution or use can also be incorporated into the usage patterns.
- An example usage pattern may include playing video games and the order in which the different levels within the video games are played/accessed. Different levels of a game may often be accessed in an increasing order. The last few very difficult levels may never be accessed, and the levels before the currently accessed levels may also never be accessed again. So, by utilizing the usage profiles, different files can be associated with different access patterns and pre-fetched accordingly without knowing the nature of the files.
- the analysis engine 666 may utilize usage profiles of a computer application executing on multiple electronic devices (e.g., mobile phone) to generate a prefetching profile.
- the computer application may be a video game with multiple levels, where each level of the game involves accessing a particular subset of files.
- the electronic device may track the subset of files being accessed by the video game when a particular level of the game is being played.
- the electronic device may determine the particular level of the game being played (i.e. a current state of the application) by analyzing the data being accessed by the video game. For example, when a video game creates log files to track a player's actions, the data being written to the log file can be analyzed to determine the particular level of the game being played. The electronic device may then track the subset of files being accessed by the video game in association with the particular level of the game being played during the access.
- the particular level of the game being played i.e. a current state of the application
- the analysis engine 666 may utilize usage profiles of a computer application executing on one electronic device to generate a prefetching profile for the computer application executing on a different electronic device. For example, when different levels of the video game are being played in each of the two or more electronic devices, the analysis engine 666 may utilize the usage pattern observed with a previously played game level in one electronic device to generate a prefetching profile for the video game being played on the other electronic devices.
- the data associated with the later game levels yet to be played in the one electronic device can be prefetched using the data usage pattern observed with the previously played game level in the other electronic device. For example, when a given level in the video game is about to be played, the video game application may fetch a subset of files, e.g., new animated content, game settings file, etc., to setup the game level about to be played.
- the analysis engine 666 can dynamically learn and update the prefetching profile to be utilized by the application in another electronic device.
- the usage pattern may include photos or soundtracks in an album which are often accessed in the listed order. More recent albums may be accessed more frequently. Larger files may often be accessed on devices with better resources. Business-related files may often be accessed during the day or on an electronic device in the office, while files pertaining to entertainment may often be accessed at night or on an electronic device at home. Best-selling books in a city may be frequently accessed in that city and surrounding cities. Therefore, different files can be associated with different access patterns, which can be learned from the usage profiles without knowing the nature of the files.
- each analytical algorithm takes into consideration one or more of the usage patterns and selects a set of files for an electronic device that are likely to be accessed in the near future on the electronic device. It can assign different weights to different usage patterns. For example, it can prefer usage patterns reflecting more recent activities across electronic devices. It can also give more weight to usage patterns specific to the electronic device and/or those electronic devices owned by users similar to the owner of the electronic device. Furthermore, it can apply any classification, pattern-recognition and other techniques known to someone of ordinary skill in the art.
- the analysis engine 666 chooses one of the analytic algorithms, based on predetermined rules, user input, etc., and submits a request to the cloud service for executing the chosen analytic algorithm.
- the cloud service executes the chosen analytic algorithm on the stored usage profiles in a distributed manner and generates resulting prefetching profiles for the electronic devices.
- the analysis engine 666 can submit a request as soon as a predetermined number of updated usage profiles are stored with the cloud service, according to a preset schedule, when the rate of file retrieval is high indicating a low degree of prefetching success, and so on.
- FIG. 7 contains a flowchart illustrating an example operation of a global profile manager.
- the global profile manager receives usage profiles from the electronic devices at step 702 . It forwards the usage profiles to the cloud service for storage at step 704 . Subsequently, the global profile manager submits a request to execute an analytical algorithm maintained by the analysis engine to the cloud service at step 706 . When the execution is complete, the global profile manager receives prefetching profiles for the electronic devices at step 708 . Finally, it forwards each of the prefetching profiles to the appropriate electronic device at step 710 .
- FIG. 8 contains a flowchart illustrating an example operation of a local prefetching module.
- the request handler accepts a user request and determines whether a requested file is present in the primary store at step 802 . If the file is present, it serves the file at step 804 . If the file is not present, it determines whether the file is present in the secondary store at step 806 . If the file is present, it moves the file to the primary store at step 808 and serves the file at step 810 . If the file is not present, the local data manager retrieves the file from a source at step 712 and stores the retrieved file in the primary store at step 714 .
- FIG. 9 contains a high-level block diagram showing an example architecture of a computer, which may represent any device, any server, or any node within a cloud service as described herein.
- the computer 900 includes one or more processors 910 and memory 920 coupled to an interconnect 930 .
- the interconnect 930 shown in FIG. 9 is an abstraction that represents any one or more separate physical buses, point to point connections, or both connected by appropriate bridges, adapters, or controllers.
- the interconnect 930 may include, for example, a system bus, a Peripheral Component Interconnect (PCI) bus or PCI-Express bus, a HyperTransport or industry standard architecture (ISA) bus, a small computer system interface (SCSI) bus, a universal serial bus (USB), IIC (I2C) bus, or an Institute of Electrical and Electronics Engineers (IEEE) standard 1394 bus, also called “Firewire”.
- PCI Peripheral Component Interconnect
- ISA industry standard architecture
- SCSI small computer system interface
- USB universal serial bus
- I2C IIC
- IEEE Institute of Electrical and Electronics Engineers
- the processor(s) 910 is/are the central processing unit (CPU) of the computer 900 and, thus, control the overall operation of the computer 900 . In certain embodiments, the processor(s) 910 accomplish this by executing software or firmware stored in memory 920 .
- the processor(s) 910 may be, or may include, one or more programmable general-purpose or special-purpose microprocessors, digital signal processors (DSPs), programmable controllers, application specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), trusted platform modules (TPMs), or the like, or a combination of such devices.
- DSPs digital signal processors
- ASICs application specific integrated circuits
- PLDs programmable logic devices
- FPGAs field-programmable gate arrays
- TPMs trusted platform modules
- the memory 920 is or includes the main memory of the computer 900 .
- the memory 920 represents any form of random access memory (RAM), read-only memory (ROM), flash memory, or the like, or a combination of such devices.
- the memory 920 may contain code 970 containing instructions according to the techniques disclosed herein.
- the network adapter 940 provides the computer 900 with the ability to communicate with remote devices, over a network and may be, for example, an Ethernet adapter or Fibre Channel adapter.
- the network adapter 940 may also provide the computer 900 with the ability to communicate with other computers.
- the storage adapter 950 allows the computer 900 to access a persistent storage, and may be, for example, a Fibre Channel adapter or SCSI adapter.
- the code 970 stored in memory 920 may be implemented as software and/or firmware to program the processor(s) 910 to carry out actions described above.
- such software or firmware may be initially provided to the computer 900 by downloading it from a remote system through the computer 900 (e.g., via network adapter 940 ).
- the techniques introduced herein can be implemented by, for example, programmable circuitry (e.g., one or more microprocessors) programmed with software and/or firmware, or entirely in special-purpose hardwired circuitry, or in a combination of such forms.
- Software or firmware for use in implementing the techniques introduced here may be stored on a machine-readable storage medium and may be executed by one or more general-purpose or special-purpose programmable microprocessors.
- a “machine-readable storage medium”, as the term is used herein, includes any mechanism that can store information in a form accessible by a machine (a machine may be, for example, a computer, network device, cellular phone, personal digital assistant (PDA), manufacturing tool, any device with one or more processors, etc.).
- a machine-accessible storage medium includes recordable/non-recordable media (e.g., read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), etc.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- This application is a continuation-in-part of U.S. patent application Ser. No. 14/043,082, filed on Oct. 1, 2013, entitled “CLOUD BASED FILE SYSTEM SURPASSING DEVICE STORAGE LIMITS”, which claims the benefit of U.S. Provisional Patent Application No. 61/708,794, filed on Oct. 2, 2012, entitled “CLOUD COMPUTING INTEGRATED OPERATING SYSTEM”, which are incorporated by reference herein in their entirety.
- At least one embodiment of the present invention pertains to cloud storage service, and more particularly, performing dynamic data prefetching on a computing device utilizing a cloud based file system.
- Cloud storage service is popular nowadays for providing online storage space to host user files. Users of a cloud storage service can upload files to the cloud and later access the uploaded files over the internet from the same or a different computing device.
- A cloud storage service can provide client applications for different types of computing devices. A user can use a computing device to download and install a client application of the cloud storage service at the device. The client application can enable the user to drop any file into a designated folder. Any file in the designated folder is synchronized with the cloud storage service. The user can then use the device or other devices having a client application installed to access these synchronized files stored the cloud storage service. The cloud storage service can further provide a web interface. Through the web interface, a user can upload files to and download files from the cloud storage service, without the need of installing the client application.
- The user needs to manually decide which files to be synchronized by dropping the files into the designated folder or drive. The designated folders or drives are generally treated as external folders or drives by the operating systems of the computing devices. The operating systems do not rely on the designated folders or drives to perform, and do not utilize the designated folders or drives to perform any operating system related tasks.
- Technology introduced herein provides a mechanism to enable data prefetching on a computing device utilizing a cloud based file system. According to at least one embodiment, a computing device includes a file system having multiple storage objects (e.g., files). The metadata of the storage objects are stored in local storage of the computing device. A remote storage server is responsible for storing the content data of the storage objects. The computing device presents the storage objects via an output device as if the content data are stored locally in the computing device. The computing device can further identify some of the storage objects that have a high possibility of being accessed by computer applications of the computing device, and caches the content data of these storage objects locally.
- In accordance with the techniques introduced here, therefore, a method for generating a prefetching profile for storage objects associated with an application executing on a computing device is disclosed. The computing device can utilize the prefetching profile for storage objects to prefetch data. The method includes receiving, by a profile manager, a first storage object access pattern associated with a first instance of the application executing on the computing device, where a given storage object access pattern includes information regarding an access request for a given storage object from a given instance of the application.
- Further, the given storage object access pattern includes information regarding a current execution state of the given instance of the application during at least one of one or more access requests for storage objects by the given instance of the application. The method includes receiving, by the profile manager, a second storage object access pattern associated with a second instance of the application executing on another computing device.
- The method further includes receiving, by the profile manager, a current execution state of the first instance of the application executing on the computing device. The method includes utilizing the first storage object access pattern and the second storage object access pattern to determine, by the profile manager, one or more future access requests for a subset of storage objects associated with the application, where the one or more future access requests is a function of the current execution state of the first instance of the application.
- The method further includes generating, by the profile manager, the prefetching profile utilizing the determined subset of storage objects. The computing device utilizes the prefetching profile and a metadata associated with the storage objects to gather content associated with one or more storage objects of the subset of storage objects, where the content associated with the given storage object is stored in a storage server while the metadata associated with the given storage object being stored in the computing device.
- Other aspects of the technology introduced here will be apparent from the accompanying figures and from the detailed description which follows.
- These and other objects, features and characteristics of the present invention will become more apparent to those skilled in the art from a study of the following detailed description in conjunction with the appended claims and drawings, all of which form a part of this specification. In the drawings:
-
FIG. 1 illustrates an example system for computing devices connected to a cloud storage server. -
FIG. 2 contains a diagram illustrating an example operating system of a computing device. -
FIG. 3 illustrates an example of photo devices connected to a cloud-based server. -
FIG. 4 illustrates an example of a process for managing a device file system integrated with a storage server. -
FIG. 5 illustrates an example of an alternative process for a cloud based file system that can surpass device storage limit. -
FIG. 6A contains a block diagram illustrating example components of a local prefetching module for an electronic device. -
FIG. 6B contains a diagram illustrating an example usage profile maintained by a local profile manager. -
FIG. 6C contains a diagram illustrating an example prefetching profile received by a local profile manager. -
FIG. 6D contains a block diagram illustrating example components of the global prefetching module. -
FIG. 7 contains a flowchart illustrating an example operation of a global profile manager. -
FIG. 8 contains a flowchart illustrating an example operation of the local prefetching module. -
FIG. 9 contains a high-level block diagram showing an example architecture of a computer server, which may represent any computer described herein. - References in this specification to “an embodiment,” “one embodiment,” or the like, mean that the particular feature, structure, or characteristic being described is included in at least one embodiment of the present invention. Occurrences of such phrases in this specification do not all necessarily refer to the same embodiment, however.
-
FIG. 1 illustrates an example system for computing devices connected to a cloud storage server. The system includes acloud server 110 configured to communicate with the computing devices. In one embodiment, thecloud server 110 can be a server cluster having computer nodes interconnected with each other by a network. Thecloud server 110 can containstorage nodes 112. Each of thestorage nodes 112 contains one ormore processors 114 andstorage devices 116. The storage devices can include optical disk storage, RAM, ROM, EEPROM, flash memory, phase change memory, magnetic cassettes, magnetic tapes, magnetic disk storage or any other computer storage medium which can be used to store the desired information. - The
130 and 140 can each communicate with thecomputing devices cloud server 110 vianetwork 120. Thenetwork 120 can be, e.g., the Internet. AlthoughFIG. 1 illustrates two 130 and 140, a person having ordinary skill in the art will readily understand that the technology disclosed herein can be applied to a single computing device or more than two computing devices connected to thecomputing devices cloud server 110. - The
computing device 130 includes anoperating system 132 to manage the hardware resources of thecomputing device 130 and provides services for running computer applications 134 (e.g., mobile applications running on mobile devices). Thecomputer applications 134 stored in thecomputing device 130 require theoperating system 132 to properly run on thedevice 130. Thecomputing device 130 includes at least onelocal storage device 138 to store the computer applications and user data. The 130 or 140 can be a desktop computer, a laptop computer, a tablet computer, an automobile computer, a game console, a smart phone, a personal digital assistant, or other computing devices capable of running computer applications, as contemplated by a person having ordinary skill in the art.computing device - The
computer applications 134 stored in thecomputing device 130 can include applications for general productivity and information retrieval, including email, calendar, contacts, and stock market and weather information. Thecomputer applications 134 can also include applications in other categories, such as mobile games, factory automation, GPS and location-based services, banking, order-tracking, ticket purchases or any other categories as contemplated by a person having ordinary skill in the art. - The
operating system 132 of thecomputing device 130 can include afile system manager 136 to manage the file system of thecomputing device 130. Instead of storing all content data of the files of the file system directly in thelocal storage device 138 of thecomputing device 130, thefile system manager 136 can identify certain portions of the files suitable to be stored at thecloud server 110. The file system manager can store metadata of the files in thelocal storage device 138 and sends out content data of the files to thecloud server 110 so that thecloud server 110 stores the content data. - The
computer applications 134 running at thecomputing device 130 need not be aware that the content data of the files are stored in thecloud server 110, instead of thelocal storage device 138. Thecomputer applications 134 can read data from or write data to the files as if the files are stored in thelocal storage device 138. For instance, thecomputer applications 134 can generate read or write request having a location link of the file, in order to read or write data from a specific location of the file. Thefile system manager 136 is responsible to retrieve the content data of the file from thecloud server 110 to satisfy the read or write requests. Thefile system manager 136 can further cache certain content data of one or more files, when thefile system manager 136 determines that these files has a high probability to be read or written by theapplications 134 of thecomputing device 130. - In order to manage the files with content data stored in a remote cloud storage server, the operating system of the computing device can include a file manager module and a local prefetching module.
FIG. 2 illustrates anexample operating system 200 including afile manager module 220 and alocal prefetching module 230. In one embodiment, theoperating system 200 includes akernel 204. Thekernel 204 controls the computer applications running on top of thekernel 204. It provides interfaces to the hardware of the electronic device, thereby isolating the computer applications from the hardware. It may also include one or more intervening sources that can affect the execution of a computer application. For example, thekernel 204 may include a network I/O module 206, a file I/O module 208, amulti-threading module 210, auser input module 214, a system interruptsmodule 216, and a sharedmemory access module 218. - In one embodiment, the
file system manager 220 is responsible for managing a file system including files with content data stored in a remote cloud storage server. Thefile system manager 220 can run on top of thekernel 204 as illustrated in theFIG. 2 , or run as a part of the customizedkernel 204. Thelocal prefetching module 230 can also run on top of thekernel 204, or run as a part of the customizedkernel 204. As one example, thelocal prefetching module 230 can run in a user space file system (e.g. FUSE) on top of a Linux or Android kernel. Thelocal prefetching module 230 can be a module of theoperating system 200 separate from thefile system manager 220, or alternatively performs as a part of thefile system manager 220. - The
file system manager 220 maintains a file system including multiple files. The metadata of the files are stored in the local storage, while the content data of the files are stored in a remote cloud storage server. Thefile system manager 220 presents the files to the applications and users of the computing device, as if the content data are stored locally. Thelocal prefetching module 230 is responsible to retrieve content data from the storage server as cache data based on the access pattern and other factors. - The technology disclosed herein can be applied to various computing devices including, e.g., photo devices. For instance,
FIG. 3 illustrates an example of photo devices connected to a cloud-based server. As depicted inFIG. 3 , aserver 300 may provide a cloud-based service for storing content data of the photo files of the photo devices 311-313. Theserver 300 can further storing content data of other files of the photo devices, e.g., user profile files, application program files or operating system files. Thenetwork 320 can be, e.g., the Internet. Examples of 311, 312 and 313 may include, but are not limited to, a mobile phone, a smartphone, a personal digital assistant (PDA), a tablet, a mobile game console, a laptop computer, a desktop computer, or any other devices having communication capability.photo devices - The photo device 311-313 stores the metadata, e.g., the exchangeable image file format (EXIF) information and thumbnails of the photo files locally. The
server 300 stores the content data of the photo files. - In some embodiments,
server 300 may also monitor the file access patterns of the photo devices 311-313 and send content data of the files as cache data. For example, in some embodiments,server 300 may determine or identify, a photo file ofphoto device 311 that is frequently accessed and likely will be read again in near future. Theserver 300 may notify thedevice 311 and send the content data of thephoto device 311. Thephoto device 311 caches the content data of that photo file so that a read request of the photo file can be satisfied locally without sending a request to theserver 300. - A person having ordinary skill in the art can readily understands that the types of device illustrated in
FIG. 3 can be different. For example, 311, 312 and 313 can be, e.g., tablets, smart phones or laptop computers respectively. Thephoto devices server 300 is capable of storing content data of files designed for these different types of devices. - In order to achieve a file system exceeding the storage limit of local storage, the file system of the computing device is integrated with a storage server so that content data of the files can be stored in the storage server. The storage server acts as a remote high-performance scalable surrogate hardware resource for storing the content data of the files.
FIG. 4 illustrates an example of aprocess 400 for managing a device file system integrated with a storage server. Theprocess 400 starts atstep 405, where the computing device stores metadata of a plurality of storage objects (e.g. files) in a file system of the computing device, wherein a storage server stores content data of the plurality of storage objects. The computing device may store some of the content data as cache data. At least one of the content data of the plurality of storage objects is not stored locally in the computing device such that a maximum size of the file system can exceed a physical storage limit of the computing device. - The metadata of a storage object can include, e.g., means of creation of data in the storage object, purpose of data in the storage object, time and date of creation of the storage object, creator or author of data of the storage object, location on the storage server where the content data of the storage object are stored, title of the content data of the storage object, an inode data structure of the storage object, version information, or a sample presentation of the content data of the storage object. The sample presentation of the content data of the file can include, e.g., a reduced-size version of the content data, a sample clip or image of the content data, first few bytes of a set of streaming data, or a reduced-data-rate version of the content data.
- At step 410, the computing device presents one or more of the plurality of storage objects to a user of the computing device as if the content data of the storage objects are stored locally in the computing device. For instance, the computing device can use an output component to visualize a preview of at least one file of the files using the metadata of the file as if the content data of the file are stored locally in the storage component.
- At
step 415, the computing device determines at least one storage object of the plurality of storage objects that has a high possibility to be read by computer applications of the computing device. For instance, the at least one storage object that has the high possibility to be read by the computer applications can be determined based on an access pattern to the plurality of storage objects on the computing device. Atstep 420, the computing device caches the content data of the at least one storage object. - The cached content data can be used for satisfying future read requests. For instance, at
step 425, the computing device receives a read request for a storage object from one of the computer applications running at the computing device. Atstep 430, the computing device determines whether the content data of the storage object is cached at the computing device. If the content data of the storage object is cached at the computing device, atstep 435, the computing device reads the content data of the storage object from its cached location at the computing device. If the content data of the storage object is not cached at the computing device, atstep 440, the computing device requests the content data of the storage object from the storage server. - At
step 445, the computing device receives a write request for a storage object from one of the computer applications. Atstep 450, the computing device determines whether the content data of the storage object is cached at the computing device. If the content data of the storage object is cached at the computing device, atstep 455, the computing device updates the storage object based on the write request. At step 460, the computing device synchronizes the updated storage object with the content data of the storage object in the storage server. If the content data of the storage object is not cached at the computing device, atstep 465, the computing device records a sequential list of changes to the storage object based on the write request into a log data structure. At step 470, the computing device sends the log data structure to the server so that the server applies the sequential list of changes to one or more storage objects stored in the server based on the log data structure. - Those skilled in the art will appreciate that the logic illustrated in
FIG. 4 and described above, and in each of the flow diagrams discussed below if any, may be altered in a variety of ways. For example, the order of the logic may be rearranged, substeps may be performed in parallel, illustrated logic may be omitted, other logic may be included, etc. For instance, the write request may be received and handled by the computing device before receiving and handling the read request. Alternatively, the write and read requests can be received and handled in separate processes. - A file system manager of a computing device can be responsible for creating the files in a way that metadata are stored in the local storage and that content data of the files are stored remotely.
FIG. 5 illustrates an example of analternative process 500 for a cloud based file system that can surpass device storage limit. Theprocess 500 starts atstep 505, where a file system manager of a computing device receives an instruction from a first application running at the computing device to create a file stored at the computing device. The file system manager maintains a file system including files for the computing device having a total size larger than a storage limit of the local storage device of the computing device. - At step 510, the file system manager creates the file by storing metadata of the file in a local storage device of the computing device and transmitting content data of the file to a storage server, wherein he metadata include a link to a location where the storage server stores the content data of the file. Applications running at the computing device can read files managed by the file system manager of the computing device as if the content data of the files are stored in the local storage device of the computing device. In some embodiments, the storage server stores at least a portion of the metadata of the file as well. For instance, the storage server may store file information data structures (e.g. inodes) for the content data, so that the storage server can identify the files to which the content data belong.
- At
step 515, the computing device presents, via an output device (e.g. display) of the computing device, the file as a file stored in the local storage device of the computing device based on the metadata of the file. The computing device may display or present, e.g., the filename, the directory in which the file is located, and a preview content (e.g., a thumbnail image or a preview clip) of the file. The user of the computing device perceives that the content of the file is locally stored in the computing device. - At
step 520, the file system manager identifies a file having a tendency to be read by the computing device in future based on a file access pattern discovered by the file system manager. The file system manager can identify such tendency in different ways, e.g., as illustrated in diagrams discussed below. Atstep 525, the file system manager caches the identified file in the local storage device by retrieving the content data of the identified file from the storage server. - At
step 530, the file system manager receives an instruction to read the file from a second application running at the computing device. The first application which instructs to create the file and the second application which instructs to read the file may be the same application or different applications. For example, the first and second applications can be the same word processing application that instructs to create and later to read a document file. Alternatively in another example, the first application can be a file explorer application controlled by a user to create a new document file, while the second application can be a separate word processing application to read the document file. - At
step 535, the file system manager determines whether the content data of the file is cached locally in the computing device. If so, atstep 540, the file system manager provides the location of the locally cached content data to the second application. Otherwise, atstep 545, the file system manager retrieves the content data of the file from the storage server based on the metadata including the link to the location. For instance, the file system manager may examine the metadata of the file to identify the location on the storage server where the content data of the file is stored, and then request the content data with the location from the storage server. At step 550, the file system manager provides the content data to the application as if the local storage device stores the content data of the file. - The file system manager may use a local prefetching module to determine the content data of the files to be cached.
FIG. 6A contains a block diagram illustrating example components of alocal prefetching module 630 for an electronic device. In one embodiment, thelocal prefetching module 630 includes alocal data manager 632, alocal profile manager 634 and arequest handler 636. - In one embodiment, the
local profile manager 634 maintains one or more usage profiles in the primary store and sends them to the prefetching server. It can send the usage profiles periodically, as soon as there is an update, in response to a request from the prefetching server, and so on.FIG. 6B contains a diagram illustrating an example usage profile. A usage profile can contain any information about the activities performed on the electronic device in terms of required files. In one embodiment, the usage profile contains any information on access to the files stored in the primary store. Such information can include the name of a file, the type of the file (partial computer application, full computer application, application data, etc.), the size of the file, the time of access to the file, the type of access (read, write, etc.), the location of the electronic device at the time of access, and so on. - In one embodiment, the
local profile manager 634 also receives prefetching profiles from the prefetching server and stores them in the primary store. It can also send requests to the prefetching server for the prefetching profiles periodically, when it has extra bandwidth available, and so on.FIG. 6C contains a diagram illustrating an example prefetching profile. A prefetching profile specifies files to be preloaded on an electronic device in anticipation of the user performing activities which require the files. For each of the specified files, information regarding the name, the type, the size, the access type, the likelihood that it is to be accessed within a predetermined timeframe, etc. can be included. - In one embodiment, the
local data manager 632 sends requests to the cloud service to retrieve specific computer applications or application data. It can also send requests to whichever separate servers are hosting the computer applications or application data. In addition, thelocal data manager 632 receives the requested computer applications or application data and stores them in the primary store or the secondary store on the electronic device. The pace of sending the requests and storing the requested computer applications or application data can depend on where the requested computer applications or application data are to be stored, When they are to be stored in the primary store on the electronic device, it generally means that they are to be accessed immediately and the sending and storing could be performed without much delay, while when they are to be stored in the secondary store, it generally means that they are likely to be accessed in the near future and the sending and storing can be performed with some flexibility in timing. - In one embodiment, given a prefetching profile, the local data manager 302 determines which requests for file retrieval to send and in what order. It may first filter the prefetching profile to remove any file that is already present in the primary store. Next, in one example, it may decide that requests are to be sent for all the files specified in the prefetching profile as the number of such files is small. In another example, it may decide that requests would first be sent for a predetermined number of files with the highest likelihoods or with the shortest time frames. On the other hand, when the size of the secondary store is limited, the
local data manager 632 can enforce overwrite policies, such as cache algorithms known to someone of ordinary skill in the art. - In one embodiment, the
request handler 636 accepts user requests for certain files and ultimately serves those files from the primary store. In general, it may first look in the primary store, which has pre installed or previously installed files. If the requested file is not there, it looks in the secondary store, which has prefetched files. It saves the requested file in the primary store before serving it in response to user requests. - The prefetching server hosts a global prefetching module.
FIG. 6D contains a block diagram illustrating example components of theglobal prefetching module 660. In one embodiment, theglobal prefetching module 660 includes aglobal data manager 662, aglobal profile manager 664 and ananalysis engine 666. - In one embodiment, the
global data manager 662 receives requests for computer applications or application data from the electronic devices and forwards them to the cloud service or other sources. Theglobal data manager 662 also receives the requested computer applications or application data from the cloud service or other sources and forwards them to the electronic devices. The pace of forwarding the requests and the requested computer applications or application data can similarly depend on where the requested computer applications or application data are to be stored, as discussed above. - In one embodiment, the
global profile manager 664 receives usage profiles from the electronic devices and forwards them to the cloud service for storage. It can forward a usage profile to the cloud service immediately upon receiving it from an electronic device. It can also forward the usage profiles received from an electronic device according to a preset schedule. In addition, it can forward the usage profiles received from multiple electronic devices in batches of a predetermined size or periodically. The global profile manager also maintains a global index of usage profiles in the local storage device indicating how to access the usage profiles stored with the cloud service. - In one embodiment, the
global profile manager 664 also receives prefetching profiles from the cloud service and forwards them to the electronic devices. Similarly, it can forward a prefetching profile to the appropriate electronic device immediately or in response to a request from the electronic device for a prefetching profile. It can also wait to forward the prefetching profile together with a response to the next request from the electronic device, such as a request to retrieve certain computer application or application data. In addition, it can forward the prefetching profiles to one or more electronic devices according to a predetermined schedule. - In one embodiment, the
analysis engine 666 manages analytical algorithms, the input to which are usage profiles and the output from which are prefetching profiles. Many types of analysis can be performed on the usage profiles, individually and collectively, to detect usage patterns (also referred to as data access patterns). According to various embodiments, the usage profiles may indicate that on an electronic device, a computer application or a part thereof is often executed or a piece of application data is often used on a certain day or at a certain time, when the computer application or the piece of application data has a certain size, immediately before or after another computer application or piece of application data, when the electronic device is at a certain location, when another electronic device is connected to the prefetching server, etc. The lack of execution or use can also be incorporated into the usage patterns. - An example usage pattern may include playing video games and the order in which the different levels within the video games are played/accessed. Different levels of a game may often be accessed in an increasing order. The last few very difficult levels may never be accessed, and the levels before the currently accessed levels may also never be accessed again. So, by utilizing the usage profiles, different files can be associated with different access patterns and pre-fetched accordingly without knowing the nature of the files.
- In one embodiment, the
analysis engine 666 may utilize usage profiles of a computer application executing on multiple electronic devices (e.g., mobile phone) to generate a prefetching profile. For example, the computer application may be a video game with multiple levels, where each level of the game involves accessing a particular subset of files. As part of tracking the usage pattern, the electronic device may track the subset of files being accessed by the video game when a particular level of the game is being played. - In some embodiments, the electronic device may determine the particular level of the game being played (i.e. a current state of the application) by analyzing the data being accessed by the video game. For example, when a video game creates log files to track a player's actions, the data being written to the log file can be analyzed to determine the particular level of the game being played. The electronic device may then track the subset of files being accessed by the video game in association with the particular level of the game being played during the access.
- In some embodiments, the
analysis engine 666 may utilize usage profiles of a computer application executing on one electronic device to generate a prefetching profile for the computer application executing on a different electronic device. For example, when different levels of the video game are being played in each of the two or more electronic devices, theanalysis engine 666 may utilize the usage pattern observed with a previously played game level in one electronic device to generate a prefetching profile for the video game being played on the other electronic devices. - When the game level being played in one electronic device is lower than the previously played game level in another electronic device, the data associated with the later game levels yet to be played in the one electronic device can be prefetched using the data usage pattern observed with the previously played game level in the other electronic device. For example, when a given level in the video game is about to be played, the video game application may fetch a subset of files, e.g., new animated content, game settings file, etc., to setup the game level about to be played. By utilizing the usage pattern from one electronic device, the
analysis engine 666 can dynamically learn and update the prefetching profile to be utilized by the application in another electronic device. - Some additional example usage patterns are described as follows. The usage pattern may include photos or soundtracks in an album which are often accessed in the listed order. More recent albums may be accessed more frequently. Larger files may often be accessed on devices with better resources. Business-related files may often be accessed during the day or on an electronic device in the office, while files pertaining to entertainment may often be accessed at night or on an electronic device at home. Best-selling books in a city may be frequently accessed in that city and surrounding cities. Therefore, different files can be associated with different access patterns, which can be learned from the usage profiles without knowing the nature of the files.
- In one embodiment, each analytical algorithm takes into consideration one or more of the usage patterns and selects a set of files for an electronic device that are likely to be accessed in the near future on the electronic device. It can assign different weights to different usage patterns. For example, it can prefer usage patterns reflecting more recent activities across electronic devices. It can also give more weight to usage patterns specific to the electronic device and/or those electronic devices owned by users similar to the owner of the electronic device. Furthermore, it can apply any classification, pattern-recognition and other techniques known to someone of ordinary skill in the art.
- In one embodiment, the
analysis engine 666 chooses one of the analytic algorithms, based on predetermined rules, user input, etc., and submits a request to the cloud service for executing the chosen analytic algorithm. In response, the cloud service executes the chosen analytic algorithm on the stored usage profiles in a distributed manner and generates resulting prefetching profiles for the electronic devices. Theanalysis engine 666 can submit a request as soon as a predetermined number of updated usage profiles are stored with the cloud service, according to a preset schedule, when the rate of file retrieval is high indicating a low degree of prefetching success, and so on. -
FIG. 7 contains a flowchart illustrating an example operation of a global profile manager. In one embodiment, the global profile manager receives usage profiles from the electronic devices atstep 702. It forwards the usage profiles to the cloud service for storage atstep 704. Subsequently, the global profile manager submits a request to execute an analytical algorithm maintained by the analysis engine to the cloud service atstep 706. When the execution is complete, the global profile manager receives prefetching profiles for the electronic devices atstep 708. Finally, it forwards each of the prefetching profiles to the appropriate electronic device atstep 710. -
FIG. 8 contains a flowchart illustrating an example operation of a local prefetching module. In one embodiment, the request handler accepts a user request and determines whether a requested file is present in the primary store atstep 802. If the file is present, it serves the file atstep 804. If the file is not present, it determines whether the file is present in the secondary store atstep 806. If the file is present, it moves the file to the primary store atstep 808 and serves the file atstep 810. If the file is not present, the local data manager retrieves the file from a source at step 712 and stores the retrieved file in the primary store at step 714. -
FIG. 9 contains a high-level block diagram showing an example architecture of a computer, which may represent any device, any server, or any node within a cloud service as described herein. Thecomputer 900 includes one ormore processors 910 andmemory 920 coupled to aninterconnect 930. Theinterconnect 930 shown inFIG. 9 is an abstraction that represents any one or more separate physical buses, point to point connections, or both connected by appropriate bridges, adapters, or controllers. Theinterconnect 930, therefore, may include, for example, a system bus, a Peripheral Component Interconnect (PCI) bus or PCI-Express bus, a HyperTransport or industry standard architecture (ISA) bus, a small computer system interface (SCSI) bus, a universal serial bus (USB), IIC (I2C) bus, or an Institute of Electrical and Electronics Engineers (IEEE) standard 1394 bus, also called “Firewire”. - The processor(s) 910 is/are the central processing unit (CPU) of the
computer 900 and, thus, control the overall operation of thecomputer 900. In certain embodiments, the processor(s) 910 accomplish this by executing software or firmware stored inmemory 920. The processor(s) 910 may be, or may include, one or more programmable general-purpose or special-purpose microprocessors, digital signal processors (DSPs), programmable controllers, application specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), trusted platform modules (TPMs), or the like, or a combination of such devices. - The
memory 920 is or includes the main memory of thecomputer 900. Thememory 920 represents any form of random access memory (RAM), read-only memory (ROM), flash memory, or the like, or a combination of such devices. In use, thememory 920 may containcode 970 containing instructions according to the techniques disclosed herein. - Also connected to the processor(s) 910 through the
interconnect 930 are anetwork adapter 940 and astorage adapter 950. Thenetwork adapter 940 provides thecomputer 900 with the ability to communicate with remote devices, over a network and may be, for example, an Ethernet adapter or Fibre Channel adapter. Thenetwork adapter 940 may also provide thecomputer 900 with the ability to communicate with other computers. Thestorage adapter 950 allows thecomputer 900 to access a persistent storage, and may be, for example, a Fibre Channel adapter or SCSI adapter. - The
code 970 stored inmemory 920 may be implemented as software and/or firmware to program the processor(s) 910 to carry out actions described above. In certain embodiments, such software or firmware may be initially provided to thecomputer 900 by downloading it from a remote system through the computer 900 (e.g., via network adapter 940). - The techniques introduced herein can be implemented by, for example, programmable circuitry (e.g., one or more microprocessors) programmed with software and/or firmware, or entirely in special-purpose hardwired circuitry, or in a combination of such forms. Software or firmware for use in implementing the techniques introduced here may be stored on a machine-readable storage medium and may be executed by one or more general-purpose or special-purpose programmable microprocessors.
- A “machine-readable storage medium”, as the term is used herein, includes any mechanism that can store information in a form accessible by a machine (a machine may be, for example, a computer, network device, cellular phone, personal digital assistant (PDA), manufacturing tool, any device with one or more processors, etc.). For example, a machine-accessible storage medium includes recordable/non-recordable media (e.g., read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), etc.
- In addition to the above mentioned examples, various other modifications and alterations of the invention may be made without departing from the invention. Accordingly, the above disclosure is not to be considered as limiting and the appended claims are to be interpreted as encompassing the true spirit and the entire scope of the invention.
Claims (21)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/155,067 US8732355B1 (en) | 2012-10-02 | 2014-01-14 | Dynamic data prefetching |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201261708794P | 2012-10-02 | 2012-10-02 | |
| US14/043,082 US10042623B2 (en) | 2012-10-02 | 2013-10-01 | Cloud based file system surpassing device storage limits |
| US14/155,067 US8732355B1 (en) | 2012-10-02 | 2014-01-14 | Dynamic data prefetching |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/043,082 Continuation-In-Part US10042623B2 (en) | 2012-10-02 | 2013-10-01 | Cloud based file system surpassing device storage limits |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20140129665A1 true US20140129665A1 (en) | 2014-05-08 |
| US8732355B1 US8732355B1 (en) | 2014-05-20 |
Family
ID=50623425
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/155,067 Active US8732355B1 (en) | 2012-10-02 | 2014-01-14 | Dynamic data prefetching |
Country Status (1)
| Country | Link |
|---|---|
| US (1) | US8732355B1 (en) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140258222A1 (en) * | 2013-03-05 | 2014-09-11 | Xiaofeng Guo | Managing network storage with a user-level file sysem |
| US9984088B1 (en) * | 2015-03-31 | 2018-05-29 | Maginatics Llc | User driven data pre-fetch |
| US10713173B2 (en) * | 2018-09-06 | 2020-07-14 | Intel Corporation | Memory controller with pre-loader |
| US11436336B2 (en) * | 2019-09-23 | 2022-09-06 | The Toronto-Dominion Bank | Systems and methods for evaluating data access signature of third-party applications |
| EP4090442A4 (en) * | 2020-03-17 | 2024-05-22 | Valve Corporation | Tracking file system read operations for instant play of video games, and for client-side discarding and prefetching of game data |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9335832B2 (en) * | 2011-12-23 | 2016-05-10 | Sap Se | Executing system actions corresponding to user inputs |
| US10397368B2 (en) | 2015-06-25 | 2019-08-27 | International Business Machines Corporation | Data prefetching for large data systems |
| US10310980B2 (en) | 2016-04-01 | 2019-06-04 | Seagate Technology Llc | Prefetch command optimization for tiered storage systems |
| US12412123B2 (en) | 2020-11-20 | 2025-09-09 | Samsung Electronics Co., Ltd. | Electronic apparatus and controlling method thereof |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020133537A1 (en) | 2001-03-12 | 2002-09-19 | Whizz Technology Ltd. | Server cluster and server-side cooperative caching method for use with same |
| US6721870B1 (en) * | 2001-06-12 | 2004-04-13 | Emc Corporation | Prefetch algorithm for short sequences |
| US7937404B2 (en) | 2005-02-04 | 2011-05-03 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
| US7865570B2 (en) * | 2005-08-30 | 2011-01-04 | Illinois Institute Of Technology | Memory server |
| CN101535992A (en) | 2006-09-17 | 2009-09-16 | 诺基亚公司 | Adaptable caching architecture and data transfer for portable devices |
| US7603526B2 (en) * | 2007-01-29 | 2009-10-13 | International Business Machines Corporation | Systems and methods for providing dynamic memory pre-fetch |
| US20090150511A1 (en) | 2007-11-08 | 2009-06-11 | Rna Networks, Inc. | Network with distributed shared memory |
| US8214608B2 (en) * | 2008-11-04 | 2012-07-03 | Gridiron Systems, Inc. | Behavioral monitoring of storage access patterns |
| KR101694984B1 (en) | 2010-12-08 | 2017-01-11 | 한국전자통신연구원 | Method of parity updates in asymmetric clustering filesystem |
| US8539163B1 (en) * | 2010-12-17 | 2013-09-17 | Amazon Technologies, Inc. | Speculative reads |
| WO2013122574A1 (en) * | 2012-02-14 | 2013-08-22 | Empire Technology Development Llc | Player matching in a game system |
| US8850162B2 (en) * | 2012-05-22 | 2014-09-30 | Apple Inc. | Macroscalar vector prefetch with streaming access detection |
-
2014
- 2014-01-14 US US14/155,067 patent/US8732355B1/en active Active
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140258222A1 (en) * | 2013-03-05 | 2014-09-11 | Xiaofeng Guo | Managing network storage with a user-level file sysem |
| US9223795B2 (en) * | 2013-03-05 | 2015-12-29 | Xiaofeng Guo | Managing network storage with a user-level file system |
| US9984088B1 (en) * | 2015-03-31 | 2018-05-29 | Maginatics Llc | User driven data pre-fetch |
| US10891259B2 (en) | 2015-03-31 | 2021-01-12 | Maginatics Llc | User driven data pre-fetch |
| US10713173B2 (en) * | 2018-09-06 | 2020-07-14 | Intel Corporation | Memory controller with pre-loader |
| US11232035B2 (en) * | 2018-09-06 | 2022-01-25 | Intel Corporation | Memory controller with pre-loader |
| US11436336B2 (en) * | 2019-09-23 | 2022-09-06 | The Toronto-Dominion Bank | Systems and methods for evaluating data access signature of third-party applications |
| US11947678B2 (en) | 2019-09-23 | 2024-04-02 | The Toronto-Dominion Bank | Systems and methods for evaluating data access signature of third-party applications |
| EP4090442A4 (en) * | 2020-03-17 | 2024-05-22 | Valve Corporation | Tracking file system read operations for instant play of video games, and for client-side discarding and prefetching of game data |
| US12357908B2 (en) | 2020-03-17 | 2025-07-15 | Valve Corporation | Tracking file system read operations for instant play of video games, and for client-side discarding and prefetching of game data |
Also Published As
| Publication number | Publication date |
|---|---|
| US8732355B1 (en) | 2014-05-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8762456B1 (en) | Generating prefetching profiles for prefetching data in a cloud based file system | |
| US8732355B1 (en) | Dynamic data prefetching | |
| US12197292B2 (en) | Tiered cloud storage for different availability and performance requirements | |
| US9952753B2 (en) | Predictive caching and fetch priority | |
| JP6621543B2 (en) | Automatic update of hybrid applications | |
| US9020892B2 (en) | Efficient metadata storage | |
| US9268655B2 (en) | Interface for resolving synchronization conflicts of application states | |
| US10561946B2 (en) | File prefetching for gaming applications accessed by electronic devices | |
| JP7626560B2 (en) | Method, system and program for predictive provisioning of remote files | |
| US9716666B2 (en) | Process cage providing attraction to distributed storage | |
| US9529812B1 (en) | Timestamp handling for partitioned directories | |
| US20180060053A1 (en) | Evolving streaming installation of software applications | |
| CA3167864C (en) | Predictive provisioning of remotely-stored files | |
| JP2013196216A (en) | Server device, retrieval method and program |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: NEXTBIT SYSTEMS INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHAN, MICHAEL A.;FLEMING, MICHAEL K.;QUAN, JUSTIN;REEL/FRAME:032332/0027 Effective date: 20140114 |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| AS | Assignment |
Owner name: PINNACLE VENTURES, L.L.C., AS AGENT, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:NEXTBIT SYSTEMS INC.;REEL/FRAME:037184/0762 Effective date: 20151201 |
|
| FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| FEPP | Fee payment procedure |
Free format text: PAT HOLDER NO LONGER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: STOL); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| AS | Assignment |
Owner name: NEXTBIT SYSTEMS INC., CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:PINNACLE VENTURES, L.L.C., AS AGENT;REEL/FRAME:041519/0146 Effective date: 20170126 |
|
| AS | Assignment |
Owner name: RAZER (ASIA-PACIFIC) PTE. LTD., SINGAPORE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NEXTBIT SYSTEMS INC.;REEL/FRAME:041980/0254 Effective date: 20170126 |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |