CN116737063A - Method and apparatus for memory management - Google Patents

Method and apparatus for memory management Download PDF

Info

Publication number
CN116737063A
CN116737063A CN202310233134.7A CN202310233134A CN116737063A CN 116737063 A CN116737063 A CN 116737063A CN 202310233134 A CN202310233134 A CN 202310233134A CN 116737063 A CN116737063 A CN 116737063A
Authority
CN
China
Prior art keywords
processing unit
data
parameter comprises
size
storage
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.)
Pending
Application number
CN202310233134.7A
Other languages
Chinese (zh)
Inventor
姜亮旭
奇亮奭
崔昌皓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US18/117,384 external-priority patent/US20230289084A1/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN116737063A publication Critical patent/CN116737063A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Methods and apparatus for memory management are described. An example method may include: a first determination is performed, which may include comparing a first parameter associated with the storage device with a second parameter associated with the application. Additionally, the method may include performing a second determination based on the first determination, wherein the second determination may include inserting the data into a storage partition of the storage device; and determining to store a minimum processing unit associated with the data in a storage device.

Description

Method and apparatus for memory management
The present application claims the benefit of U.S. provisional patent application No. 63/319,272 entitled "DB page alignment for computing storage (DB PAGE ALIGNMENT FOR COMPUTATIONAL STORAGE DEVICES)" filed on day 3, 2022, and U.S. patent application No. 18/117,384 filed on day 3, 2023, which are incorporated herein by reference in their entirety.
Technical Field
The disclosure relates generally to application compatibility checking mechanisms, and more particularly to a system and method for data alignment of computing storage devices in a storage drive.
Background
This background section is only intended to provide context and the disclosure of any concepts in this section is not an admission that such concepts are prior art.
The computing storage may include one or more processing resources that may operate on data stored within the device. The host may offload processing tasks to a storage device (e.g., by sending user programs and/or input data for user programs to the device). The one or more processing resources may execute the user program and send output data from the user program to the host.
The above information disclosed in this background section is only for enhancement of understanding of the background of the disclosure and therefore it may contain information that does not form the prior art.
Disclosure of Invention
In various embodiments, described herein include systems, methods, and apparatus for offloading operations and/or computations to a storage device associated with a processing element, such as a Solid State Drive (SSD).
A system of one or more computers may be configured to perform particular operations or actions by virtue of software, firmware, hardware, or a combination thereof installed on the system that, when operated, cause the system to perform the actions. The one or more computer programs may be configured to perform particular operations or acts by virtue of including instructions that when executed by a data processing apparatus cause the apparatus to perform the acts.
In one general aspect, a method for memory management is described. The method may include performing a first determination, which may include comparing a first parameter associated with the storage device with a second parameter associated with the application. The method may further include performing a second determination based on the first determination, wherein the second determination may include: inserting data into a storage partition of a storage device; and determining to store a minimum processing unit associated with the data in a storage device. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
Implementations can include one or more of the following features. The first parameter may include a minimum processing unit size and the first parameter may include a variable length unit or a fixed length unit. The first parameter may include a minimum processing unit size and the second parameter may include a block size of the file system. The first parameter may include a minimum processing unit size and the second parameter may include a file system fragment size. The first parameter may include a minimum processing unit size and the second parameter may include a RAID stripe size. The first parameter may include a minimum processing unit size and the second parameter may include a key object size. Implementations of the described technology may include hardware, methods or processes, or computer-readable media.
In one general aspect, an apparatus for memory management is described. The apparatus may include one or more processors. The device may perform, using the processor, a first determination, which may include: the first parameter associated with the storage device is compared to the second parameter associated with the application. The device may further comprise: performing a second determination based on the first determination, wherein the second determination may include: inserting data into a storage partition of a storage device; and determining to store a minimum processing unit associated with the data in a storage device. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
Implementations can include one or more of the following features. The apparatus, wherein the first parameter may comprise a minimum processing unit size and the first parameter may comprise a variable length unit or a fixed length unit. The apparatus, wherein the first parameter may comprise a minimum processing unit size and the second parameter may comprise a block size of the file system. The apparatus, wherein the first parameter may comprise a minimum processing unit size and the second parameter may comprise a file system fragment size. The apparatus, wherein the first parameter may comprise a minimum processing unit size and the second parameter may comprise a RAID stripe size. The apparatus, wherein the first parameter may include a minimum processing unit size and the second parameter may include a key object size. The apparatus, wherein the apparatus may comprise a computing storage device.
In one general aspect, a non-transitory computer-readable medium for memory management is described. The non-transitory computer-readable medium may include one or more instructions that, when executed by one or more processors of an apparatus, cause the apparatus to: a first determination is performed, which may include comparing a first parameter associated with the storage device with a second parameter associated with the application. The instructions may cause the apparatus to perform a second determination based on the first determination, wherein the second determination may include inserting data into a storage partition of a storage device; and determining to store a minimum processing unit associated with the data in a storage device. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
Implementations can include one or more of the following features. The non-transitory computer readable medium, wherein the first parameter may include a minimum processing unit size and the first parameter may include a variable length unit or a fixed length unit. The non-transitory computer readable medium, wherein the first parameter may include a minimum processing unit size and the second parameter may include a block size of the file system. The non-transitory computer readable medium, wherein the first parameter may include a minimum processing unit size and the second parameter may include a file system fragment size. The non-transitory computer readable medium, wherein the first parameter may include a minimum processing unit size and the second parameter may include a RAID stripe size. The non-transitory computer readable medium, wherein the first parameter may include a minimum processing unit size and the second parameter may include a key-value object size. The non-transitory computer readable medium, wherein the device may comprise a computing storage device. Implementations of the described technology may include hardware, methods or processes, or computer-readable media.
Similarly, non-transitory computer-readable media, apparatuses, and systems for performing substantially the same or similar operations as described above are further disclosed. Thus, particular embodiments of the subject matter described herein can be implemented to realize one or more of the following advantages. The disclosed system may provide a means to verify the software and hardware environment for computing the storage device in order to run a particular application in a more efficient manner. The disclosed system may provide a means to increase the computational efficiency of an application by ensuring data alignment between support layers of a computing storage environment (e.g., a data center or server environment). The disclosed system may facilitate computing near data (e.g., via a computing storage device) with improved efficiency, resulting in reduced power and energy usage per unit of computation. The software and hardware environment for computing the storage device is easily verified.
Drawings
The above-described and other aspects of the present technology will be better understood when the following drawings are considered in which like reference numerals designate similar or identical elements. Furthermore, the drawings presented herein are for purposes of illustrating particular embodiments only; other embodiments that may not be explicitly shown are not excluded from the scope of the present disclosure.
These and other features and advantages of the present disclosure will be appreciated and understood with reference to the specification, claims and appended drawings, wherein:
FIG. 1 illustrates an example diagram representing a computing storage environment in which the disclosed system may operate, including a host application, various middleware and hardware layers, and one or more computing storage devices, according to a disclosed example embodiment.
FIG. 2 illustrates an example diagram representing a disclosed system for application compatibility determination including both static and dynamic compatibility analysis, the system including modules for computing granularity determinations of various subsystems of a storage device, according to a disclosed example embodiment.
FIG. 3 illustrates an example diagram representing an example scenario in which an application causes a split processing unit across file systems and/or other systems that may be determined and optimized using the disclosed systems and methods versus an application causes a unified processing unit across file systems and/or other systems that may be determined and optimized using the disclosed systems and methods, in accordance with the disclosed example embodiments.
FIG. 4 is a diagram illustrating another exemplary operational flow illustrating example operations associated with the disclosed system for application compatibility determination, according to a disclosed example embodiment.
FIG. 5 shows an example schematic diagram of a system that may be used to practice embodiments of the present disclosure.
FIG. 6 illustrates an example schematic diagram of managing computing entities in accordance with a disclosed example embodiment.
Fig. 7 shows an example schematic diagram of a user device according to an example embodiment of the disclosure.
While the technology is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described. The drawings may not be to scale. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the technology to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present technology as defined by the appended claims.
Detailed Description
The details of one or more embodiments of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
Various embodiments of the present disclosure now will be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all embodiments are shown. Indeed, the disclosure may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. The term "or" is used herein in an alternative and in a combined sense unless indicated otherwise. The terms "illustrative" and "example" are used to refer to examples that do not indicate a quality level. Like numbers refer to like elements throughout. The arrows in each figure depict bi-directional data flow and/or bi-directional data flow capabilities. The terms "path," "pathway," and "route" are used interchangeably herein.
Embodiments of the present disclosure may be implemented in various ways, including as a computer program product comprising an article of manufacture. The computer program product may include a non-transitory computer-readable storage medium storing an application, a program component, a script, a source code, a program code, an object code, a byte code, a compiled code, an interpreted code, a machine code, an executable instruction, etc. (also referred to herein as executable instructions, instructions for execution, a computer program product, a program code, and/or similar terms are used interchangeably herein). Such non-transitory computer-readable storage media include all computer-readable media (including volatile and nonvolatile media).
In one embodiment, the non-volatile computer-readable storage medium may include a floppy disk, a flexible disk, a hard disk, a solid state storage device (SSS) (e.g., a Solid State Drive (SSD)), a Solid State Card (SSC), a Solid State Module (SSM), an enterprise flash drive, a magnetic tape, or any other non-transitory magnetic medium, etc. The non-volatile computer-readable storage medium may also include punch cards, paper tape, optical marking sheets (or any other physical medium having a hole pattern or other optically identifiable marking), compact disc read-only memory (CD-ROM), compact disc rewriteable (CD-RW), digital Versatile Discs (DVD), blu-ray discs (BD), any other non-transitory optical medium, etc. Such non-volatile computer-readable storage Media may also include read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory (e.g., serial, NAND, NOR, etc.), multimedia Memory Cards (MMC), secure Digital (SD) memory cards, smart Media cards, compact flash (CompactFlash, CF) cards, memory sticks, and the like. In addition, the non-volatile computer-readable storage medium may also include Conductive Bridge Random Access Memory (CBRAM), phase change random access memory (PRAM), ferroelectric random access memory (FeRAM), non-volatile random access memory (NVRAM), magnetoresistive Random Access Memory (MRAM), resistive Random Access Memory (RRAM), silicon-oxide-nitride-oxide-silicon memory (SONOS), floating junction gate random access memory (FJG RAM), armyworm memory, racetrack memory, and the like.
In one embodiment, the volatile computer-readable storage medium may include Random Access Memory (RAM), dynamic Random Access Memory (DRAM), static Random Access Memory (SRAM), fast page mode dynamic random access memory (FPM DRAM), extended data output dynamic random access memory (EDO DRAM), synchronous Dynamic Random Access Memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), second generation double data rate synchronous dynamic random access memory (DDR 2 SDRAM), third generation double data rate synchronous dynamic random access memory (DDR 3 SDRAM), rambus Dynamic Random Access Memory (RDRAM), double transistor RAM (TTRAM), thyristor RAM (T-RAM), zero capacitor (Z-RAM), rambus direct memory component (RIMM), dual inline memory component (DIMM), single inline memory component (SIMM), video Random Access Memory (VRAM), cache memory (including various levels), flash memory, register memory, and the like. It should be appreciated that where an embodiment is described as using a computer-readable storage medium, other types of computer-readable storage media may be used in place of, or in addition to, the computer-readable storage media described above.
It should be appreciated that the various embodiments of the present disclosure may also be implemented as a method, apparatus, system, computing device, computing entity, or the like. As such, embodiments of the present disclosure may take the form of an apparatus, system, computing device, computing entity, or the like that executes instructions stored on a computer-readable storage medium to perform certain steps or operations. Accordingly, embodiments of the present disclosure may also take the form of an entirely hardware embodiment, an entirely computer program product embodiment and/or an embodiment containing a combination of computer program products and hardware performing certain steps or operations.
Embodiments of the present disclosure are described below with reference to block diagrams and flowcharts. Accordingly, it should be understood that each block of the block diagrams and flowchart illustrations can be implemented in the form of computer program products, entirely hardware embodiments, combinations of hardware and computer program products, and/or apparatus, systems, computing devices, computing entities, etc. that execute instructions, operations, steps and similar words (e.g., executable instructions, instructions for execution, program code, etc.) on a computer readable storage medium for execution. For example, the fetching, loading, and executing of code may be performed sequentially, such that one instruction is fetched, loaded, and executed at a time. In some example embodiments, fetching, loading, and/or executing may be performed in parallel such that multiple instructions are fetched, loaded, and/or executed together. Thus, such embodiments may result in a specially configured machine performing the steps or operations specified in the block diagrams and flowcharts. Accordingly, the block diagrams and flowchart support various combinations of embodiments for performing the specified instructions, operations or steps.
In the computing and storage arts, various computing workloads may be divided into tasks, one or more of which may be performed by a computing device, such as a Central Processing Unit (CPU), an accelerator device, a computing storage device, or the like. Tasks may be performed, for example, by a CPU, and input data may be read from a data structure that may be stored, for example, at a storage device. Depending on implementation details, such a task arrangement may involve relatively high overhead (e.g., transferring data from a storage device to a CPU, and/or transferring data from a CPU to an accelerator device). Accordingly, some aspects of the disclosure relate to performing tasks related to reading data and/or writing data using a Computing Storage Device (CSD). For example, in a computing scheme according to a disclosed example embodiment, a first task of a workload associated with an application (e.g., a host-based application) may be performed at a CSD, which may read input data from a data structure that may be stored at the CSD.
In some aspects, data processing on a CSD may require access to one or more independently processable data blocks associated with an application (e.g., an application running on a host). Since applications may be configured to run using various combinations of storage and system layers (e.g., configurations that determine how to transfer data over a network), the underlying layers may not be configured accordingly based on the processing units of the corresponding applications, which are independently addressable data blocks. Thus, each associated layer may have a different processing unit, which may cause the applied data blocks to be ultimately split and stored across multiple CSDs, which may be an undesirable scenario from at least a computational efficiency perspective. Thus, in order to determine whether a given application may be efficiently executed on a particular storage tier configuration associated with one or more CSDs, the configuration of each tier needs to be checked to see if the processing units of the application may be delivered and/or stored to storage without being split.
In various embodiments disclosed, as further described herein, systems and methods for application compatibility determination may verify a given storage tier configuration in a static and dynamic manner. As used herein, static may refer to a method of performing a check of the configuration of components in a storage layer without actually running an application on the storage layer. Further, dynamic may refer to a method of performing a run test on a given storage tier and configuration to check whether data alignment requirements are met.
As noted, to utilize CSD, it may be necessary to store the entire data processing unit associated with an application to the device. Accordingly, an application compatibility checking system and associated method may check the respective data alignment (how data is arranged and accessed in computer memory) between an application and one or more systems, such as a Redundant Array of Independent Disks (RAID) system, a compute engine, a file system and storage system, combinations thereof, and the like. Further, the disclosed system describes a system and method for checking data alignment of an application between multiple storage layers. Furthermore, while specific systems are described herein, it is to be understood that other similar systems may use the disclosed systems and methods in a similar manner.
The present disclosure encompasses many aspects related to operating a computing device. The principles disclosed herein may have independent utility and may be implemented separately and not every embodiment may utilize every principle. Furthermore, the principles may be implemented in various combinations, some of which may synergistically amplify some benefits of a single principle.
For purposes of illustration, some embodiments may be described in the context of some specific implementation details, such as machine learning workload, communication protocols, such as computing quick links (CXLs), and the like. However, the principles are not limited to these or any other specific implementation details.
As noted, to perform data processing on a system (such as a system including CSDs), each CSD may need to access an independently processable data block of a corresponding application (e.g., an application running on a host server). As used herein, a host may be implemented with any component or combination of components (such as a computing server, a storage server, a web server, a cloud server, etc.), a node (such as a storage node), a computer (such as a workstation, a personal computer, a tablet, a smart phone, etc.), or multiple ones and/or combinations thereof.
FIG. 1 illustrates an example diagram representing a computing storage environment 100 in which the disclosed system may operate, including a host application, various middleware and hardware layers, and one or more computing storage devices, according to an example embodiment of the disclosure. As shown in fig. 1, application 102 may run on various combinations of storage devices (e.g., computing Storage (CS) means such as CS 114, 116, 118, and/or 120) and system layers (e.g., file system 103, RAID system 104, storage system 106, which may include block storage devices) and/or storage system 108, which may include file system 110 and/or RAID subsystem 115 and/or key-value store 112. In some aspects, the underlying layer (relative to the application 102) may not be aware of the respective processing units of the application (e.g., does not have notification about the respective processing units of the application and/or access to the respective processing units of the application). Furthermore, each layer (e.g., a layer including file system 103, RAID system 104, storage system 106, which may include block storage devices) may require a different processing unit, which may cause the corresponding data blocks of application 102 to be split and thus stored across multiple CSDs (e.g., CS 114, 116, 118, and/or 120). In order to efficiently utilize CSD in a given computing and storage environment, it may be necessary to store the entire data processing unit of a given application 102 to the device. To determine whether a given application may run on a particular storage tier configuration, the disclosed system may examine the configuration needs of each tier to determine whether the processing units of application 102 may be delivered to storage (e.g., CS 114, 116, 118, and/or 120) without being split. In various aspects of the disclosure, the disclosed systems include an application compatibility system and corresponding method that can verify a given storage configuration, both partially statically and dynamically.
In various aspects, the computing storage (e.g., CS 114, 116, 118, and/or 120) may be implemented using any type of storage using any type of memory and/or storage medium, including any other type of solid state medium, magnetic medium, optical medium, and the like. For example, in some embodiments, the storage device may be implemented as an SSD-based NAND (NAND) flash memory, a persistent memory (PMEM) such as a cross-grid non-volatile memory, a memory with bulk resistance change, a Phase Change Memory (PCM), a Dynamic Random Access Memory (DRAM), and/or the like, and/or any combination thereof.
Any of the computing storage devices disclosed herein may be implemented in any form factor (such as 3.5 inches, 2.5 inches, 1.8 inches, m.2, enterprise, and data center SSD form factor (EDSFF), NF1, etc.) using any connector configuration (such as serial ATA (SATA), small Computer System Interface (SCSI), serial Attached SCSI (SAS), U.2, etc.). Any of the storage devices disclosed herein may be implemented in whole or in part with and/or used in combination with a server chassis, a server rack, a data room, a data center, an edge data center, a mobile edge data center, and/or any combination thereof. In some embodiments, the compute storage device may be implemented as a compute storage drive, a Compute Storage Processor (CSP), and/or a Compute Storage Array (CSA).
In some embodiments, the computing storage may be implemented with devices other than storage (e.g., any type of device that may include or have access to memory, storage media, etc.) to store data in amounts that may be processed by one or more computing resources. Examples may include memory expansion and/or buffer devices (such as CXL 2-type devices and/or CXL 3-type devices and CXL 1-type devices that have access to memory, storage media, and the like).
The computing storage (e.g., CS 114, 116, 118, and/or 120) may be implemented with any type of device, such as an accelerator device, a storage device (e.g., a computing storage device), a network device (e.g., a Network Interface Card (NIC)), a CPU, a GPU, a Neural Processing Unit (NPU), a Tensor Processing Unit (TPU), a Data Processing Unit (DPU), etc., or a plurality and/or combination thereof.
The computing storage may include computing resources (such as combinational logic, sequential logic, timers, counters, registers, state machines, complex Programmable Logic Devices (CPLDs), field Programmable Gate Arrays (FPGAs), application Specific Integrated Circuits (ASICs), embedded processors, microcontrollers, central Processing Units (CPUs) (such as Complex Instruction Set Computer (CISC) processors (e.g., x86 processors) and/or Reduced Instruction Set Computer (RISC) processors (such as ARM processors), etc.) and/or combinations thereof) that may be implemented with any component or combination of components that may perform operations on data.
The computing storage may be connected to the hosts and other intermediate layers discussed above via an interconnect fabric (interconnect fabric) that may be implemented with one or more interconnects, one or more networks, a network of networks (e.g., the internet), etc., or a combination thereof, using any type of interface and/or protocol. For example, the interconnect fabric may be implemented with peripheral component interconnect express (PCIe), NVMe over fabric (NVMe-oh), ethernet, transmission control protocol/internet protocol (TCP/IP), direct Memory Access (DMA), remote DMA (RDMA), RDMA Over Converged Ethernet (ROCE), fibre channel, infiniband, serial ATA (SATA), small Computer System Interface (SCSI), serial Attached SCSI (SAS), iWARP, computing fast link (CXL) and/or coherence protocol (such as cxl.mem, cxl.io, etc., gen-Z, open coherence accelerator processor interface (opencaps), cache coherence interconnect for accelerators (CCIX), etc.), advanced extensible interface (AXI), any generation wireless network including 2G, 3G, 4G, 5G, 6G, etc., any generation Wi-Fi, bluetooth, near Field Communication (NFC), etc., or any combination thereof. In some embodiments, the interconnect fabric may include one or more root complexes, switches, hubs, nodes, routers, and the like.
In some embodiments, the interconnect fabric may be configured to transfer data (e.g., application data) directly between components, e.g., without involvement of a host, intervention, processor utilization (e.g., CPU utilization), etc. For example, in embodiments implemented at least in part with CXL, the interconnect fabric may be configured to communicate data from the computing storage to the host application or another computing storage, e.g., using a CXL switch, PCIe root complex, PCIe switch, PCIe peer-to-peer (P2P) communication, CXL P2P communication, or the like.
FIG. 2 illustrates an example diagram representing a disclosed system for application compatibility determination including both static and dynamic compatibility analysis, the system including modules for computing granularity determinations of various subsystems of a storage device, according to a disclosed example embodiment. In some aspects, the system 200 may include an application compatibility module 204, and the application compatibility module 204 may include a static compatibility check module 206 (or static compatibility check 206 module), and the static compatibility check module 206 includes an application compatibility check 210 module, a storage system compatibility check 212 module, a RAID compatibility check 214 module, and a file system compatibility check 216 module. In another aspect, the application compatibility module 204 may include a dynamic compatibility check module 208 (or dynamic compatibility check 208 module), the dynamic compatibility check module 208 including a file system compatibility test 218 module, a storage system compatibility test 220 module, and a RAID compatibility test 222 module.
In some aspects, the static compatibility check module 206 may be configured to perform a first static analysis of the compatibility of the application with the storage device. In particular, the static compatibility check module 206 may receive input data from the application/system configuration 202 module based on an application (e.g., an application running on a host server, not shown). The static compatibility check module 206 may then use the input data and determine whether the underlying layer (e.g., a layer such as the file system 103, the RAID system 104, the storage system 106, which may include block storage devices, as shown and described above in connection with FIG. 1) satisfies one or more conditions (e.g., the pass 224 condition) that the processing unit of the determination application may be delivered to the storage (e.g., the CS 114, 116, 118, and/or 120, as shown and described above in connection with FIG. 1) without being split (divided into at least two portions). If the result of the determination is that the processing unit of the application cannot be delivered to the storage without being split, this may represent a failure 226 condition, which may further warrant further determination by the operator and/or the system of various reasons for the failure. For example, potential reasons for failure may include cases where the file system block size is not a positive multiple of the application processing unit size, and cases where the application processing unit is of variable length and one or more of the bottom layers are using fixed length units.
In some aspects, the disclosed system may determine various criteria based on variables representing application and storage system states, which may be described via equations. In particular, variable P may represent the processing unit size of the application (e.g., byte (B), kilobyte (KB), megabyte (MB), gigabyte (GB), terabyte (TB), terabyte (PB), etc.), variable B may represent the file system block size, variable F may represent the file system fragment (fragment) size, and variable S may represent the RAID stripe (stripe) size. To store the processing unit of the application to a storage device (e.g., CSD) without being split, one or more of the following conditions may need to be met:
b=k×p (k is N, where N is a positive integer)
F=m×p (m is N, where N is a positive integer)
S=n×p (N is N, where N is a positive integer)
In various aspects, the above equation may be determined to hold by an analysis performed by the static compatibility check module 206. Specifically, the static compatibility check module 206 may determine that: the file system block size B is an integer multiple of the applied processing unit P, the file system fragment size F is an integer multiple of the applied processing unit P, and the RAID stripe size S is an integer multiple of the applied processing unit P. If one or more or all of these conditions are met, the static compatibility check module 206 may determine that the underlying layer meets the conditions required for the "processing unit of the application to be delivered to storage without being split" and the static compatibility check module 206 may thereby generate a pass 224 result. If any of the above conditions are not met, the static compatibility check module 206 may determine that the underlying layer does not meet the conditions required for the "processing unit of the application to be delivered to storage without being split" and the static compatibility check module 206 may thereby generate a failure 226 result.
In some aspects, the application compatibility check 210 module may determine that the processing unit of the application has a minimum processing unit, which may be a variable length unit (V) or may be a fixed length unit (P). If the smallest processing unit is a variable length unit, the disclosed system may require additional arrangements so that proper coordination of the in-store computing (in-storage computation, ISC) mechanism may be required, for example, at the compute engine level. For example, instead of relying on a RAID subsystem, a compute engine may internally use a key-value store or an object-based storage system to store its variable length data directly into one of the storage devices. The compute engine may then send ISC commands to the device to process the data.
If the smallest processing unit is a fixed length unit, the disclosed system may determine that the appropriate data alignment condition is true on all storage tiers. Thus, if the application can directly access the device (e.g., CSD), the application compatibility check 210 module can generate a pass 224 condition.
In other aspects, the storage system compatibility check 212 module may determine the failure 226 condition if the variable length unit (V) is set and the variable length data processing is not supported by one or more devices in the system (e.g., CSD). In other aspects, the storage system compatibility check 212 module may determine the failure 226 condition if the fixed length unit (P) is set and fixed length data processing is not supported by one or more devices in the system (e.g., CSD). In other cases, the storage system compatibility check 212 module may determine 224 a pass 224 condition.
In some aspects, if the RAID stripe size S is not a positive multiple of the applied processing unit P, the RAID compatibility check 214 module may determine a failure 226 condition. If RAID is not used, variable length units (V) are used, and/or RAID stripe size (S) is a positive multiple of the applied processing units (P), then RAID compatibility check 214 module may determine a pass 224 condition.
In other aspects, if the file system is not in use, the file system compatibility check 216 module may determine 224 a pass through condition. In the case where a fragment is used, the file system compatibility check 216 module may determine the pass 224 condition if the file system fragment size (F) is a positive multiple of the processing unit P of the application. Otherwise, if the file system block size (B) is a positive multiple of the processing unit P of the application, under the condition that the block is used, the file system compatibility check 216 module may determine a pass condition.
In some aspects, the storage system compatibility check 212 module may determine the failure 226 condition if the data distribution unit (D) is not a positive multiple of P or if D is a variable length and greater than P. The storage system compatibility check 212 module may determine 224 a pass through condition if the storage system is not in use or if the data distribution unit is a positive multiple of P.
In some aspects, the dynamic compatibility check module 208 may receive input data from the application/system configuration 202 module based on an application (e.g., an application running on a host server, not shown). In other aspects, even if the static compatibility check module 206 generates the fail 226 condition (e.g., based on certain criteria as shown above), data alignment may still be implicitly supported by the internal data management mechanisms or options of each layer. Thus, the dynamic compatibility check module 208 may still generate a pass condition, indicating compatibility between the application and the CSD. For example, if P is 8KB in size and B is 4KB in size, the static compatibility check module 206 may generate a failure condition; however, in a particular file system (e.g., linux-based XFS) with stride and stripe options, P may be aligned with the RAID stripe. In a different file system (e.g., EXT 4) with the same option, P may still be split across multiple disks when there is insufficient space. Thus, the dynamic compatibility check module 208 may perform dynamic analysis of the system and may run compatibility tests to see if the input data may be distributed without being split.
In some aspects, the disclosed system may run compatibility checks (e.g., storage system, RAID, file system compatibility checks) for a given RAID configuration. Further, the disclosed system may then generate a file system with the appropriate options (e.g., stride and stripe width options). Thus, the disclosed system may run a plug-in operation to populate the entire partition through the storage system, checking whether each P is stored in a single disk. The disclosed system may then update, delete, and/or insert workloads on the same partition and check whether each P is stored in a single disk. If software RAID is used, the disclosed system may also change the RAID configuration until a valid data alignment is determined.
FIG. 3 illustrates an example diagram representing an example scenario in which an application causes a split processing unit across file systems and/or other systems that may be determined and optimized using the disclosed systems and methods versus an application causes a unified processing unit across file systems and/or other systems that may be determined and optimized using the disclosed systems and methods, in accordance with the disclosed example embodiments. In particular, fig. 3 shows an example diagram of a first data alignment scene 301 and a second data alignment scene 303, according to a disclosed example embodiment. In some aspects, the first data alignment scenario 301 includes a Data Block (DB) table 305, which Data Block (DB) table 305 may include processing units such as P1, P2 included in block 302 and additional portions labeled P. In other aspects, the first data alignment scenario 301 includes a file system block 307, the file system block 307 may include a processing unit 304, the processing unit 304 may include a portion of P2 and P1 grouped in block B, another portion of P2 and P grouped in a second block B, and P grouped in a third block B. As shown, in such scenarios where the disclosed system has not yet determined compatibility between the processing units of the application and the CSDs, the processing unit (the example processing unit P304 split into P1 and P2) potentially causes the DB to be split among multiple CSDs and reduces the computational efficiency of the computing storage system. In some aspects, the first data alignment scenario 301 includes a RAID stripe 309, and the RAID stripe 309 may include blocks 306 arranged in stripe S (e.g., similar to the blocks described above in connection with file system block 307).
In some aspects, the second data alignment scene 303 includes a DB table 311, the DB table 311 may also include a portion P included in the block 308. In other aspects, the second data alignment scenario 303 includes a file system block 313, which file system block 313 may include a portion P grouped in a block B (e.g., block 310). In particular, in the second data alignment scenario 303, the disclosed system ensures data alignment by preventing the processing unit P from being split and avoiding the case where DB is split between multiple CSDs. Therefore, this increases the computational efficiency of the computational storage system compared to the first data alignment scenario 301. In some aspects, the second data alignment scenario 303 includes a RAID stripe 315, which RAID stripe 315 may include blocks (e.g., block 312) arranged in stripe S (e.g., similar to the blocks described above in connection with file system block 313). In particular, there is again data alignment between the file system block 313 and the RAID stripe 315 due to the data alignment brought about by the application of the disclosed system and associated mechanisms.
Fig. 4 is a diagram of an exemplary operational process 400 illustrating exemplary operations associated with the disclosed system for application compatibility determination, according to a disclosed example embodiment. In some implementations, one or more of the processing blocks of fig. 4 may be performed by an apparatus. As shown in fig. 4, process 400 may include performing a first determination, which may include: the first parameter associated with the storage device is compared to the second parameter associated with the application (block 402). For example, the apparatus may perform a first determination that may include a statistical analysis as described herein. As further shown and described above, for example, in connection with FIG. 4, the static analysis may include application compatibility checking, storage system compatibility checking, RAID compatibility checking, and/or file system compatibility checking. Further, the static analysis may include a first parameter associated with the storage device, such as an application processing unit size (e.g., minimum processing unit size). As variously described herein, the second parameter associated with the application may include a block size of the file system, a file system fragment size, a RAID stripe size, and/or a key value object size. As also shown in fig. 4, process 400 may include performing a second determination based on the first determination, wherein the second determination may include inserting data into a storage partition of the storage device; and determining to store the smallest processing unit associated with the data in a storage device (block 404). For example, as further shown and described above, the second determination may include dynamic analysis (e.g., dynamic compatibility checking), including, but not limited to: file system compatibility testing, storage system compatibility testing, and/or RAID compatibility testing. Further, as noted, the second determining may include: data is inserted into a memory partition of a storage device, which may include a storage device and/or memory of a computing storage device. Further, as noted, the method may include determining to store a minimum processing unit associated with the data in the storage device, as described above. Additionally or alternatively, the computing storage device may be selected from candidate computing devices based on, for example, data alignment of tasks associated with the application and/or parameters associated with the CSD (e.g., latency, throughput, etc.). Thus, in some aspects, if two candidate computing devices have sufficient memory and/or storage capacity to accommodate the same alignment of data for the amount of data associated with a task, and the task is relatively sensitive to delay, a first candidate computing device of the candidate computing devices having relatively higher throughput may be selected for the task. Additionally or alternatively, computing devices may be selected from candidate computing devices based on, for example, one or more utilization levels of the candidate computing devices. For example, given the same data alignment, if a first candidate computing device with a higher throughput has a relatively high utilization (e.g., is relatively busy), a second candidate computing device with a relatively lower throughput but lower utilization may be selected for the task.
While fig. 4 shows example blocks of the process 400, in some implementations, the process 400 may include additional blocks, fewer blocks, different blocks, or differently arranged blocks than those depicted in fig. 4. Additionally or alternatively, two or more of the blocks of process 400 may be performed in parallel.
Any of the storage devices disclosed herein may be implemented in any form factor (such as 3.5 inches, 2.5 inches, 1.8 inches, m.2, enterprise, and data center SSD form factor (EDSFF), NF1, etc.) using any connector configuration (such as serial ATA (SATA), small Computer System Interface (SCSI), serial Attached SCSI (SAS), U.2, etc.).
Any of the storage devices disclosed herein may be implemented in whole or in part using and/or in combination with a server chassis, a server rack, a data room, a data center, an edge data center, a mobile edge data center, and/or any combination thereof.
Any of the functions described herein (including any host functions, device functions, etc. described above with respect to the embodiments disclosed herein) may be implemented in hardware, software, or any combination thereof. For example, they may be implemented with combinational logic, sequential logic, one or more timers, counters, registers, state machines, volatile memory (such as DRAM and/or Static Random Access Memory (SRAM)), non-volatile memory and/or any combination thereof, CPLD, FPGA, ASIC, CPU (including Complex Instruction Set Computer (CISC) processors (such as x86 processors) and/or Reduced Instruction Set Computer (RISC) processors (such as ARM processors)), graphics Processors (GPUs), neural Processing Units (NPUs), etc. that execute instructions stored in any type of memory. In some embodiments, one or more components may be implemented as a system on a chip (SOC).
The illustrated embodiments described herein are example operations and/or components. In some embodiments, some operations and/or components may be omitted and/or other operations and/or components may be included. Furthermore, in some embodiments, the temporal and/or spatial order of operations and/or components may be changed. Although some components and/or operations may be illustrated as separate components, in some embodiments, some components and/or operations illustrated as separate components and/or operations may be integrated into a single component and/or operation and/or some components and/or operations illustrated as a single component and/or operation may be implemented with multiple components and/or operations.
FIG. 5 shows an example schematic diagram of a system that may be used to practice embodiments of the present disclosure. As shown in fig. 5, this particular embodiment may include one or more management computing entities 500, one or more networks 505, and one or more user devices 510 (e.g., host devices, storage devices, add-ons, etc.). In various embodiments, the management computing entity 500 may be configured to perform operations associated with the disclosed systems and associated embodiments described throughout the disclosure, including, but not limited to, determining compatibility between an application and a CSD based on analysis (e.g., static analysis or dynamic analysis) described herein. Further, the management computing entity 500 may reside in any suitable portion of the disclosed system (e.g., such as any of the layers, one or more CSDs, host applications, remote hosts, additional devices, and/or combinations thereof, etc., shown and described in connection with fig. 1). Each of these components, entities, devices, systems, and the like, as used interchangeably herein, may communicate directly or indirectly with one another, such as through the same or different wired or wireless networks. In addition, while fig. 5 shows the various system entities as separate, stand-alone entities, the various embodiments are not limited to this particular architecture. As noted, the communication may be performed using any suitable protocol as further described herein.
Fig. 6 illustrates an example schematic diagram 600 of managing computing entities, according to an example embodiment of the disclosure. As noted, the management computing entity may be configured to perform operations associated with the disclosed system and associated embodiments described throughout the disclosure. Furthermore, the management computing entity 500 may reside in any suitable portion of the disclosed system. In particular, the content component can be employed to determine a signal indicative of data (e.g., video, audio, text, data, combinations thereof, etc.) to be transmitted by the systems described herein. In another embodiment, the determination of the signal for transmission may be based, for example, on user input to the device, a predetermined schedule of data transmissions on a network associated with the system, a change in network conditions, and so forth. In one embodiment, the signal may include data that may be encapsulated in data frames and/or data packets configured to be transmitted from the device to one or more devices on the network.
In another embodiment, the processing element 605 may be used to determine various parameters associated with data transmitted over a network associated with the disclosed system. As another example. The processing element 605 may be used to perform various acceleration operations (such as at least a portion of offloading functions, data pre-or post-processing, and/or combinations thereof, etc.).
In one embodiment, a transmitting component (not shown) may be used to transmit signals from one device to another device on the network. For example, the transmitting component may be used to prepare a transmitter (e.g., transmitter 704 of fig. 7 below) to transmit a signal over a network. For example, the transmitting component may queue the data in one or more buffers, may determine that the transmitting device and associated transmitter are functioning and have sufficient power to transmit signals over the network, may adjust one or more parameters associated with the transmission of the data (e.g., modulation type, signal amplification, signal power level, noise suppression, and/or combinations thereof, etc.).
In general, the terms computing entity, computer, entity, device, system, and/or the like, as used interchangeably herein, may refer to, for example, one or more computers, computing entities, desktop computers, mobile phones, tablets, headsets, laptops, distributed systems, gaming machines (e.g., xbox, gaming stations (Play Station), wii), watches, glasses, ibeacons, proximity beacons (proximity beacons), key fobs (key fobs), radio Frequency Identification (RFID) tags, headsets, scanners, televisions, dongles, cameras, wrist bands, wearable items/devices, kiosks), input terminals, servers or server networks, blade servers, gateways, switches, processing devices, processing entities, set-top boxes, repeaters, routers, network access points, base stations, and the like, and/or any combination of devices or entities suitable for performing the functions, operations, and/or processes described herein. Such functions, operations, and/or processes may include, for example, transmitting, receiving, operating on … …, processing, displaying, storing, determining, creating/generating, monitoring, evaluating, comparing, and/or the like terms as used interchangeably herein. In one embodiment, these functions, operations, and/or processes may be performed on data, content, information, and/or similar terms as used interchangeably herein.
As indicated, in one embodiment, the managing computing entity 500 may also include one or more communication interfaces 620 for communicating with various computing entities (such as by communicating data, content, information, and/or similar terms as may be sent, received, manipulated, processed, displayed, stored, etc. for … …). For example, the managing computing entity 500 may communicate with the user device 510 and/or various other computing entities.
As shown in fig. 6, in one embodiment, the managing computing entity 500 may include one or more processing elements 605 (also referred to as processors, processing circuitry, and/or similar terms used interchangeably herein) or be in communication with one or more processing elements 605, the one or more processing elements 605 being in communication with other elements within the managing computing entity 500, for example, via a bus. As will be appreciated, the processing element 605 may be implemented in a number of different ways. For example, the processing element 605 may be implemented as one or more Complex Programmable Logic Devices (CPLDs), microprocessors, multi-core processors, co-processing entities, application specific instruction set processors (ASIPs), microcontrollers, and/or controllers. Further, the processing element 605 may be implemented as one or more other processing devices or circuitry. The term circuitry may refer to an entirely hardware embodiment or a combination of hardware and a computer program product. Thus, the processing element 605 may be implemented as an integrated circuit, an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Programmable Logic Array (PLA), a hardware accelerator, other circuitry, or the like. Thus, as will be appreciated, the processing element 605 may be configured for a particular use or to execute instructions stored in a volatile or non-volatile medium or otherwise accessible to the processing element 605. As such, whether configured by hardware or a computer program product, or by a combination thereof, the processing element 605 may be capable of performing steps or operations in accordance with embodiments of the present disclosure when configured accordingly.
In one embodiment, management computing entity 500 may also include or be in communication with non-volatile media (also referred to as non-volatile storage, memory storage, memory circuitry, and/or similar terms used interchangeably herein). In one embodiment, the non-volatile storage device or memory may include one or more non-volatile storage devices or memory media 610, the one or more non-volatile storage devices or memory media 610 including, but not limited to, hard disk, ROM, PROM, EPROM, EEPROM, flash memory, MMC, SD memory card, memory stick, CBRAM, PRAM, feRAM, NVRAM, MRAM, RRAM, SONOS, FJG RAM, ground beetle memory, racetrack memory, and the like. As will be appreciated, the non-volatile storage device or memory medium may store a database, database instance, database management system, data, application, program component, script, source code, object code, byte code, compiled code, interpreted code, machine code, executable instructions, and the like. The term database, database instance, database management system, and/or similar terms as used interchangeably herein may refer to a collection of records or data stored in a computer-readable storage medium using one or more database models (such as hierarchical database models, network models, relational models, entity-relationship models, object models, document models, semantic models, graphic models, etc.).
In one embodiment, the management computing entity 500 may also include or be in communication with volatile media (also referred to as volatile storage, memory storage devices, memory circuitry, and/or similar terms used interchangeably herein). In one embodiment, the volatile memory device or memory may also include one or more volatile memory devices or memory mediums 615, the one or more volatile memory devices or memory mediums 615 including, but not limited to RAM, DRAM, SRAM, FPM DRAM, EDO DRAM, SDRAM, DDR2 SDRAM, DDR3 SDRAM, RDRAM, TTRAM, T-RAM, Z-RAM, RIMM, DIMM, SIMM, VRAM, cache memory, register memory, and the like. As will be appreciated, a volatile storage device or memory medium may be used to store at least portions of a database, database instance, database management system, data, applications, programs, program components, scripts, source code, object code, byte code, compiled code, interpreted code, machine code, executable instructions, and the like that are executed by, for example, the processing element 605. Thus, databases, database instances, database management systems, data, applications, programs, program components, scripts, source code, object code, byte code, compiled code, interpreted code, machine code, executable instructions, and the like may be used to control particular aspects of the operation of the management computing entity 500 with the aid of the processing elements 605 and the operating system.
As indicated, in one embodiment, the managing computing entity 500 may also include one or more communication interfaces 620 for communicating with various computing entities (such as by communicating data, content, information, and/or similar terms as may be sent, received, manipulated, processed, displayed, stored, etc. for … …). Such communications may be performed using a wired data transfer protocol such as peripheral component interconnect express (PCIe), fiber Distributed Data Interface (FDDI), digital Subscriber Line (DSL), ethernet, asynchronous Transfer Mode (ATM), frame relay, data Over Cable Service Interface Specification (DOCSIS), or any other wired transfer protocol. Similarly, the management computing entity 500 may be configured to communicate via a wireless external communication network using any of a variety of protocols, such as General Packet Radio Service (GPRS), universal Mobile Telecommunications System (UMTS), code division multiple access 2000 (CDMA 2000), CDMA 2000X (1 xRTT), wideband Code Division Multiple Access (WCDMA), time division synchronous code division multiple access (TD-SCDMA), long Term Evolution (LTE), evolved universal terrestrial radio access network (E-UTRAN), evolved data optimized (EVDO), high Speed Packet Access (HSPA), high Speed Downlink Packet Access (HSDPA), IEEE 802.11 (Wi-Fi), wi-Fi direct, 802.16 (WiMAX), ultra Wideband (UWB), infrared (IR) protocols, near Field Communication (NFC) protocols, zigBee, bluetooth protocols, 5G protocols, wireless Universal Serial Bus (USB) protocols, and/or any other wireless protocols.
Although not shown, the management computing entity 500 may include or communicate with one or more input elements (such as keyboard input, mouse input, touch screen/display input, motion input, movement input, audio input, pointing device input, joystick input, keypad input, etc.). The management computing entity 500 may also include or be in communication with one or more output elements (not shown), such as audio output, video output, screen/display output, motion output, movement output, and the like.
As will be appreciated, such as in a distributed system, one or more of the components of the managing computing entity 500 may be located remotely from the other managing computing entity 500 components. Further, one or more components may be combined and additional components performing the functions described herein may be included in the management computing entity 500. Thus, the management computing entity 500 may be adapted to accommodate various needs and situations. As will be appreciated, these architectures and descriptions are provided for exemplary purposes only and are not limited to the various embodiments.
The user may be an individual, a household, a company, an organization, an entity, a department within an organization, a representative of an organization and/or a person, etc. In one example, the user may be an employee, resident, customer, or the like. For example, a user may operate user device 510 that includes one or more components that are similar in function to the components of management computing entity 500.
In various aspects, as shown and described herein in connection with fig. 5 and 6, the processing component, the sending component, and/or the receiving component (not shown) may be configured to operate on one or more aspects of managing the functionality of the computing entity 500. In particular, the processing component, the sending component, and/or the receiving component may be configured to communicate with one or more processing elements 605, memory 610, volatile memory 615, and may include a communication interface 620 (e.g., to facilitate communication between devices).
Fig. 7 shows an example schematic diagram of a user device according to an example embodiment of the disclosure. Fig. 7 provides an illustrative schematic representation of a user device 710 (e.g., host device, storage device, peripheral device, etc.) that may be used in connection with embodiments of the present disclosure. Generally, the terms device, system, computing entity, and/or the like, as used interchangeably herein, may refer to, for example, one or more computers, computing entities, desktops, mobile phones, tablets, cellphones, laptops, distributed systems, gaming machines (e.g., xbox, gaming stations (PlayStation), wii), watches, glasses, key fobs, radio Frequency Identification (RFID) tags, headsets, scanners, cameras, wrist bands, self-service terminals, input terminals, servers or server networks, blade servers, gateways, switches, processing devices, processing entities, set-top boxes, repeaters, routers, network access points, base stations, and the like, and/or any combination of devices or entities suitable for performing the functions, operations, and/or processes described herein. The user device 710 may be operated by various parties. As shown in fig. 7, the user device 710 may include an antenna 712, a transmitter 704 (e.g., radio), a receiver 706 (e.g., radio), and a processing element (or processing device) 708 (e.g., CPLD, FPGA, microprocessor, multi-core processor, co-processing entity, ASIP, microcontroller, and/or controller) that provides signals to the transmitter 704 and receives signals from the receiver 706.
The signals provided to the transmitter 704 and received from the receiver 706 may comprise signaling information in accordance with the air interface standard of the applicable wireless system. In this regard, the user device 710 may be capable of operating with one or more air interface standards, communication protocols, modulation types, and access types. More specifically, the user device 710 may operate in accordance with any of a number of wireless communication standards and protocols, such as those described above with respect to the managing computing entity 500 of fig. 5. In one particular embodiment, the user device 710 may operate in accordance with a number of wireless communication standards and protocols (such as the disclosed IoT DOCSIS protocol, UMTS, CDMA2000, 1xRTT, WCDMA, TD-SCDMA, LTE, E-UTRAN, EVDO, HSPA, HSDPA, 5G, wi-Fi, wi-Fi direct, wiMAX, UWB, IR, NFC, bluetooth, USB, etc.). Similarly, the user device 710 may operate via the network interface 720 in accordance with a number of wired communication standards and protocols, such as those described above with respect to the managing computing entity 500.
Via these communication standards and protocols, user device 710 may communicate with various other entities using concepts such as Unstructured Supplementary Service Data (USSD), short Message Service (SMS), multimedia Message Service (MMS), dual tone multi-frequency signaling (DTMF), and/or subscriber identity component dialer (SIM dialer). The user device 710 may also download changes, additional components, and updates to, for example, the firmware, software (e.g., including executable instructions, applications, program components), and operating system of the user device 710.
According to an embodiment, the user device 710 may include location determining aspects, devices, components, functions, and/or similar terms used interchangeably herein. For example, the user device 710 may include an outdoor positioning aspect (such as a location component adapted to obtain, for example, latitude, longitude, altitude, geocode, route, direction, heading, speed, universal Time (UTC), date, and/or various other information/data). In one embodiment, the location component may obtain data, sometimes referred to as ephemeris data, by identifying the number of satellites in view and the relative positions of the satellites. The satellites may be a variety of different satellites including a Low Earth Orbit (LEO) satellite system, a department of defense (DOD) satellite system, an european union galileo positioning system, a chinese compass navigation system, an indian regional navigation satellite system, etc. Alternatively, the location information may be determined by triangulating the location of the user device 710 in conjunction with various other systems, including cellular towers, wi-Fi access points, and the like. Similarly, user device 710 may include indoor positioning aspects (such as a location component adapted to obtain, for example, latitude, longitude, altitude, geocode, route, direction, heading, speed, time, date, and/or various other information/data). Some indoor systems may use various location or positioning technologies including RFID tags, indoor beacons or transmitters, wi-Fi access points, cellular towers, nearby computing devices (e.g., smart phones, laptops), etc. For example, such technologies may include iBeacons, gimbal proximity beacons (Gimbal proximity beacons), bluetooth Low Energy (BLE) transmitters, NFC transmitters, and the like. These indoor positioning aspects may be used in various settings to determine the location of someone or something within an inch or centimeter.
The user device 710 may also include a user interface (which may include a display 716 coupled to the processing element 708) and/or a user input interface (coupled to the processing element 708). For example, as described herein, the user interface may be a user application executing on the user device 710 and/or accessible via the user device 710, a browser, a user interface, and/or similar terms used interchangeably herein to interact with information from the managing computing entity 500 and/or cause display of information from the managing computing entity 500. The user input interface may include any of a number of devices or interfaces that allow the user device 710 to receive data, such as a keypad 718 (hard or soft), a touch display, a voice/speech or motion interface, or other input device. In embodiments including the keypad 718, the keypad 718 may include (or cause to be displayed) conventional numbers (0-9) and associated keys (#) as well as other keys for operating the user device 710, and may include a set of alphanumeric keys or a set of keys that may be activated to provide a set of alphanumeric keys. In addition to providing input, the user input interface may also be used, for example, to activate or deactivate certain functions (such as a screen saver and/or sleep mode).
The user apparatus 710 may also include volatile storage or memory 722 and/or non-volatile storage or memory 724, which volatile storage or memory 722 and/or non-volatile storage or memory 724 may be embedded and/or may be removable. For example, the nonvolatile memory may be ROM, PROM, EPROM, EEPROM, flash memory, MMC, SD memory card, memory stick, CBRAM, PRAM, feRAM, NVRAM, MRAM, RRAM, SONOS, FJG RAM, armyworm memory, racetrack memory, or the like. Volatile memory may be RAM, DRAM, SRAM, FPM DRAM, EDO DRAM, SDRAM, DDR2 SDRAM, DDR3 SDRAM, RDRAM, TTRAM, T-RAM, Z-RAM, RIMM, DIMM, SIMM, VRAM, cache memory, register memory, and the like. Volatile and nonvolatile storage devices or memories may store databases, database instances, database management systems, data, applications, programs, program components, scripts, source code, object code, byte code, compiled code, interpreted code, machine code, executable instructions, and the like to implement the functionality of user device 710. As indicated, this may include user applications resident on the entity or accessible through a browser or other user interface for communicating with the managing computing entity 700 and/or various other computing entities.
In another embodiment, the user device 710 may include one or more components or functions that are the same as or similar to the components or functions of the management computing entity 500 as described in more detail above. As will be appreciated, these architectures and descriptions are provided for exemplary purposes only and are not limited to the various embodiments.
Some embodiments may be implemented in one or a combination of hardware, firmware, and software. Other embodiments may also be implemented as instructions stored on a computer-readable storage device, which may be read and executed by at least one processor to perform the operations described herein. Computer-readable storage devices may include any non-transitory memory mechanism for storing information in a form readable by a machine (e.g., a computer). For example, computer-readable storage devices may include read-only memory (ROM), random-access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, and other storage devices and media.
The word "exemplary" is used herein to mean "serving as an example, instance, or illustration. Any embodiment described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments. The terms "computing device," "user device," "communication station," "handheld device," "mobile device," "wireless device," and "user device" (UE) as used herein refer to a wireless communication device (such as a cellular telephone, smart phone, tablet, netbook, wireless terminal, laptop, femtocell, high Data Rate (HDR) subscriber station, access point, printer, point-of-sale device, access terminal, or other Personal Communication System (PCS) device). The device may be mobile or stationary.
As used in this document, the term "communication" is intended to include transmission, or reception, or both transmission and reception. This may be particularly useful in the claims when describing the organization of data sent by one device and received by another device, but only the function of one of these devices is needed to infringe the claim. Similarly, when only the function of one of these devices is claimed, the bidirectional data exchange between two devices (both devices transmitting and receiving during the exchange) may be described as "communication". The term "communication" as used herein with respect to a wireless communication signal includes transmitting a wireless communication signal and/or receiving a wireless communication signal. For example, a wireless communication unit capable of communicating wireless communication signals may include a wireless transmitter that transmits wireless communication signals to at least one other wireless communication unit, and/or a wireless communication receiver that receives wireless communication signals from at least one other wireless communication unit.
Some embodiments may be used in conjunction with various devices and systems (e.g., personal Computers (PCs), desktop computers, mobile computers, laptop computers, notebook computers, tablet computers, server computers, handheld devices, personal Digital Assistant (PDA) devices, handheld PDA devices, in-vehicle devices, off-vehicle devices, hybrid devices, vehicle devices, off-vehicle devices, mobile or portable devices, consumer devices, non-mobile or non-portable devices, wireless communication stations, wireless communication devices, wireless Access Points (APs), wired or wireless routers, wired or wireless modems, video devices, audio-video (a/V) devices, wired or wireless networks, wireless area networks, wireless Video Area Networks (WVAN), local Area Networks (LANs), wireless LANs (WLANs), personal Area Networks (PANs), wireless PANs (WPANs), etc.).
Some embodiments may be used in conjunction with unidirectional and/or bidirectional radio communication systems, cellular radiotelephone communication systems, mobile telephones, cellular telephones, wireless telephones, personal Communication Systems (PCS) devices, PDA devices which include wireless communication devices, mobile or portable Global Positioning System (GPS) devices, devices which include GPS receivers or transceivers or chips, devices which include RFID elements or chips, multiple Input Multiple Output (MIMO) transceivers or devices, single Input Multiple Output (SIMO) transceivers or devices, multiple Input Single Output (MISO) transceivers or devices, devices with one or more internal and/or external antennas, digital Video Broadcasting (DVB) devices or systems, multi-standard radios or systems, wired or wireless handheld devices (e.g., smart phones), wireless Application Protocol (WAP) devices, and so forth.
Some embodiments may be compatible with a wireless communication protocol (e.g., radio Frequency (RF), infrared (IR), frequency Division Multiplexing (FDM), orthogonal FDM (OFDM), time Division Multiplexing (TDM), time Division Multiple Access (TDMA), extended TDMA (E-TDMA), general Packet Radio Service (GPRS), extended GPRS, code Division Multiple Access (CDMA), wideband CDMA (WCDMA), CDMA 2000, single carrier CDMA, multi-carrier modulation (MDM), discrete Multitone (DMT), bluetooth) compliant with one or more wireless communication protocols TM Global Positioning System (GPS), wi-Fi, wi-Max, zigBee TM One or more types of wireless communication signals and/or systems of Ultra Wideband (UWB), global system for mobile communications (GSM), 2G, 2.5G, 3G, 3.5G, 4G, fifth generation (5G) mobile networks, 3GPP, long Term Evolution (LTE), LTE-advanced, enhanced data rates for GSM evolution (EDGE), etc.). Other embodiments may be used in various other devices, systems, and/or networks.
Although an example processing system has been described above, embodiments of the subject matter and functional operations described herein may be implemented in other types of digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them.
Embodiments of the subject matter and operations described herein may be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described herein can be implemented as one or more computer programs, i.e., one or more components of computer program instructions encoded on a computer storage medium for execution by, or to control the operation of, information/data processing apparatus. Alternatively or additionally, the program instructions may be encoded on a manually-generated propagated signal (e.g., a machine-generated electrical, optical, or electromagnetic signal) that is generated to encode information/data for transmission to suitable receiver apparatus for execution by an information/data processing apparatus. The computer storage medium may be or be included in a computer readable storage device, a computer readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Furthermore, while the computer storage medium is not a propagated signal, the computer storage medium may be a source or destination of computer program instructions encoded in an artificially generated propagated signal. Computer storage media may also be or be included in one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).
The operations described herein may be implemented as operations performed by an information/data processing apparatus on information/data stored on one or more computer-readable storage devices or received from other sources.
The term "data processing apparatus" includes all types of apparatus, devices, and machines for processing data, including, for example, a programmable processor, a computer, a system on a chip, or a combination of more or less of the foregoing. The device may comprise a dedicated logic circuit, for example an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). In addition to hardware, the apparatus may include code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The devices and execution environments may implement a variety of different computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.
A computer program (also known as a program, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a component, assembly, subroutine, object, or other unit suitable for use in a computing environment. The computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or information/data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store multiple portions of one or more components, sub-programs, or code). A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described herein can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input information/data and generating output. Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and information/data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive information/data from or transfer information/data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, the computer need not have such devices. Devices suitable for storing computer program instructions and information/data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disk; CD-ROM and DVD-ROM discs. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, embodiments of the subject matter described herein can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information/data to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other types of devices may also be used to provide for interaction with a user; for example, feedback provided to the user may be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user may be received in any form, including acoustic, speech, or tactile input. Further, the computer may interact with the user by sending and receiving documents to and from the device used by the user; for example, by sending a web page to a web browser on a user's client device in response to a request received from the web browser.
Embodiments of the subject matter described herein can be implemented in a computing system that includes a back-end component, e.g., as an information/data server, or that includes a middleware component (e.g., an application server), or that includes a front-end component (e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an embodiment of the subject matter described herein), or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital information/data communication (e.g., a communication network). Examples of communication networks include local area networks ("LANs") and wide area networks ("WANs"), internetworks (e.g., the internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
The computing system may include clients and servers. The client and server are typically remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some embodiments, the server sends information/data (e.g., HTML pages) to the client device (e.g., for the purpose of displaying information/data to and receiving user input from a user interacting with the client device). Information/data generated at the client device (e.g., results of user interactions) may be received at the server from the client device.
While this specification contains many specifics of particular embodiments, these should not be construed as limitations on the scope of any embodiments or of what may be claimed, but rather as descriptions of features specific to particular embodiments. Certain features that are described herein in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
Similarly, although operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In some cases, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
Thus, particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying drawings do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some embodiments, multitasking and parallel processing may be advantageous.
Many modifications and other embodiments of the disclosure set forth herein will come to mind to one skilled in the art to which these embodiments pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the embodiments are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.

Claims (20)

1. A method for memory management, comprising:
performing a first determination comprising comparing a first parameter associated with the storage device with a second parameter associated with the application;
performing a second determination based on the first determination, wherein the second determination includes inserting data into a storage partition of the storage device; and
a determination is made to store a minimum processing unit associated with the data in a storage device.
2. The method of claim 1, wherein the first parameter comprises a minimum processing unit size and the first parameter comprises a variable length unit or a fixed length unit.
3. The method of claim 1, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a block size of the file system.
4. The method of claim 1, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a file system fragment size.
5. The method of claim 1, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a redundant array of independent disks RAID stripe size.
6. The method of claim 1, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a key object size.
7. An apparatus for memory management, comprising:
one or more processors configured to:
performing a first determination comprising comparing a first parameter associated with the storage device with a second parameter associated with the application;
performing a second determination based on the first determination, wherein the second determination includes inserting data into a storage partition of the storage device; and
a determination is made to store a minimum processing unit associated with the data in a storage device.
8. The apparatus of claim 7, wherein the first parameter comprises a minimum processing unit size and the first parameter comprises a variable length unit or a fixed length unit.
9. The apparatus of claim 7, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a block size of a file system.
10. The apparatus of claim 7, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a file system fragment size.
11. The apparatus of claim 7, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a redundant array of independent disks RAID stripe size.
12. The apparatus of claim 7, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a key object size.
13. The apparatus of any of claims 7 to 12, wherein the apparatus comprises a computing storage device.
14. A non-transitory computer-readable medium storing a set of instructions for memory management, the set of instructions comprising:
one or more instructions that, when executed by one or more processors of an apparatus, cause the apparatus to:
performing a first determination comprising comparing a first parameter associated with the storage device with a second parameter associated with the application;
performing a second determination based on the first determination, wherein the second determination includes inserting data into a storage partition of the storage device; and
a determination is made to store a minimum processing unit associated with the data in a storage device.
15. The non-transitory computer-readable medium of claim 14, wherein the first parameter comprises a minimum processing unit size and the first parameter comprises a variable length unit or a fixed length unit.
16. The non-transitory computer readable medium of claim 14, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a block size of a file system.
17. The non-transitory computer-readable medium of claim 14, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a file system fragment size.
18. The non-transitory computer readable medium of claim 14, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a redundant array of independent disks RAID stripe size.
19. The non-transitory computer-readable medium of claim 14, wherein the first parameter comprises a minimum processing unit size and the second parameter comprises a key-value object size.
20. The non-transitory computer readable medium of any of claims 14 to 19, wherein the device comprises a computing storage device.
CN202310233134.7A 2022-03-11 2023-03-10 Method and apparatus for memory management Pending CN116737063A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US63/319,272 2022-03-11
US18/117,384 US20230289084A1 (en) 2022-03-11 2023-03-03 Systems and methods for checking data alignment between applications, file systems, and computational storage devices
US18/117,384 2023-03-03

Publications (1)

Publication Number Publication Date
CN116737063A true CN116737063A (en) 2023-09-12

Family

ID=87915813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310233134.7A Pending CN116737063A (en) 2022-03-11 2023-03-10 Method and apparatus for memory management

Country Status (1)

Country Link
CN (1) CN116737063A (en)

Similar Documents

Publication Publication Date Title
US20210397577A1 (en) Systems and methods for communications within a storage chassis
CN113742256A (en) System and method for scalable and coherent memory devices
CN109725823B (en) Method and apparatus for managing a hybrid storage disk array
EP4130971A1 (en) Systems, methods, and apparatus for the management of device local memory
CN103491152A (en) Metadata obtaining method, device and system in distributed file system
US12073116B2 (en) Systems, methods, and apparatus for computational storage functions
US11093176B2 (en) FaaS-based global object compression
KR102715658B1 (en) Systems and methods for data transfer for computational storage devices
US10826724B2 (en) Flexible unnumbered destination tunnels for virtual networks
CN116737063A (en) Method and apparatus for memory management
US20230289084A1 (en) Systems and methods for checking data alignment between applications, file systems, and computational storage devices
EP4350500A1 (en) Systems, methods, and apparatus for transferring programs for computational storage devices
US20240176750A1 (en) Systems, methods, and apparatus for memory protection for computational storage devices
EP4155895A1 (en) Systems and methods for near-storage processing in solid state drives
CN118114317A (en) Electronic system and method and device for managing memory
CN117908770A (en) System, method and apparatus for transferring programs for computing storage devices
US11748181B2 (en) System and method for efficient scalable software-defined NVMEoF front-end connectivity
US20240214711A1 (en) Cloud-based virtual storage appliance monitoring system and method
US11513727B2 (en) System and method for extending NVRAM-based write-cache onto SSDs
TW202431088A (en) Method for computational storage, system for managing funtions, and computer-readable medium
US20220342596A1 (en) System and Method for Smart NVMeOF Disk Array Enclosure Deep Background Data Reduction Offload

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication