US20150271096A1 - Allocation of Client Device Memory for Content from Content Sources - Google Patents
Allocation of Client Device Memory for Content from Content Sources Download PDFInfo
- Publication number
- US20150271096A1 US20150271096A1 US14/298,130 US201414298130A US2015271096A1 US 20150271096 A1 US20150271096 A1 US 20150271096A1 US 201414298130 A US201414298130 A US 201414298130A US 2015271096 A1 US2015271096 A1 US 2015271096A1
- Authority
- US
- United States
- Prior art keywords
- content
- client device
- additional
- memory
- content source
- 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.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/78—Architectures of resource allocation
- H04L47/783—Distributed allocation of resources, e.g. bandwidth brokers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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/30—Profiles
- H04L67/303—Terminal profiles
-
- 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
Definitions
- This disclosure generally relates to memory allocation, and more specifically to allocation of memory to different content.
- computing devices Users of computing devices interact with an increasing amount of content, many computing devices have become more portable. While increasing the convenience of computing device use, increasing the portability of computing devices can limit certain resources. For example, as computing devices become smaller, the smaller size constrains resources available for various components of computing devices.
- an increasing amount of content from various sources is available for consumption by a computing device.
- the size of available content increases, allowing higher-resolution or more detailed content to be accessed from sources.
- This increase in content size may limit a user's ability to fluidly interact with content via a computing device.
- content from a source may have a larger size than the amount of storage available on a user's computing device, which may limit the user too accessing a portion of the content from the source
- FIG. 1 is a block diagram of a system environment, in accordance with an embodiment.
- FIG. 2 is a block diagram of a client device, in accordance with an embodiment.
- FIG. 3 is an interaction diagram of a method for distributing memory for content between multiple client devices, in accordance with an embodiment.
- FIG. 4 is a flow chart of a method for allocating memory of a client device among content from multiple content sources, in accordance with an embodiment.
- a client device allocates memory for use by various content sources, so content from different content sources is stored in different portions of the memory. Additionally, the client device may partition content from a content source so a portion of the content is stored in the client device's memory and an additional portion of the content is stored in an additional client device's memory. For example, if a size of content from a content source exceeds an amount of memory allocated by the client device for use by the content source, the client device request use of a portion of a memory of an additional client device to store a portion of the content. The client device determines a portion of content from the content source to be stored in the client device's memory and identifies an additional portion of the content to an additional client device for storage in the additional client device's memory.
- the additional client device requests the additional portion of the content from the content source and stores the additional portion in its memory.
- the client device retrieves the additional portion of the content from the additional client device and combines the portion of the content stored in its memory with the additional portion of the content stored by the additional client device.
- the client device identifies content received from different content sources and determines a measure of usability of content received from different content sources. Based on the measures of usability, the client device determines quality scores for each content source from which content was received and allocates a portion of the client device's memory to a content source based on the quality score of the content source. For example, the client device determines a total quality score by combining quality scores for all content sources from which content was received and determines a ratio of the quality score of a content source to the total quality score. An amount of the client device's memory is allocated to the content source based on the ratio.
- a percentage of the client device's available memory is allocated to a content source based on the ratio of the quality score for the content source to the total quality score.
- the client device may modify allocation of its memory among content sources at a periodic interval to improve user interaction with content.
- FIG. 1 is a block diagram of a system environment 100 including multiple client devices 110 A, 110 B, 110 C (also referred to individually and collectively using reference number 110 ), a network 120 , and multiple content sources 130 A, 130 B (also referred to individually and collectively using reference number 130 ).
- client devices 110 A, 110 B, 110 C also referred to individually and collectively using reference number 110
- network 120 also referred to individually and collectively using reference number 130
- content sources 130 A, 130 B also referred to individually and collectively using reference number 130
- any number of client device 110 or content sources 130 are included in the system environment 110 .
- different and/or additional components may be included in the system environment 100 .
- a client device 110 is one or more computing devices capable of receiving user input as well as transmitting and/or receiving data via the network 120 .
- the client device 110 is a computer system, such as a desktop or a laptop computer.
- the client device 110 is any device with computing functionality, such as a personal digital assistant (PDA), a mobile telephone, a smartphone, a tablet computer or another suitable device.
- PDA personal digital assistant
- a client device 110 may include instructions for executing one or more applications that modify data or exchange data with a content source 130 .
- the client device 110 executes a browser that receives content from a content source 130 and presents the content to a user of the client device 110 .
- the client device 110 interacts with a content source 130 through an application programming interface (API) running on a native operating system of the client device 110 , such as IOS® or ANDROIDTM.
- API application programming interface
- FIG. 1 shows three client devices 110 A, 110 B, 110 C, in various embodiments, any number of client devices 110 may be included in the system environment 100 .
- the client devices 110 A, 110 B, 110 C and the content sources 130 A, 130 B communicate with each other via the network 120 , which may comprise any combination of local area and/or wide area networks, using both wired and/or wireless communication systems.
- the network 120 uses standard communications technologies and/or protocols.
- the network 120 includes communication links using technologies such as Ethernet, 802.11, worldwide interoperability for microwave access (WiMAX), 3G, 4G, code
- a content source 130 is a computing system capable of providing various types of content to a client device 110 .
- Examples of content provided by a content source 130 include text, images, video, or audio on web pages, web feeds, social networking information, messages, or other suitable data. Additional examples of content include user-generated content such as blogs, tweets, shared images, video or audio, social networking posts, and social networking status updates.
- Content provided by a content source 130 may be received from a publisher and distributed by the content source 130 , or a content source 130 may generate and distribute content itself.
- Content from a content source 130 may be referred to herein as a “content item” or as “content.”
- Content provided by a content source 130 may include multiple types of data, such as text data, image data, video data, or audio data.
- FIG. 2 is a block diagram of one embodiment of a client device 110 .
- the client device 110 includes a processor 205 , a storage device 210 , a memory 215 , a memory allocation module 220 , a display device 225 , an input device 230 , and a communication module 235 .
- the client device 110 may include different and/or additional components than those described in conjunction with FIG. 2 .
- the client device 110 includes one or more processors 205 , which retrieve and execute instructions from the storage device 210 or the memory 215 . Additionally, a processor 205 receives information from the input device 230 and executes one or more instructions included in the received information.
- the storage device 210 is a persistent storage device including data and/or instructions for execution by the processor 205 or for presentation to a user of the client device. Examples of a storage device 210 include a solid-state drive, a flash memory drive, a hard drive, or other suitable persistent storage device.
- the memory 215 stores instructions for execution by one or more processor 205 .
- the memory 215 is a volatile storage medium, while the storage device 210 is a non-volatile storage medium. Examples of a volatile storage medium include random access memory (RAM), static random access memory (SRAM), and dynamic random access memory (DRAM).
- RAM random access memory
- SRAM static random access memory
- DRAM dynamic random access memory
- Storing data or instructions in the memory 215 allows a processor 205 to retrieve the data or instructions more rapidly than data or instructions stored in the storage device 210 .
- the data or instructions included in the memory 215 may be modified at various time intervals or in response to data received from a processor 205 .
- the memory 215 is partitioned into a plurality of regions that are each associated with an identifier.
- a slot represents a specified amount of the memory 215 and is associated with an address, allowing data stored in the slot to be retrieved using the address.
- different data may be stored in different slots and subsequently retrieved based on the identifiers associated with the slots.
- the memory allocation module 220 distributes storage of content between multiple client devices 110 and allocates portions of the memory 215 for use by various content sources 130 .
- the memory allocation module 220 determines whether a size of content from a content source 130 exceeds an amount of memory 215 allocated for use by the content source 130 and requests use of a portion of a memory of an additional client device 110 for storing a portion of the content.
- the memory allocation module 220 determines a portion of content from a content source 130 to be stored in the memory 215 of the client device 110 and identifies an additional portion of the content to an additional client device 110 for storage in a memory 215 of the additional client device 110 .
- the memory allocation module 220 determines the amount of memory 215 allocated for use by the content source 130 is sufficient to store the content, retrieves the additional portion of the content from the additional client device 110 and generates the content by combining the portion of the content stored in the memory and the additional portion of the content stored by the additional client device 110 . Distribution of memory for storing content across multiple client devices 110 is further described below in conjunction with FIG. 3 .
- the memory allocation module 220 allocates portions of the memory 215 of the client device 110 for storing content received from different content sources 130 .
- the memory allocation module 220 identifies content received from different content sources 130 and determines a measure of usability of content received from different content sources 130 . Based on the measures of usability, the memory allocation module 220 determines a quality score for various content sources 130 and allocates a portion of the memory 215 to a content source 130 based on the quality score of the content source 130 .
- the memory allocation module 220 determines a total quality score by combining quality scores for all content sources 130 from which content was received and determines a ratio of the quality score of a content source to the total quality score; an amount of memory 215 is allocated to the content source 130 based on the ratio. In one embodiment, a percentage of memory 215 available is allocated to a content source 130 based on the ratio of the quality score for the content source 130 to the total quality score. Allocation of amounts of the memory 215 to content sources 130 is further described below in conjunction with FIG. 4 .
- a display device 225 presents content and other information to a user of the client device 110 .
- Examples of the display device 225 include a liquid crystal display (LCD), an organic light emitting diode (OLED) display, an active matrix liquid crystal display (AMLCD), or any other suitable device.
- Different client devices 110 may have display devices 225 with different sizes, different resolutions, or other different characteristics.
- FIG. 2 shows a single input device 230 ; however, the client device 110 may include multiple input devices 230 in various embodiments.
- the input device 230 receives input from a user of the client device 110 .
- Examples of the input device 230 include a touch-sensitive display, a keyboard, a dial pad, a mouse, and a trackpad. Using a touch-sensitive display allows the client device 110 to combine the display device 225 and the input device 230 , simplifying user interaction with presented content.
- Inputs received via the input device 230 are be processed by the processor 205 and may be communicated to a content source 130 or to another client device 110 via the communication module 235 .
- the communication module 235 transmits data from the client device 110 to another client device 110 or to a content source 130 via the network 120 . Additionally, the communication module 235 receives data via the network 120 (e.g., data from another client device 110 or a content source 130 ) and communicates the received data to one or more components of the client device 110 .
- the communication module 235 is a wireless transceiver configured to transmit data using one or more wireless communication protocols.
- Example wireless communication protocols include: Global System of Mobile (GSM), Code Division, Multiple Access (CDMA), General Packet Radio Service (GPRS), third-generation (3G) mobile, fourth-generation mobile (4G), High Speed Download Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA), Long-Term Evolution (LTE) and Worldwide Interoperability for Microwave Access (WiMAX).
- GSM Global System of Mobile
- CDMA Code Division, Multiple Access
- GPRS General Packet Radio Service
- 3G Third-generation mobile
- High Speed Download Packet Access HSDPA
- High Speed Uplink Packet Access HSUPA
- LTE Long-Term Evolution
- WiMAX Worldwide Interoperability for Microwave Access
- the communication module 235 enables connection to the network 120 through a wired communication protocol such as Ethernet. While FIG. 2 shows a single communication module 235 , multiple communication modules 235 may be included in a client device 110 in some embodiments.
- FIG. 3 is an interaction diagram of a method for distributing memory for content between multiple client devices 110 . While FIG. 3 shows an example where memory for storing content is allocated among two client devices 110 A, 110 B, in other embodiments memory may be allocated between any number of client devices. Additionally, other embodiments may include different or additional steps than those shown in FIG. 3 .
- a client device 110 A requests 305 content from a content source 130 .
- the client device 110 A requests text, audio, or video data from the content source 130 .
- the content source 130 transmits 310 a content identifier associated with content and an indication of the size of the content to the client device 110 A.
- the size of the content indicates an amount of memory for storing the content. For example, if memory is partitioned into various slots, the size indicates a number of slots for storing the content.
- the client device 110 A determines 315 whether the size of the content exceeds an amount of memory allocated by the client device 110 A for the content source 130 .
- the client device 110 A allocations different portions of a memory 215 of the client device 110 A to different content sources 130 , so content received from a content source 130 is stored in the portion of the memory 215 associated with the content source 130 by the client device 110 A. For example, the client device 110 A compares a number of slots of the memory allocated to the content source 130 to a number of slots indicated by the size of the content.
- the client device 110 A determines 315 that the size of the content does not exceed the amount of memory allocated to the content source 130 by the client device 110 A, the client device 110 A requests the content from the content source 130 and subsequently receives the content from the content source 130 . The client device 110 A then stores the content in the memory 215 allocated to the content source 130 , allowing subsequent retrieval of the content from the memory 215 of the client device 110 A. However, if the client device 110 A determines 315 that the size of the content exceeds the amount of memory allocated to the content source, the client device 110 A transmits 320 a request to an additional client device 110 B to allocate memory for the content. The request includes the content identifier and information identifying a set of the content to be stored on the additional client device 110 B.
- the additional client device 110 B transmits a message to the client device 110 A specifying if the additional client device 110 B is capable of allocating memory for the content. If the message indicates the additional client device 110 B is unable to allocate memory for the content, the client device 110 A transmits a request to another client device to allocate memory for the content. In some embodiments, the message transmitted from the additional client device 110 B to the client device 110 A specifies an amount of memory that the additional client device 110 B is capable of allocating to the content. The client device 110 A may then transmit additional requests to other client devices 110 to allocate memory for the content based on the amount of memory the additional client device 110 B is capable of allocating to the content.
- the client device 110 A determines 315 it has memory allocated to the content source 130 capable of storing 50% of the content, the client device 110 A transmits 320 a request to the additional client device 110 B to allocate memory for the content.
- the additional client device 110 B transmits a message to the client device 110 A that the additional client device 110 B is capable of allocating an amount of memory in which 40% of the content is capable of being stored; hence, the client device 110 A and the additional client device 110 B have available memory to store 90% of the content, so the client device 110 A transmits a request to one or more additional client devices 110 to allocate memory for storing the remaining 10% of the content.
- the client device 110 A stores an association between the content identifier and an identifier associated with the additional client device 110 B, as well as identifiers associated with other client devices 110 , having allocated memory for storing the content.
- the additional client device 110 B allocates 325 memory for the content source 130 , and transmits 327 an acknowledgment to the client device 110 A indicating the additional client device 110 B allocated 325 an amount of memory for the content source 130 .
- the additional client device 110 B may transmit a message to the client device 110 B if the additional client device 110 B is unable to allocate 325 memory for the content source 130 .
- the client device 110 A After receiving the acknowledgement that the additional client device 110 B has allocated 325 memory for the content source, the client device 110 A transmits 330 a request for a portion of the content to the content source 130 .
- the size of the portion of the content is determined based on the amount of memory allocated for the content source 130 by the client device 110 A and the size of the content. For example, the client device 110 A transmits 330 a request to the content source 130 for a portion of the content having a size equaling the amount of memory allocated for the content source 130 by the client device 110 A. Alternatively, the client device 110 A transmits 330 a request for a portion of the content having a size that is a specified amount of the amount of memory allocated for the content source 130 by the client device 110 A.
- the client device 110 A allocates a specified number of slots of memory 215 for the content source 130 , and a request for a number of slots of the content less than or equal to the specified number of slots is transmitted 330 from the client device 110 A to the content source 130 .
- the content source 130 transmits 340 the portion of the content to the client device 110 A, which stores 350 the portion of the content in the memory allocated to the content store 130 . Additionally, the client device 110 A transmits 335 an identifier of an additional portion of the content to be stored by the additional client device 110 B.
- the identifier includes the content identifier associated with the content and information for retrieving the additional portion of the content from the content source 130 .
- the content comprises a plurality of slots, with each slot associated with an identifier, and the request includes an identifier of an initial slot of the additional portion of the content.
- the client device 110 A When the client device 110 A receives the portion of the content from the content source 130 , the client device 110 A transmits 342 a confirmation message to the additional client device 110 B. In some embodiments, the client device 110 A transmits 342 the confirmation message after storing 350 the portion of the content. After receiving the confirmation message, the additional client device 110 B transmits 345 a request for the additional portion of the content to the content source 130 based on the identifier of the additional portion of the content. The request includes the content identifier and information for retrieving the additional portion of the content, such as an identifier associated with an initial slot of the additional portion of the content and a number of slots comprising the additional portion of the content. In some embodiments, the additional client device 110 B receives a cancellation message from the client
- the content source 130 transmits 355 the additional portion of the content to the additional client device 110 B, which stores 360 the additional portion of the content in the memory allocated to the content source by the additional client device 110 B.
- the additional portion of the content is stored 360 by the additional client device 110 B
- a message is transmitted 365 from the additional client device 110 B to the client device 110 A indicating that the additional portion of the content has been stored 360 by the additional client device 110 B.
- the message transmitted 365 by the additional client device 110 B includes the content identifier and an acknowledgment that the additional client device 110 B has stored 360 the additional portion of the content.
- the client device 110 A if the client device 110 A has not allocated sufficient memory to the content source 130 to store the content, the client device 110 A communicates with the additional client device 110 B, which allocates a portion of the memory of the additional client device 110 B so the content is stored by the client device 110 A and the additional client device 110 B. While FIG. 3 shows an example where content is partitioned among the client device 110 A and the additional client device 110 B, in other embodiments content is partitioned among the client device 110 A and multiple other client devices 110 .
- the client device 110 A requests 370 the additional portion of the content from the additional client device 110 B.
- the additional portion of the content is transmitted 375 from the additional client device 110 B to the client device 110 A, which generates 380 the content from the portion of the content and the additional portion of the content.
- the client device 110 A transmits the content identifier of the content to the additional client device 110 B, which transmits 375 data associated with the content identifier and stored by the additional client device 110 B, such as identifiers associated with one or more slots of the additional portion of the content.
- the additional client device 110 B transmits 375 the content identifier and an identifier associated with an initial slot of the additional portion of the content, and the client device 110 A generates 380 the content by appending slots associated with the additional portion of the content to the portion of the content.
- the additional portion of the content and the portion of the content are combined to generate 380 the content, which is stored by the client device 110 A.
- the additional client device 110 B removes 385 the additional portion of the content from its memory after transmitting 370 the additional portion of the content to the client device 110 A. For example, the client device 110 A transmits an acknowledgement to the additional client device 110 B when the additional portion of the content is received by the client device 110 A or after the client device 110 A generates 380 the content, and the additional client device 110 B removes 385 the additional portion of the content after receiving the acknowledgment. Additionally, in some embodiments, the additional client device 110 B removes 385 the additional portion of the content after a specified time interval, even if the additional portion of the content was not transmitted 375 to the client device 110 A.
- FIG. 4 is a flow chart of a method for allocating memory of a client device 110 among content from multiple content sources 130 .
- the steps shown by FIG. 4 may be performed in different orders. Additionally, other embodiments may include different or additional steps than those shown in FIG. 4 .
- a client device 110 includes instructions that cause a processor 205 included in the client device 110 to perform the steps described in conjunction with FIG. 4 when executed by the processor 205 .
- the client device 110 requests 405 content from multiple content sources 130 and initially allocates 410 available portions of a memory 215 of the client device 110 to different content sources 130 .
- the client device 110 requests 405 content from a specified number of content sources 130 and initially allocates 410 equal portions of the available memory to each client device 110 .
- the client device 110 requests 405 content from four content sources 130 , and allocates 410 25% of the available memory to each of the four content sources 130 .
- the client device 110 initially allocates 410 available portions of the memory 215 to various content sources 130 based on historical interaction with content from the content sources 130 by a client device user.
- the client device 110 initially allocates 410 available memory to various content sources 130 based on amounts of memory previously allocated to different content sources 130 .
- the client device 110 limits storage of content from a content source 130 to a portion of the memory allocated 410 to the content source 130 .
- the client device 110 receives 415 content from various content sources 130 and stores content from a content source 130 in a portion of the available memory allocated to the content source 130 . For each content source 130 from which content was received, the client device 110 determines 420 a quality score. The quality score determined 420 for a content source 130 provides a measure of the usability of the content received 415 from the content source 130 . Content's usability is based on attributes of the content and prior interactions by a user of the client device 110 with additional content having matching or similar attributes to the content.
- a measure of usability is proportional to a frequency with which the user previously interacted with additional content having at least a threshold number of attributes matching, or similar to, attributes of the content with which the user frequently interacted has a higher measure of usability than content or is proportional to a number of prior interactions by the user with additional content having at least the threshold number of attributes matching, or similar to, attributes of the content.
- different types of interactions with content are associated with different weights, and a measure of usability for received content is determined based on a number of different types of prior interactions with content having at least a threshold number of attributes matching, or similar to, attributes of the content and the weights associated with the types of interactions.
- Example attributes of content include: a content source 130 associated with the content, a resolution of the content, metadata associated with the content (e.g., an author, a genre, a summary, a title, a date, etc.), a size of the content, or other suitable information associated with the content. Additionally, characteristics of the client device 110 may be used to modify the measure of usability of content.
- the size of a display device 225 may be compared to attributes of content, with the comparison modifying the measure of usability of the content.
- the quality score for a content source 130 is a ratio of a measure of usability of the content received 415 from the content source 130 to a total measure of usability of content received from multiple content sources 130 .
- a quality score for a content source 130 is a ratio of a measure of usability of content received from the content source to a total measure of usability of content received from all content sources 130 from which content was received 415 .
- the quality score for a content source 130 may be any suitable value based on the usability of content received from the content source 130 .
- the client device 110 determines a quality factor for each content item received from a content source 130 .
- a content source 130 provides the client device 110 with information describing multiple content items, and the client device 110 determines a quality factor for each content item based on the provided information.
- the quality factors for individual content items may be communicated to a content source 130 from which the content items were received, allowing the content source 130 to account for the quality factor along with other information about a user of the client device 110 maintained by the content source 130 to modify content subsequently selected for the user by the content source 130 .
- the quality factor associated with a content item may be presented to a user of the client device 110 may be presented to the user along with a description of the content item to provide the user with information describing memory allocation
- the client device 110 may communicate 425 the quality score for a content source 130 to the content source 130 .
- a content source 130 may use the quality score to modify subsequent selection of content for use by the client device 110 .
- a content source 130 modifies types of content items or attributes of content items subsequently selected if the quality score is less than a threshold value. This allows a content source 130 to provide the client device 110 with increasingly usable content over time, which may improve interaction with content from the content source 130 by a user of the client device 110 .
- the client device 110 modifies 430 the amount of memory allocated to different content sources 130 .
- the amount of memory allocated to a content source 130 is modified 430 to an amount that is proportional to the quality score associated with the content source 130 .
- a ratio of a quality score of a content source 130 to a total quality score from the quality scores associated with all content sources 130 form which content was received 415 is used to modify 430 the memory allocation.
- the amount of memory allocated to the content source 130 is modified 430 to (0.7)/(0.3+0.7), or 70%, of the available memory while the amount of memory allocated to the additional content source 130 is modified 430 to (0.3)/(0.7+0.3), or 30%, of the available memory.
- the amount of memory allocated to a content source 130 is a percentage of the available memory determined by a percentage of the quality score of the content source 130 of the total quality scores associated with content sources 130 from which content was received 415 .
- the memory allocated to a content source 130 is modified 430 in any suitable manner. For example, content sources 130 from which content is received 415 are ranked based on their quality scores. Based on the ranking, amounts of memory are allocated to various content sources 130 . In one embodiment, different positions in the ranking are associated with percentages of memory 215 , and a content source 130 is allocated an amount of memory based on its position in the ranking.
- the client device 110 determines 420 additional quality scores for the various content sources 130 based on the additional content, as described above. Based on the additional quality scores, the client device 110 modifies 430 the amount of memory allocated to the various content sources, allowing the client device 110 to dynamically modify 430 memory allocation among various content sources 130 as content is received.
- the additional quality scores may also be communicated 425 to the content sources 130 to allow the content sources to further improve selection of content for communication to the client device 110 .
- FIGS. 3 and 4 describe embodiments where a client device 110 obtains content from a content source 130 external to the client device 110
- the methods described in conjunction with FIGS. 3 and 4 may be used to allocate memory for content obtained from content providers internal to the client device 110 .
- a client device 110 may allocate memory 215 for storing content included in the storage device 110 and associated with various applications executing on the client device 110 as described above in conjunction with FIG. 3 or may distribute inclusion of content associated with an application executing on the client device 110 between the memory 215 of the client device 110 and a memory 215 of an additional client device 110 .
- memory may be allocated or distributed as described above in conjunction with FIGS. 3 and 4 for content received from a combination of content sources 130 external to a client device 110 and internal to the client device 110 .
- the quality scores associated with content sources 130 may be used to allocate memory 215 of a client device 110 to various content sources 130 ; however, the client device 110 may use the quality scores to provide other functionality.
- the client device 110 may rank content sources 130 based on their associated quality scores, and present content received from various content sources 130 based on the ranking. For example, received content is search results received from different search providers, and the client device 110 ranks the search providers based on their associated quality scores.
- the client device 110 Based on the ranking of the search providers, the client device 110 presents search results received from different search providers; for example, the client device 110 presents a listing of search results received from various search providers, with search results located in the listing based in part on the position of the search provider from which the search results were received in the ranking. In one embodiment, search results from search providers having a higher position in the ranking are presented in more prominent position in the listing.
- a software module is implemented with a computer program product comprising a computer-readable medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described.
- Embodiments may also relate to an apparatus for performing the operations herein.
- This apparatus may be specially constructed for the required purposes, and/or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer.
- a computer program may be stored in a non-transitory, tangible computer readable storage medium, or any type of media suitable for storing electronic instructions, which may be coupled to a computer system bus.
- any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
- Embodiments may also relate to a product that is produced by a computing process described herein.
- a product may comprise information resulting from a computing process, where the information is stored on a non-transitory, tangible computer readable storage medium and may include any embodiment of a computer program product or other data combination described herein.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
Abstract
A client device presents content received from various content sources to a user. Different portions of the client device's memory are allocated for storing content from different content sources. The client device determines a quality score for a content source based on usability of content received from the content source. Based on the quality score for a content source, the client device allocates a portion of its memory for content from the content source. Additionally, if content from a content source is larger than an amount of memory allocated to the content source, the client device stores a portion of the content and requests storage of an additional portion of the content by an additional client device. When the client device has sufficient memory to store the content, the additional portion is retrieved from the additional client device and combined with the portion of the content.
Description
- This application claims the benefit of U.S. Provisional Application No. 61/969,803, filed Mar. 24, 2014, which is incorporated by reference in its entirety.
- This disclosure generally relates to memory allocation, and more specifically to allocation of memory to different content.
- Users of computing devices interact with an increasing amount of content, many computing devices have become more portable. While increasing the convenience of computing device use, increasing the portability of computing devices can limit certain resources. For example, as computing devices become smaller, the smaller size constrains resources available for various components of computing devices.
- However, an increasing amount of content from various sources is available for consumption by a computing device. Additionally, the size of available content increases, allowing higher-resolution or more detailed content to be accessed from sources. This increase in content size may limit a user's ability to fluidly interact with content via a computing device. For example, content from a source may have a larger size than the amount of storage available on a user's computing device, which may limit the user too accessing a portion of the content from the source
-
FIG. 1 is a block diagram of a system environment, in accordance with an embodiment. -
FIG. 2 is a block diagram of a client device, in accordance with an embodiment. -
FIG. 3 is an interaction diagram of a method for distributing memory for content between multiple client devices, in accordance with an embodiment. -
FIG. 4 is a flow chart of a method for allocating memory of a client device among content from multiple content sources, in accordance with an embodiment. - The figures depict various embodiments for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein.
- A client device allocates memory for use by various content sources, so content from different content sources is stored in different portions of the memory. Additionally, the client device may partition content from a content source so a portion of the content is stored in the client device's memory and an additional portion of the content is stored in an additional client device's memory. For example, if a size of content from a content source exceeds an amount of memory allocated by the client device for use by the content source, the client device request use of a portion of a memory of an additional client device to store a portion of the content. The client device determines a portion of content from the content source to be stored in the client device's memory and identifies an additional portion of the content to an additional client device for storage in the additional client device's memory. The additional client device requests the additional portion of the content from the content source and stores the additional portion in its memory. When the client device the amount of its memory allocated for use by the content source is sufficient to store the content, the client device retrieves the additional portion of the content from the additional client device and combines the portion of the content stored in its memory with the additional portion of the content stored by the additional client device.
- Additionally, the client device identifies content received from different content sources and determines a measure of usability of content received from different content sources. Based on the measures of usability, the client device determines quality scores for each content source from which content was received and allocates a portion of the client device's memory to a content source based on the quality score of the content source. For example, the client device determines a total quality score by combining quality scores for all content sources from which content was received and determines a ratio of the quality score of a content source to the total quality score. An amount of the client device's memory is allocated to the content source based on the ratio. In one embodiment, a percentage of the client device's available memory is allocated to a content source based on the ratio of the quality score for the content source to the total quality score. The client device may modify allocation of its memory among content sources at a periodic interval to improve user interaction with content.
-
FIG. 1 is a block diagram of asystem environment 100 includingmultiple client devices network 120, andmultiple content sources client device 110 orcontent sources 130 are included in thesystem environment 110. Additionally, in alternative configurations, different and/or additional components may be included in thesystem environment 100. - A
client device 110 is one or more computing devices capable of receiving user input as well as transmitting and/or receiving data via thenetwork 120. In one embodiment, theclient device 110 is a computer system, such as a desktop or a laptop computer. Alternatively, theclient device 110 is any device with computing functionality, such as a personal digital assistant (PDA), a mobile telephone, a smartphone, a tablet computer or another suitable device. Aclient device 110 may include instructions for executing one or more applications that modify data or exchange data with acontent source 130. For example, theclient device 110 executes a browser that receives content from acontent source 130 and presents the content to a user of theclient device 110. In another embodiment, theclient device 110 interacts with acontent source 130 through an application programming interface (API) running on a native operating system of theclient device 110, such as IOS® or ANDROID™. Anexample client device 110 is further described below in conjunction withFIG. 2 . WhileFIG. 1 shows threeclient devices client devices 110 may be included in thesystem environment 100. - The
client devices content sources network 120, which may comprise any combination of local area and/or wide area networks, using both wired and/or wireless communication systems. In one embodiment, thenetwork 120 uses standard communications technologies and/or protocols. For example, thenetwork 120 includes communication links using technologies such as Ethernet, 802.11, worldwide interoperability for microwave access (WiMAX), 3G, 4G, code - A
content source 130 is a computing system capable of providing various types of content to aclient device 110. Examples of content provided by acontent source 130 include text, images, video, or audio on web pages, web feeds, social networking information, messages, or other suitable data. Additional examples of content include user-generated content such as blogs, tweets, shared images, video or audio, social networking posts, and social networking status updates. Content provided by acontent source 130 may be received from a publisher and distributed by thecontent source 130, or acontent source 130 may generate and distribute content itself. For convenience, content from acontent source 130, regardless of its composition, may be referred to herein as a “content item” or as “content.” Content provided by acontent source 130 may include multiple types of data, such as text data, image data, video data, or audio data. -
FIG. 2 is a block diagram of one embodiment of aclient device 110. In the example shown byFIG. 2 , theclient device 110 includes aprocessor 205, astorage device 210, amemory 215, amemory allocation module 220, adisplay device 225, aninput device 230, and acommunication module 235. However, in other embodiments, theclient device 110 may include different and/or additional components than those described in conjunction withFIG. 2 . - The
client device 110 includes one ormore processors 205, which retrieve and execute instructions from thestorage device 210 or thememory 215. Additionally, aprocessor 205 receives information from theinput device 230 and executes one or more instructions included in the received information. Thestorage device 210 is a persistent storage device including data and/or instructions for execution by theprocessor 205 or for presentation to a user of the client device. Examples of astorage device 210 include a solid-state drive, a flash memory drive, a hard drive, or other suitable persistent storage device. - The
memory 215 stores instructions for execution by one ormore processor 205. In various embodiments, thememory 215 is a volatile storage medium, while thestorage device 210 is a non-volatile storage medium. Examples of a volatile storage medium include random access memory (RAM), static random access memory (SRAM), and dynamic random access memory (DRAM). Storing data or instructions in thememory 215 allows aprocessor 205 to retrieve the data or instructions more rapidly than data or instructions stored in thestorage device 210. The data or instructions included in thememory 215 may be modified at various time intervals or in response to data received from aprocessor 205. - In one embodiment, the
memory 215 is partitioned into a plurality of regions that are each associated with an identifier. For example, a slot represents a specified amount of thememory 215 and is associated with an address, allowing data stored in the slot to be retrieved using the address. Hence, different data may be stored in different slots and subsequently retrieved based on the identifiers associated with the slots. - The
memory allocation module 220 distributes storage of content betweenmultiple client devices 110 and allocates portions of thememory 215 for use byvarious content sources 130. In various embodiments, thememory allocation module 220 determines whether a size of content from acontent source 130 exceeds an amount ofmemory 215 allocated for use by thecontent source 130 and requests use of a portion of a memory of anadditional client device 110 for storing a portion of the content. For example, thememory allocation module 220 determines a portion of content from acontent source 130 to be stored in thememory 215 of theclient device 110 and identifies an additional portion of the content to anadditional client device 110 for storage in amemory 215 of theadditional client device 110. When thememory allocation module 220 determines the amount ofmemory 215 allocated for use by thecontent source 130 is sufficient to store the content, thememory allocation module 220 retrieves the additional portion of the content from theadditional client device 110 and generates the content by combining the portion of the content stored in the memory and the additional portion of the content stored by theadditional client device 110. Distribution of memory for storing content acrossmultiple client devices 110 is further described below in conjunction withFIG. 3 . - Additionally, the
memory allocation module 220 allocates portions of thememory 215 of theclient device 110 for storing content received fromdifferent content sources 130. In one embodiment, thememory allocation module 220 identifies content received fromdifferent content sources 130 and determines a measure of usability of content received fromdifferent content sources 130. Based on the measures of usability, thememory allocation module 220 determines a quality score forvarious content sources 130 and allocates a portion of thememory 215 to acontent source 130 based on the quality score of thecontent source 130. For example, thememory allocation module 220 determines a total quality score by combining quality scores for allcontent sources 130 from which content was received and determines a ratio of the quality score of a content source to the total quality score; an amount ofmemory 215 is allocated to thecontent source 130 based on the ratio. In one embodiment, a percentage ofmemory 215 available is allocated to acontent source 130 based on the ratio of the quality score for thecontent source 130 to the total quality score. Allocation of amounts of thememory 215 tocontent sources 130 is further described below in conjunction withFIG. 4 . - A
display device 225 presents content and other information to a user of theclient device 110. Examples of thedisplay device 225 include a liquid crystal display (LCD), an organic light emitting diode (OLED) display, an active matrix liquid crystal display (AMLCD), or any other suitable device.Different client devices 110 may havedisplay devices 225 with different sizes, different resolutions, or other different characteristics. - For purposes of illustration,
FIG. 2 shows asingle input device 230; however, theclient device 110 may includemultiple input devices 230 in various embodiments. Theinput device 230 receives input from a user of theclient device 110. Examples of theinput device 230 include a touch-sensitive display, a keyboard, a dial pad, a mouse, and a trackpad. Using a touch-sensitive display allows theclient device 110 to combine thedisplay device 225 and theinput device 230, simplifying user interaction with presented content. Inputs received via theinput device 230 are be processed by theprocessor 205 and may be communicated to acontent source 130 or to anotherclient device 110 via thecommunication module 235. - The
communication module 235 transmits data from theclient device 110 to anotherclient device 110 or to acontent source 130 via thenetwork 120. Additionally, thecommunication module 235 receives data via the network 120 (e.g., data from anotherclient device 110 or a content source 130) and communicates the received data to one or more components of theclient device 110. For example, thecommunication module 235 is a wireless transceiver configured to transmit data using one or more wireless communication protocols. Example wireless communication protocols include: Global System of Mobile (GSM), Code Division, Multiple Access (CDMA), General Packet Radio Service (GPRS), third-generation (3G) mobile, fourth-generation mobile (4G), High Speed Download Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA), Long-Term Evolution (LTE) and Worldwide Interoperability for Microwave Access (WiMAX). In some embodiment, thecommunication module 235 enables connection to thenetwork 120 through a wired communication protocol such as Ethernet. WhileFIG. 2 shows asingle communication module 235,multiple communication modules 235 may be included in aclient device 110 in some embodiments. -
FIG. 3 is an interaction diagram of a method for distributing memory for content betweenmultiple client devices 110. WhileFIG. 3 shows an example where memory for storing content is allocated among twoclient devices FIG. 3 . - A
client device 110A requests 305 content from acontent source 130. For example, theclient device 110A requests text, audio, or video data from thecontent source 130. Thecontent source 130 transmits 310 a content identifier associated with content and an indication of the size of the content to theclient device 110A. The size of the content indicates an amount of memory for storing the content. For example, if memory is partitioned into various slots, the size indicates a number of slots for storing the content. - When the
client device 110A receives the content identifier and the size of the content from thecontent source 130, theclient device 110A determines 315 whether the size of the content exceeds an amount of memory allocated by theclient device 110A for thecontent source 130. In various embodiments, theclient device 110A allocations different portions of amemory 215 of theclient device 110A todifferent content sources 130, so content received from acontent source 130 is stored in the portion of thememory 215 associated with thecontent source 130 by theclient device 110A. For example, theclient device 110A compares a number of slots of the memory allocated to thecontent source 130 to a number of slots indicated by the size of the content. - If the
client device 110A determines 315 that the size of the content does not exceed the amount of memory allocated to thecontent source 130 by theclient device 110A, theclient device 110A requests the content from thecontent source 130 and subsequently receives the content from thecontent source 130. Theclient device 110A then stores the content in thememory 215 allocated to thecontent source 130, allowing subsequent retrieval of the content from thememory 215 of theclient device 110A. However, if theclient device 110A determines 315 that the size of the content exceeds the amount of memory allocated to the content source, theclient device 110A transmits 320 a request to anadditional client device 110B to allocate memory for the content. The request includes the content identifier and information identifying a set of the content to be stored on theadditional client device 110B. - In one embodiment, the
additional client device 110B transmits a message to theclient device 110A specifying if theadditional client device 110B is capable of allocating memory for the content. If the message indicates theadditional client device 110B is unable to allocate memory for the content, theclient device 110A transmits a request to another client device to allocate memory for the content. In some embodiments, the message transmitted from theadditional client device 110B to theclient device 110A specifies an amount of memory that theadditional client device 110B is capable of allocating to the content. Theclient device 110A may then transmit additional requests toother client devices 110 to allocate memory for the content based on the amount of memory theadditional client device 110B is capable of allocating to the content. For example, if theclient device 110A determines 315 it has memory allocated to thecontent source 130 capable of storing 50% of the content, theclient device 110A transmits 320 a request to theadditional client device 110B to allocate memory for the content. In this example, theadditional client device 110B transmits a message to theclient device 110A that theadditional client device 110B is capable of allocating an amount of memory in which 40% of the content is capable of being stored; hence, theclient device 110A and theadditional client device 110B have available memory to store 90% of the content, so theclient device 110A transmits a request to one or moreadditional client devices 110 to allocate memory for storing the remaining 10% of the content. Theclient device 110A stores an association between the content identifier and an identifier associated with theadditional client device 110B, as well as identifiers associated withother client devices 110, having allocated memory for storing the content. - The
additional client device 110B allocates 325 memory for thecontent source 130, and transmits 327 an acknowledgment to theclient device 110A indicating theadditional client device 110B allocated 325 an amount of memory for thecontent source 130. In some embodiments, theadditional client device 110B may transmit a message to theclient device 110B if theadditional client device 110B is unable to allocate 325 memory for thecontent source 130. - After receiving the acknowledgement that the
additional client device 110B has allocated 325 memory for the content source, theclient device 110A transmits 330 a request for a portion of the content to thecontent source 130. The size of the portion of the content is determined based on the amount of memory allocated for thecontent source 130 by theclient device 110A and the size of the content. For example, theclient device 110A transmits 330 a request to thecontent source 130 for a portion of the content having a size equaling the amount of memory allocated for thecontent source 130 by theclient device 110A. Alternatively, theclient device 110A transmits 330 a request for a portion of the content having a size that is a specified amount of the amount of memory allocated for thecontent source 130 by theclient device 110A. For example, theclient device 110A allocates a specified number of slots ofmemory 215 for thecontent source 130, and a request for a number of slots of the content less than or equal to the specified number of slots is transmitted 330 from theclient device 110A to thecontent source 130. - The
content source 130 transmits 340 the portion of the content to theclient device 110A, which stores 350 the portion of the content in the memory allocated to thecontent store 130. Additionally, theclient device 110A transmits 335 an identifier of an additional portion of the content to be stored by theadditional client device 110B. The identifier includes the content identifier associated with the content and information for retrieving the additional portion of the content from thecontent source 130. For example, the content comprises a plurality of slots, with each slot associated with an identifier, and the request includes an identifier of an initial slot of the additional portion of the content. - When the
client device 110A receives the portion of the content from thecontent source 130, theclient device 110A transmits 342 a confirmation message to theadditional client device 110B. In some embodiments, theclient device 110A transmits 342 the confirmation message after storing 350 the portion of the content. After receiving the confirmation message, theadditional client device 110B transmits 345 a request for the additional portion of the content to thecontent source 130 based on the identifier of the additional portion of the content. The request includes the content identifier and information for retrieving the additional portion of the content, such as an identifier associated with an initial slot of the additional portion of the content and a number of slots comprising the additional portion of the content. In some embodiments, theadditional client device 110B receives a cancellation message from the client - After receiving the request for the additional portion of the content, the
content source 130 transmits 355 the additional portion of the content to theadditional client device 110B, which stores 360 the additional portion of the content in the memory allocated to the content source by theadditional client device 110B. When the additional portion of the content is stored 360 by theadditional client device 110B, a message is transmitted 365 from theadditional client device 110B to theclient device 110A indicating that the additional portion of the content has been stored 360 by theadditional client device 110B. For example, the message transmitted 365 by theadditional client device 110B includes the content identifier and an acknowledgment that theadditional client device 110B has stored 360 the additional portion of the content. Hence, if theclient device 110A has not allocated sufficient memory to thecontent source 130 to store the content, theclient device 110A communicates with theadditional client device 110B, which allocates a portion of the memory of theadditional client device 110B so the content is stored by theclient device 110A and theadditional client device 110B. WhileFIG. 3 shows an example where content is partitioned among theclient device 110A and theadditional client device 110B, in other embodiments content is partitioned among theclient device 110A and multipleother client devices 110. - When additional memory associated with the
content source 130 becomes available on theclient device 110A, theclient device 110A requests 370 the additional portion of the content from theadditional client device 110B. The additional portion of the content is transmitted 375 from theadditional client device 110B to theclient device 110A, which generates 380 the content from the portion of the content and the additional portion of the content. For example, theclient device 110A transmits the content identifier of the content to theadditional client device 110B, which transmits 375 data associated with the content identifier and stored by theadditional client device 110B, such as identifiers associated with one or more slots of the additional portion of the content. In one embodiment, theadditional client device 110B transmits 375 the content identifier and an identifier associated with an initial slot of the additional portion of the content, and theclient device 110A generates 380 the content by appending slots associated with the additional portion of the content to the portion of the content. Hence, based on slot identifiers associated with one or more slots of the portion of the content and slot identifiers associated with one or more slots of the additional portion of the content, the additional portion of the content and the portion of the content are combined to generate 380 the content, which is stored by theclient device 110A. - The
additional client device 110B removes 385 the additional portion of the content from its memory after transmitting 370 the additional portion of the content to theclient device 110A. For example, theclient device 110A transmits an acknowledgement to theadditional client device 110B when the additional portion of the content is received by theclient device 110A or after theclient device 110A generates 380 the content, and theadditional client device 110B removes 385 the additional portion of the content after receiving the acknowledgment. Additionally, in some embodiments, theadditional client device 110B removes 385 the additional portion of the content after a specified time interval, even if the additional portion of the content was not transmitted 375 to theclient device 110A. -
FIG. 4 is a flow chart of a method for allocating memory of aclient device 110 among content frommultiple content sources 130. In various embodiments, the steps shown byFIG. 4 may be performed in different orders. Additionally, other embodiments may include different or additional steps than those shown inFIG. 4 . In one embodiment, aclient device 110 includes instructions that cause aprocessor 205 included in theclient device 110 to perform the steps described in conjunction withFIG. 4 when executed by theprocessor 205. - During a time frame, the
client device 110requests 405 content frommultiple content sources 130 and initially allocates 410 available portions of amemory 215 of theclient device 110 todifferent content sources 130. In one embodiment, theclient device 110requests 405 content from a specified number ofcontent sources 130 and initially allocates 410 equal portions of the available memory to eachclient device 110. For example, theclient device 110requests 405 content from fourcontent sources 130, and allocates 410 25% of the available memory to each of the fourcontent sources 130. Alternatively, theclient device 110 initially allocates 410 available portions of thememory 215 tovarious content sources 130 based on historical interaction with content from thecontent sources 130 by a client device user. In other embodiments, theclient device 110 initially allocates 410 available memory tovarious content sources 130 based on amounts of memory previously allocated todifferent content sources 130. Theclient device 110 limits storage of content from acontent source 130 to a portion of the memory allocated 410 to thecontent source 130. - The
client device 110 receives 415 content fromvarious content sources 130 and stores content from acontent source 130 in a portion of the available memory allocated to thecontent source 130. For eachcontent source 130 from which content was received, theclient device 110 determines 420 a quality score. The quality score determined 420 for acontent source 130 provides a measure of the usability of the content received 415 from thecontent source 130. Content's usability is based on attributes of the content and prior interactions by a user of theclient device 110 with additional content having matching or similar attributes to the content. For example, a measure of usability is proportional to a frequency with which the user previously interacted with additional content having at least a threshold number of attributes matching, or similar to, attributes of the content with which the user frequently interacted has a higher measure of usability than content or is proportional to a number of prior interactions by the user with additional content having at least the threshold number of attributes matching, or similar to, attributes of the content. In some embodiments, different types of interactions with content are associated with different weights, and a measure of usability for received content is determined based on a number of different types of prior interactions with content having at least a threshold number of attributes matching, or similar to, attributes of the content and the weights associated with the types of interactions. Example attributes of content include: acontent source 130 associated with the content, a resolution of the content, metadata associated with the content (e.g., an author, a genre, a summary, a title, a date, etc.), a size of the content, or other suitable information associated with the content. Additionally, characteristics of theclient device 110 may be used to modify the measure of usability of content. For example, the size of adisplay device 225, the resolution of adisplay device 225, a connection strength between theclient device 110 and thecontent source 130, a type of connection between theclient device 110 and thecontent source 130, an amount of bandwidth available to theclient device 110, or other characteristics of theclient device 110 may be compared to attributes of content, with the comparison modifying the measure of usability of the content. - In one embodiment, the quality score for a
content source 130 is a ratio of a measure of usability of the content received 415 from thecontent source 130 to a total measure of usability of content received frommultiple content sources 130. For example, a quality score for acontent source 130 is a ratio of a measure of usability of content received from the content source to a total measure of usability of content received from allcontent sources 130 from which content was received 415. However, in other embodiments, the quality score for acontent source 130 may be any suitable value based on the usability of content received from thecontent source 130. - In some embodiments, the
client device 110 determines a quality factor for each content item received from acontent source 130. For example, acontent source 130 provides theclient device 110 with information describing multiple content items, and theclient device 110 determines a quality factor for each content item based on the provided information. The quality factors for individual content items may be communicated to acontent source 130 from which the content items were received, allowing thecontent source 130 to account for the quality factor along with other information about a user of theclient device 110 maintained by thecontent source 130 to modify content subsequently selected for the user by thecontent source 130. Additionally, the quality factor associated with a content item may be presented to a user of theclient device 110 may be presented to the user along with a description of the content item to provide the user with information describing memory allocation - The
client device 110 may communicate 425 the quality score for acontent source 130 to thecontent source 130. Acontent source 130 may use the quality score to modify subsequent selection of content for use by theclient device 110. For example, acontent source 130 modifies types of content items or attributes of content items subsequently selected if the quality score is less than a threshold value. This allows acontent source 130 to provide theclient device 110 with increasingly usable content over time, which may improve interaction with content from thecontent source 130 by a user of theclient device 110. - Based on the quality scores, the
client device 110 modifies 430 the amount of memory allocated todifferent content sources 130. In one embodiment, the amount of memory allocated to acontent source 130 is modified 430 to an amount that is proportional to the quality score associated with thecontent source 130. A ratio of a quality score of acontent source 130 to a total quality score from the quality scores associated with allcontent sources 130 form which content was received 415 is used to modify 430 the memory allocation. For example, if a quality score associated with acontent source 130 is 0.7 and a quality score associated with anothercontent source 130 is 0.3, the amount of memory allocated to thecontent source 130 is modified 430 to (0.7)/(0.3+0.7), or 70%, of the available memory while the amount of memory allocated to theadditional content source 130 is modified 430 to (0.3)/(0.7+0.3), or 30%, of the available memory. Hence, in some embodiments, the amount of memory allocated to acontent source 130 is a percentage of the available memory determined by a percentage of the quality score of thecontent source 130 of the total quality scores associated withcontent sources 130 from which content was received 415. - In other embodiments, the memory allocated to a
content source 130 is modified 430 in any suitable manner. For example,content sources 130 from which content is received 415 are ranked based on their quality scores. Based on the ranking, amounts of memory are allocated tovarious content sources 130. In one embodiment, different positions in the ranking are associated with percentages ofmemory 215, and acontent source 130 is allocated an amount of memory based on its position in the ranking. - As additional content is received 415 from
various content sources 130, theclient device 110 determines 420 additional quality scores for thevarious content sources 130 based on the additional content, as described above. Based on the additional quality scores, theclient device 110 modifies 430 the amount of memory allocated to the various content sources, allowing theclient device 110 to dynamically modify 430 memory allocation amongvarious content sources 130 as content is received. The additional quality scores may also be communicated 425 to thecontent sources 130 to allow the content sources to further improve selection of content for communication to theclient device 110. - While
FIGS. 3 and 4 describe embodiments where aclient device 110 obtains content from acontent source 130 external to theclient device 110, the methods described in conjunction withFIGS. 3 and 4 may be used to allocate memory for content obtained from content providers internal to theclient device 110. For example, aclient device 110 may allocatememory 215 for storing content included in thestorage device 110 and associated with various applications executing on theclient device 110 as described above in conjunction withFIG. 3 or may distribute inclusion of content associated with an application executing on theclient device 110 between thememory 215 of theclient device 110 and amemory 215 of anadditional client device 110. Further, memory may be allocated or distributed as described above in conjunction withFIGS. 3 and 4 for content received from a combination ofcontent sources 130 external to aclient device 110 and internal to theclient device 110. - As described above in conjunction with
FIG. 4 , the quality scores associated withcontent sources 130 may be used to allocatememory 215 of aclient device 110 tovarious content sources 130; however, theclient device 110 may use the quality scores to provide other functionality. In one embodiment, theclient device 110 may rankcontent sources 130 based on their associated quality scores, and present content received fromvarious content sources 130 based on the ranking. For example, received content is search results received from different search providers, and theclient device 110 ranks the search providers based on their associated quality scores. Based on the ranking of the search providers, theclient device 110 presents search results received from different search providers; for example, theclient device 110 presents a listing of search results received from various search providers, with search results located in the listing based in part on the position of the search provider from which the search results were received in the ranking. In one embodiment, search results from search providers having a higher position in the ranking are presented in more prominent position in the listing. - The foregoing description of the embodiments has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the patent rights to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above disclosure.
- Some portions of this description describe the embodiments in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof.
- Any of the steps, operations, or processes described herein may be performed or implemented with one or more hardware or software modules, alone or in combination with other devices. In one embodiment, a software module is implemented with a computer program product comprising a computer-readable medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described.
- Embodiments may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, and/or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a non-transitory, tangible computer readable storage medium, or any type of media suitable for storing electronic instructions, which may be coupled to a computer system bus. Furthermore, any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
- Embodiments may also relate to a product that is produced by a computing process described herein. Such a product may comprise information resulting from a computing process, where the information is stored on a non-transitory, tangible computer readable storage medium and may include any embodiment of a computer program product or other data combination described herein.
- Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the patent rights. It is therefore intended that the scope of the patent rights be limited not by this detailed description, but rather by any claims that issue on an application based hereon. Accordingly, the disclosure of the embodiments is intended to be illustrative, but not limiting, of the scope of the patent rights, which is set forth in the following claims.
Claims (20)
1. A method comprising:
receiving a content identifier and a size of the content indicating an amount of memory for storing the content from the content source;
determining an amount of memory allocated to the content source by a client device;
determining whether the size of the content item exceeds the amount of memory allocated to the content source by the client device;
responsive to determining the size of the content item exceeds the amount of memory allocated to the content source by the client device, sending a request from the client device to an additional client device to allocate memory to the content source, the request including the content identifier and an amount of memory based on a difference between the amount of memory allocated to the content source by the client device and the size of the content item;
transmitting a request from the client device to the content source for a portion of the content having a size corresponding to the amount of memory allocated to the content source by the client device; and
receiving a message from the additional client device that the additional client device has received an additional portion of the content form the content source, the additional portion of the content item having a size based on the difference between the amount of memory allocated to the content source by the client device and the size of the content item.
2. The method of claim 1 , further comprising:
requesting the additional portion of the content from the additional client device;
receiving the additional portion of the content from the additional client device;
generating the content at the client device by combining the portion of the content and the additional portion of the content; and
storing the content in the memory allocated to the content source by the client device.
3. The method of claim 2 , wherein requesting the additional portion of the content from the additional client device comprises:
requesting the additional portion of the content from the additional client device responsive to the client device determining a modified amount of memory allocated to the content source is at least the size of the content.
4. The method of claim 2 , wherein receiving the additional portion of the content from the additional client device comprises:
receiving the additional portion of the content and information for combining the additional portion of the content and the portion of the content.
5. The method of claim 4 , wherein the content comprises a plurality of slots each associated with an identifier and the information for combining the additional portion of the content and the portion of the content includes an identifier associated with one or more slots of the content included in the additional portion of the content.
6. The method of claim 1 , wherein the amount of memory allocated to the content source by the client device comprises a plurality of slots each associated with an identifier.
7. The method of claim 6 , wherein the request from the client device to the content source for the portion of the content specifies a number of slots and an identifier of an initial slot of the portion of the content.
8. A method comprising:
receiving a request from a client device to allocate memory to a content source;
allocating a portion of memory to the content source;
receiving, from the client device, a content identifier associated with content maintained by the content source and information identifying a portion of the content;
transmitting a request for the portion of the content to the content source;
receiving the portion of the content from the content source; and
storing the portion of the content and the content identifier in the portion of the memory allocated to the content source.
9. The method of claim 8 , further comprising:
receiving a request for the portion of the content from the client device; and
transmitting the portion of the content to the client device.
10. The method of claim 9 , further comprising:
removing the portion of the content from the memory allocated to the content source.
11. The method of claim 10 , wherein removing the portion of the content from the memory allocated to the content store is responsive to receiving an acknowledgment of receipt of the portion of the content from the client device.
12. The method of claim 8 , further comprising:
removing the portion of the content from the memory allocated to the content store after a specified time interval lapses.
13. The method of claim 8 , wherein the content comprises a plurality of slots, each slot associated with an identifier.
14. The method of claim 13 , wherein the information identifying the portion of the content comprises an identifier of an initial slot of the portion of the content and a number of slots comprising the portion of the content.
15. A method comprising:
allocating portions of a memory of a client device to a plurality of content sources, each content source associated with a portion of the memory;
receiving content from the plurality of content sources;
determining a quality score for each content source based on the received content, a quality score associated with a content source based at least in part on a usability of content received from the content source by the client device based on prior user interactions with additional content; and
modifying a size of a portion of the memory allocated to the content source based at least in part on the quality score for the content source.
16. The method of claim 15 , wherein modifying the size of the portion of the memory allocated to the content source based at least in part on the quality score for the content source comprises:
determining a total quality score from the quality scores for each of the content sources;
determining a ratio of the quality score for the content source to the total quality score; and
modifying the size of the portion of the memory allocated to the content source based on the ratio.
17. The method of claim 16 , wherein modifying the size of the portion of the memory allocated to the content source based on the ratio comprises:
modifying the portion of the memory allocated to the content source to a percentage of the memory equaling the ratio.
18. The method of claim 15 , further comprising:
transmitting the quality score to the content source.
19. The method of claim 15 , wherein determining the quality score for each content source based on the received content, the quality score associated with the content source based at least in part on a usability of content received from the content source by the client device based on prior user interactions with additional content comprises:
identifying one or more attributes of the content received from the content source;
determining prior interactions between the user and additional content having one or more attributes matching an attribute of the content received from the content source; and
determining the quality score for the content source based at least in part on the determined prior interactions.
20. The method of claim 19 , wherein the quality score for the content source is further based at least in part on one or more characteristics of the client device.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/298,130 US20150271096A1 (en) | 2014-03-24 | 2014-06-06 | Allocation of Client Device Memory for Content from Content Sources |
US15/407,777 US10171376B2 (en) | 2014-03-24 | 2017-01-17 | Allocation of client device memory for content from content sources |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461969803P | 2014-03-24 | 2014-03-24 | |
US14/298,130 US20150271096A1 (en) | 2014-03-24 | 2014-06-06 | Allocation of Client Device Memory for Content from Content Sources |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/407,777 Division US10171376B2 (en) | 2014-03-24 | 2017-01-17 | Allocation of client device memory for content from content sources |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150271096A1 true US20150271096A1 (en) | 2015-09-24 |
Family
ID=54143143
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/298,130 Abandoned US20150271096A1 (en) | 2014-03-24 | 2014-06-06 | Allocation of Client Device Memory for Content from Content Sources |
US15/407,777 Active US10171376B2 (en) | 2014-03-24 | 2017-01-17 | Allocation of client device memory for content from content sources |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/407,777 Active US10171376B2 (en) | 2014-03-24 | 2017-01-17 | Allocation of client device memory for content from content sources |
Country Status (1)
Country | Link |
---|---|
US (2) | US20150271096A1 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10171376B2 (en) | 2014-03-24 | 2019-01-01 | Google Technology Holdings LLC | Allocation of client device memory for content from content sources |
US10231227B2 (en) * | 2016-06-03 | 2019-03-12 | Samsung Electronics Co., Ltd | Multi-point content transmission method and apparatus |
US10231271B2 (en) * | 2014-08-29 | 2019-03-12 | Samsung Electronics Co., Ltd | Method using a time point for sharing data between electronic devices based on situation information |
US10339970B2 (en) * | 2016-04-26 | 2019-07-02 | Idis Co., Ltd. | Video recording apparatus with pre-event circulation recording function |
US11252219B2 (en) * | 2015-02-17 | 2022-02-15 | Samsung Electronics Co., Ltd. | Method and apparatus for downloading a file |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180189701A1 (en) * | 2016-12-29 | 2018-07-05 | General Electric Company | Distributed cache cleanup for analytic instance runs processing operating data from industrial assets |
US20230403418A1 (en) * | 2022-06-09 | 2023-12-14 | Xandrie SA | System and method for calculating a distributor quality score |
Citations (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0959410A2 (en) * | 1998-05-16 | 1999-11-24 | Network Virtual Systems Inc. | Computing devices |
US20030101325A1 (en) * | 2001-11-29 | 2003-05-29 | Giuseppe Desoli | Transparent remote data storage device and method |
US20070260822A1 (en) * | 2006-05-08 | 2007-11-08 | Research In Motion Limited | Sharing Memory Resources of Wireless Portable Electronic Devices |
US20080039058A1 (en) * | 2006-08-10 | 2008-02-14 | Qualcomm Incorporated | Systems and methods for temporary media file storage on a wireless communication device |
US20080139189A1 (en) * | 2006-12-08 | 2008-06-12 | Sony Ericsson Mobile Communications Ab | Local media cache with leader files |
US20090017750A1 (en) * | 2007-07-12 | 2009-01-15 | Sony Ericsson Mobile Communications Ab | Reward-Based Access to Media Content |
US8005975B2 (en) * | 2007-09-21 | 2011-08-23 | Polytechnic Institute Of New York University | Reducing or minimizing delays in peer-to-peer communications such as peer-to-peer video streaming |
US20110246599A1 (en) * | 2010-03-31 | 2011-10-06 | Fujitsu Limited | Storage control apparatus and storage control method |
US8078729B2 (en) * | 2007-08-21 | 2011-12-13 | Ntt Docomo, Inc. | Media streaming with online caching and peer-to-peer forwarding |
US8200747B2 (en) * | 2002-07-12 | 2012-06-12 | Hewlett-Packard Development Company, L.P. | Session handoff of segmented media data |
US8214619B1 (en) * | 2007-11-26 | 2012-07-03 | Adobe Systems Incorporated | Memory allocation in a mobile device |
US20120215851A1 (en) * | 2011-02-21 | 2012-08-23 | Research In Motion Limited | On The Managed Peer-To-Peer Sharing In Cellular Networks |
US20120271903A1 (en) * | 2011-04-19 | 2012-10-25 | Michael Luna | Shared resource and virtual resource management in a networked environment |
US20130110637A1 (en) * | 2011-11-02 | 2013-05-02 | Ross Bott | Strategically timed delivery of advertisements or electronic coupons to a mobile device in a mobile network |
US8595315B2 (en) * | 2003-06-18 | 2013-11-26 | At&T Intellectual Property I, L.P. | Apparatus and method for aggregating disparate storage on consumer electronics devices |
US20140047059A1 (en) * | 2012-08-07 | 2014-02-13 | International Business Machines Corporation | Method for improving mobile network performance via ad-hoc peer-to-peer request partitioning |
US20140047516A1 (en) * | 2012-08-07 | 2014-02-13 | International Business Machines Corporation | Cache sharing of enterprise data among peers via an enterprise server |
US20140098766A1 (en) * | 2013-05-08 | 2014-04-10 | Saswat Misra | Cognitive Radio System And Cognitive Radio Carrier Device |
US8745329B2 (en) * | 2011-01-20 | 2014-06-03 | Google Inc. | Storing data across a plurality of storage nodes |
US8751743B2 (en) * | 2010-03-15 | 2014-06-10 | Howard University | Apparatus and method for context-aware mobile data management |
US8775737B2 (en) * | 2010-12-02 | 2014-07-08 | Microsoft Corporation | Efficient cache management |
US20140258366A1 (en) * | 2011-01-30 | 2014-09-11 | Israel L'Heureux | Accelerated delivery of media content via peer caching |
US20140280669A1 (en) * | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Memory Sharing Over A Network |
US20150181002A1 (en) * | 2013-12-20 | 2015-06-25 | The Directv Group, Inc. | Method and system for communicating from a client device to a server device in a centralized content distribution system |
US20150189024A1 (en) * | 2013-05-08 | 2015-07-02 | Vringo Infrastructure Inc. | Implementations of collaborative bandwidth sharing |
US9292448B2 (en) * | 2013-09-19 | 2016-03-22 | Google Inc. | Dynamic sizing of memory caches |
US9294562B2 (en) * | 2012-02-14 | 2016-03-22 | Intel Corporation | Peer to peer networking and sharing systems and methods |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154485A1 (en) * | 2002-02-12 | 2003-08-14 | Johnson Carolynn Rae | Allocation of recording space per user and application |
US8291062B2 (en) * | 2003-08-20 | 2012-10-16 | Aol Inc. | Managing access to digital content sources |
US7577655B2 (en) * | 2003-09-16 | 2009-08-18 | Google Inc. | Systems and methods for improving the ranking of news articles |
US20060126556A1 (en) * | 2004-12-14 | 2006-06-15 | Roundbox, Inc. | Territory mapping for efficient content distribution in wireless networks using broadcast/multicast |
US8694016B2 (en) * | 2006-04-14 | 2014-04-08 | Qualcomm Incorporated | Methods and apparatus for use of data object popularity measurements for improved quality of service perception in wireless broadcast systems |
US8995815B2 (en) * | 2006-12-13 | 2015-03-31 | Quickplay Media Inc. | Mobile media pause and resume |
US7840522B2 (en) * | 2007-03-07 | 2010-11-23 | Microsoft Corporation | Supervised rank aggregation based on rankings |
US8874468B2 (en) * | 2007-04-20 | 2014-10-28 | Google Inc. | Media advertising |
US8341267B2 (en) * | 2008-09-19 | 2012-12-25 | Core Wireless Licensing S.A.R.L. | Memory allocation to store broadcast information |
WO2011050495A1 (en) * | 2009-10-29 | 2011-05-05 | Google Inc. | Ranking user generated web content |
US8504774B2 (en) | 2010-10-13 | 2013-08-06 | Microsoft Corporation | Dynamic cache configuration using separate read and write caches |
WO2012103515A1 (en) | 2011-01-28 | 2012-08-02 | Level 3 Communications, Llc | Content delivery network with deep caching infrastructure |
US8874558B1 (en) * | 2012-09-11 | 2014-10-28 | Google Inc. | Promoting fresh content for authoritative channels |
US9774488B2 (en) * | 2012-10-18 | 2017-09-26 | Tara Chand Singhal | Apparatus and method for a thin form-factor technology for use in handheld smart phone and tablet devices |
US8949874B1 (en) * | 2013-06-25 | 2015-02-03 | Google Inc. | Evaluating media channels |
US20150039424A1 (en) * | 2013-07-30 | 2015-02-05 | Yahoo! Inc | System and method for social display advertisements |
US9326026B2 (en) * | 2013-10-31 | 2016-04-26 | At&T Intellectual Property I, Lp | Method and apparatus for content distribution over a network |
US20150271096A1 (en) | 2014-03-24 | 2015-09-24 | Google Technology Holdings LLC | Allocation of Client Device Memory for Content from Content Sources |
-
2014
- 2014-06-06 US US14/298,130 patent/US20150271096A1/en not_active Abandoned
-
2017
- 2017-01-17 US US15/407,777 patent/US10171376B2/en active Active
Patent Citations (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0959410A2 (en) * | 1998-05-16 | 1999-11-24 | Network Virtual Systems Inc. | Computing devices |
US20030101325A1 (en) * | 2001-11-29 | 2003-05-29 | Giuseppe Desoli | Transparent remote data storage device and method |
US8200747B2 (en) * | 2002-07-12 | 2012-06-12 | Hewlett-Packard Development Company, L.P. | Session handoff of segmented media data |
US8595315B2 (en) * | 2003-06-18 | 2013-11-26 | At&T Intellectual Property I, L.P. | Apparatus and method for aggregating disparate storage on consumer electronics devices |
US20070260822A1 (en) * | 2006-05-08 | 2007-11-08 | Research In Motion Limited | Sharing Memory Resources of Wireless Portable Electronic Devices |
US20080039058A1 (en) * | 2006-08-10 | 2008-02-14 | Qualcomm Incorporated | Systems and methods for temporary media file storage on a wireless communication device |
US20080139189A1 (en) * | 2006-12-08 | 2008-06-12 | Sony Ericsson Mobile Communications Ab | Local media cache with leader files |
US20090017750A1 (en) * | 2007-07-12 | 2009-01-15 | Sony Ericsson Mobile Communications Ab | Reward-Based Access to Media Content |
US8078729B2 (en) * | 2007-08-21 | 2011-12-13 | Ntt Docomo, Inc. | Media streaming with online caching and peer-to-peer forwarding |
US8005975B2 (en) * | 2007-09-21 | 2011-08-23 | Polytechnic Institute Of New York University | Reducing or minimizing delays in peer-to-peer communications such as peer-to-peer video streaming |
US8214619B1 (en) * | 2007-11-26 | 2012-07-03 | Adobe Systems Incorporated | Memory allocation in a mobile device |
US8751743B2 (en) * | 2010-03-15 | 2014-06-10 | Howard University | Apparatus and method for context-aware mobile data management |
US20110246599A1 (en) * | 2010-03-31 | 2011-10-06 | Fujitsu Limited | Storage control apparatus and storage control method |
US8775737B2 (en) * | 2010-12-02 | 2014-07-08 | Microsoft Corporation | Efficient cache management |
US8745329B2 (en) * | 2011-01-20 | 2014-06-03 | Google Inc. | Storing data across a plurality of storage nodes |
US20140258366A1 (en) * | 2011-01-30 | 2014-09-11 | Israel L'Heureux | Accelerated delivery of media content via peer caching |
US20120215851A1 (en) * | 2011-02-21 | 2012-08-23 | Research In Motion Limited | On The Managed Peer-To-Peer Sharing In Cellular Networks |
US20120271903A1 (en) * | 2011-04-19 | 2012-10-25 | Michael Luna | Shared resource and virtual resource management in a networked environment |
US20130110637A1 (en) * | 2011-11-02 | 2013-05-02 | Ross Bott | Strategically timed delivery of advertisements or electronic coupons to a mobile device in a mobile network |
US9294562B2 (en) * | 2012-02-14 | 2016-03-22 | Intel Corporation | Peer to peer networking and sharing systems and methods |
US20140047059A1 (en) * | 2012-08-07 | 2014-02-13 | International Business Machines Corporation | Method for improving mobile network performance via ad-hoc peer-to-peer request partitioning |
US20140047516A1 (en) * | 2012-08-07 | 2014-02-13 | International Business Machines Corporation | Cache sharing of enterprise data among peers via an enterprise server |
US20140280669A1 (en) * | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Memory Sharing Over A Network |
US20140098766A1 (en) * | 2013-05-08 | 2014-04-10 | Saswat Misra | Cognitive Radio System And Cognitive Radio Carrier Device |
US20150189024A1 (en) * | 2013-05-08 | 2015-07-02 | Vringo Infrastructure Inc. | Implementations of collaborative bandwidth sharing |
US9292448B2 (en) * | 2013-09-19 | 2016-03-22 | Google Inc. | Dynamic sizing of memory caches |
US20150181002A1 (en) * | 2013-12-20 | 2015-06-25 | The Directv Group, Inc. | Method and system for communicating from a client device to a server device in a centralized content distribution system |
Non-Patent Citations (3)
Title |
---|
ETSI, ETSI TS 126 247 v 10.0.0 Universal Mobile Telecommunications System (UTMS) Technical Specification, November 2011, (96 pages total) * |
Microsoft, "ASP.NET WEB API:HTTP MESSAGE LIFECYCLE", 2012 (1 page) * |
Oyman et al., "Quality of Experience for HTTP Adaptive Streaming Services", April 2012, IEEE Communications, (8 pages total) * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10171376B2 (en) | 2014-03-24 | 2019-01-01 | Google Technology Holdings LLC | Allocation of client device memory for content from content sources |
US10231271B2 (en) * | 2014-08-29 | 2019-03-12 | Samsung Electronics Co., Ltd | Method using a time point for sharing data between electronic devices based on situation information |
US10798765B2 (en) | 2014-08-29 | 2020-10-06 | Samsung Electronics Co., Ltd | Method using a time point for sharing data between electronic devices based on situation information |
US11252219B2 (en) * | 2015-02-17 | 2022-02-15 | Samsung Electronics Co., Ltd. | Method and apparatus for downloading a file |
US10339970B2 (en) * | 2016-04-26 | 2019-07-02 | Idis Co., Ltd. | Video recording apparatus with pre-event circulation recording function |
US10231227B2 (en) * | 2016-06-03 | 2019-03-12 | Samsung Electronics Co., Ltd | Multi-point content transmission method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
US20170126584A1 (en) | 2017-05-04 |
US10171376B2 (en) | 2019-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10171376B2 (en) | Allocation of client device memory for content from content sources | |
US12050932B2 (en) | Methods and systems of scheduling computer processes or tasks in a distributed system | |
US10515132B2 (en) | Optimizing transmission of digital components | |
US20150089382A1 (en) | Application context migration framework and protocol | |
US20200007657A1 (en) | Custom digital components | |
US10091126B2 (en) | Cloud system, control method thereof, management server and control method thereof | |
EP3724805B1 (en) | Enhanced online privacy | |
US10467790B2 (en) | On-demand image spriting | |
CN107038194B (en) | Page jump method and device | |
EP3583537B1 (en) | Preventing data leakage | |
US20190114989A1 (en) | Systems and methods for image optimization | |
WO2013074405A1 (en) | System and method for viewer-based image metadata sanitization | |
US11327658B2 (en) | Systems and methods for managing information objects in dynamic data storage devices | |
US9805177B1 (en) | Processing large data sets from heterogeneous data sources using federated computing resources | |
CN108268594B (en) | Data query method and device | |
US20150248347A1 (en) | Content providing apparatus and method, and computer program product |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MOTOROLA MOBILITY LLC, ILLINOIS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DAS, SUJOY;AGRAWAL, JAGADISH K;FORTIN, NATHAN J;AND OTHERS;SIGNING DATES FROM 20140602 TO 20140606;REEL/FRAME:033048/0619 |
|
AS | Assignment |
Owner name: GOOGLE TECHNOLOGY HOLDINGS LLC, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MOTOROLA MOBILITY LLC;REEL/FRAME:034227/0095 Effective date: 20141028 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |