IP Library Granted Patent US 12,568,052
Granted Patent B2
US 12,568,052 · App. 18/233,223 · Granted Mar 3, 2026

Data transmission scheduling for disaggregated memory systems

Inventors: Marjan Radi (San Jose, CA); Dejan Vucinic (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
H04L47/6255H04L47/6275H04L67/1097
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,568,052
App. No.
18/233,223
Granted
Mar 3, 2026
Kind
B2
Abstract

A processing node executes one or more applications that are allocated memory of at least one shared memory of one or more memory nodes via a network. Packets including memory messages for memory nodes are enqueued into one or more transmission queues for sending the packets to the memory nodes. Each packet is enqueued into a transmission queue according to the application issuing the memory message included in the packet. One or more time slots of a predetermined time period are assigned to a transmission queue for sending at least a portion of the packets enqueued in the transmission queue within the assigned one or more time slots. At least a portion of the packets from the transmission queue are sent during the one or more assigned time slots. In one aspect, time slots are assigned based on scheduling information from a network scheduling device.

Claims (54)

1 . A processing node, comprising:

a network interface configured to communicate with one or more memory nodes via a network, the one or more memory nodes each configured to provide a respective shared memory via the network; and

at least one processor configured, individually or in combination, to:

execute one or more applications, wherein the one or more applications are allocated memory of at least one shared memory of the one or more memory nodes;

enqueue a plurality of packets into one or more transmission queues for sending the plurality of packets via the network interface to the one or more memory nodes, wherein each packet of the plurality of packets includes a corresponding memory message from an application of the one or more applications for a memory node of the one or more memory nodes, and wherein each packet of the plurality of packets is enqueued into a corresponding transmission queue of the one or more transmission queues according to which application of the one or more applications issued a memory message included in the packet;

assign one or more time slots of a predetermined time period to a transmission queue of the one or more transmission queues for sending at least a portion of the packets enqueued in the transmission queue within the assigned one or more time slots; and

send the at least a portion of the packets from the transmission queue via the network interface to a target memory node of the one or more memory nodes during the one or more time slots assigned to the transmission queue.

2 . The processing node of claim 1 , wherein the at least one processor is further configured, individually or in combination, to assign the one or more time slots to the transmission queue based on traffic load information for the one or more transmission queues.

3 . The processing node of claim 2 , wherein traffic load information for the transmission queue includes at least one of a priority of a data flow including one or more packets in the transmission queue, a length of the data flow, a Quality of Service (QOS) setting for the data flow, a number of packets in the transmission queue, and a number of pending memory requests issued by the application associated with the transmission queue that have not been completed.

4 . The processing node of claim 3 , wherein the at least one processor is further configured, individually or in combination, to determine the priority of the data flow based on at least one of a time limit setting for the data flow to be received by the target memory node and an indication of a remaining amount of data to be transmitted for the data flow.

5 . The processing node of claim 1 , wherein the at least one processor is further configured, individually or in combination, to:

tag packets to be sent for a data flow with a priority indicator, the data flow including a set of packets in the transmission queue; and

wherein, based on the priority indicator, at least one of a programmable switch on the network and the target memory node are configured to prioritize processing at least one of the data flow and the set of packets over processing at least one of another data flow and another packet not included in the set of packets.

6 . The processing node of claim 1 , wherein the at least one processor is further configured, individually or in combination, to:

identify at least one of:

a new data flow including packets issued by a different application, and

an end of a current data flow including packets issued by the application or by another application of the one or more applications; and

assign time slots for a subsequent predetermined time period to at least one transmission queue the one or more transmission queues based at least in part on the identification of at least one of the new data flow and the end of the current data flow.

7 . The processing node of claim 1 , wherein the at least one processor is further configured, individually or in combination, to add at least one of traffic load information for the one or more transmission queues and packet reception capacity information for the processing node to one or more outgoing packets sent by the processing node to the network via the network interface.

8 . The processing node of claim 1 , wherein the at least one processor is further configured, individually or in combination, to:

receive, via the network interface, scheduling information from at least one of a scheduling server and a programmable switch on the network; and

assign time slots for a subsequent predetermined time period to at least one transmission queue of the one or more transmission queues based at least in part on the received scheduling information.

9 . The processing node of claim 1 , further comprising at least one local memory; and

wherein the at least one processor is further configured, individually or in combination, to execute a program in a kernel space of the at least one local memory to assign time slots of the predetermined time period to the one or more transmission queues.

10 . A method performed by a processing node, the method comprising:

executing one or more applications, wherein the one or more applications are allocated memory of at least one shared memory of one or more memory nodes that are each configured to provide a respective shared memory via a network;

enqueuing a plurality of packets into one or more transmission queues for sending the plurality of packets to the one or more memory nodes, wherein each packet of the plurality of packets includes a corresponding memory message from an application of the one or more applications for a memory node of the one or more memory nodes, and wherein each packet of the plurality of packets is enqueued into a corresponding transmission queue of the one or more transmission queues according to which application of the one or more applications issued a memory message included in the packet;

assigning, based at least in part on traffic load information for the one or more transmission queues, one or more time slots of a predetermined time period to a transmission queue of the one or more transmission queues for sending at least a portion of the packets enqueued in the transmission queue within the assigned one or more time slots; and

sending the at least a portion of the packets from the transmission queue during the one or more time slots assigned to the transmission queue.

11 . The method of claim 10 , wherein traffic load information for the transmission queue includes at least one of a priority of a data flow including one or more packets in the transmission queue, a length of the data flow, a Quality of Service (QOS) setting for the data flow, a number of packets in the transmission queue, and a number of pending memory requests issued by the application associated with the transmission queue that have not been completed.

12 . The method of claim 11 , further comprising determining the priority of the data flow based on at least one of a time limit setting for the data flow to be received by the target memory node and an indication of a remaining amount of data to be transmitted for the data flow.

13 . The method of claim 10 , further comprising:

tagging packets to be sent for a data flow with a priority indicator, the data flow including a set of packets in the transmission queue; and

wherein, based on the priority indicator, at least one of a programmable switch on the network and the target memory node are configured to prioritize processing of at least one of the data flow and the set of packets over processing at least one of another data flow and another packet not included in the set of packets.

14 . The method of claim 10 , further comprising:

identifying at least one of:

a new data flow including memory messages issued by a different application, and

an end of a current data flow including memory messages issued by the application or by another application of the one or more applications; and

assigning time slots for a subsequent predetermined time period to at least one transmission queue of the one or more transmission queues based at least in part on the identification of at least one of the new data flow and the end of the current data flow.

15 . The method of claim 10 , further comprising adding at least one of traffic load information for the one or more transmission queues and packet reception capacity information for the processing node to one or more outgoing packets sent by the processing node to the network.

16 . The method of claim 10 , further comprising:

receiving scheduling information from at least one of a scheduling server and a programmable switch on the network; and

assigning time slots for a subsequent predetermined time period to at least one transmission queue of the one or more transmission queues based at least in part on the received scheduling information.

17 . The method of claim 10 , further comprising executing a program in a kernel space of at least one local memory of the processing node to assign time slots of the predetermined time period to the one or more transmission queues.

18 . A network scheduling device, the network scheduling device comprising:

a network interface configured to communicate with a plurality of processing nodes on a network, wherein the plurality of processing nodes is configured to access shared memories at a plurality of memory nodes on the network; and

means for:

retrieving, from packets sent on the network by the plurality of processing nodes, traffic load information for one or more transmission queues at each of the plurality of processing nodes, wherein each processing node is configured to enqueue packets including memory messages from one or more applications to access a shared memory, and wherein the packets are enqueued into one or more transmission queues according to the application of the one or more applications that issued a memory message in the packet;

determining scheduling information for at least one processing node of the plurality of processing nodes based at least in part on the retrieved traffic load information; and

sending the determined scheduling information to the at least one processing node, wherein the at least one processing node is configured to assign one or more time slots of a predetermined time period to at least one transmission queue of the one or more transmission queues for sending at least a portion of the packets enqueued in the at least one transmission queue within the assigned one or more time slots.

19 . The network scheduling device of claim 18 , further comprising means for:

retrieving, from packets sent on the network by at least one of the plurality of processing nodes and the plurality of memory nodes, packet reception capacity information for the at least one of the plurality of processing nodes and the plurality of memory nodes; and

determining the scheduling information for the at least one processing node of the plurality of processing nodes based at least in part on the retrieved packet reception capacity information.

20 . The network scheduling device of claim 18 , wherein the scheduling information is configured to indicate at least one of a change in a number of available time slots for at least one subsequent predetermined time period, a change in time slot assignment for a transmission queue of the one or more transmission queues, a change in a priority for data flows including packets sent from the transmission queue, an availability of a memory node of the plurality of memory nodes to perform memory requests, and a level of congestion of packets sent to the memory node.

Assignments (3)
PATENT COLLATERAL AGREEMENT- A&R Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065656/0649 →
PATENT COLLATERAL AGREEMENT - DDTL Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065657/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 11, 2023
From: RADI, MARJAN; VUCINIC, DEJAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 064570/0470 →
Continuity (2)
Provisional Application 63523608 · Jun 27, 2023
Related Publication 20250007854A1 · Jan 2, 2025
References Cited (46)
US 6400410B1 · Timmer · 2002 [cited by examiner]
US 7016367B1 · Dyckerhoff · 2006 [cited by examiner]
US 7349418B1 · Cohen · 2008 [cited by examiner]
US 9823840B1 · Brooker et al. · 2017 [cited by applicant]
US 10237199B2 · Szymanski · 2019 [cited by examiner]
US 11134025B2 · Billore et al. · 2021 [cited by applicant]
US 11431645B2 · Zhou et al. · 2022 [cited by applicant]
US 20040037558A1 · Beshai · 2004 [cited by examiner]
US 20130007755A1 · Chambliss et al. · 2013 [cited by applicant]
US 20160043973A1 · Drouin · 2016 [cited by examiner]
US 20160070496A1 · Cohen et al. · 2016 [cited by applicant]
US 20170034297A1 · Waheed · 2017 [cited by applicant]
US 20180089119A1 · Khan · 2018 [cited by examiner]
US 20180295052A1 · St-Laurent · 2018 [cited by examiner]
US 20190243762A1 · Birke et al. · 2019 [cited by applicant]
US 20200145329A1 · St-Laurent · 2020 [cited by examiner]
US 20200322287A1 · Connor et al. · 2020 [cited by applicant]
US 20210240616A1 · Stabrawa et al. · 2021 [cited by applicant]
US 20220103530A1 · Daly · 2022 [cited by examiner]
US 20220179585A1 · Muthiah · 2022 [cited by examiner]
US 20220278911A1 · Padala et al. · 2022 [cited by applicant]
US 20240054079A1 · Han et al. · 2024 [cited by applicant]
US 20250254681A1 · Jain · 2025 [cited by examiner]
CN 108353040A · 2018 [cited by examiner]
CN 111742305A · 2020 [cited by examiner]
CN 113672398A · 2021 [cited by examiner]
CN 116149867A · 2023 [cited by examiner]
FR 3117641A1 · 2022 [cited by examiner]
JP 6886013B2 · 2021 [cited by examiner]
WO WO2017132774A1 · 2017 [cited by examiner]
WO 2018086569A1 · 2018 [cited by applicant]
WO WO2022169519A1 · 2022 [cited by examiner]
WO WO2022264230A1 · 2022 [cited by examiner]
WO WO2023089785A1 · 2023 [cited by examiner]
Al-Fares et al.; “Hedera: Dynamic Flow Scheduling for Data Center Networks”; Apr. 2010; available at: https://dl.acm.org/doi/10.5555/1855711.1855730. [cited by applicant]
Chen et al.; Resource abstraction and data placement for distributed hybrid memory pool; Nov. 2019; available at: https://link.springer.com/article/10.1007/s11704-020-9448-7. [cited by applicant]
Lebeane et al.; “Data Partitioning Strategies for Graph Workloads on Heterogeneous Clusters”; Nov. 2015; available at: https://ieeexplore.ieee.org/document/7832830. [cited by applicant]
Lee et al.; “MIND: In-Network Memory Management for Disaggregated Data Centers”; Oct. 2021; available at: https://arxiv.org/abs/2107.00164. [cited by applicant]
Neves et al.; “Black-box inter-application traffic monitoring for adaptive container placement”; Mar. 2020; available at: https://dl.acm.org/doi/10.1145/3341105.3374007. [cited by applicant]
Raza et al.; “A Priority Based Greedy Path Assignment Mechanism in OpenFlow Based Datacenter Networks”; Aug. 2020; available at: https://www.sciencedirect.com/science/article/abs/pii/S1084804520301272. [cited by applicant]
Schweissguth et al.; “Application-Aware Industrial Ethernet Based on an SDN-Supported TDMA Approach”; May 2006; available at: https://ieeexplore.ieee.org/document/7496496. [cited by applicant]
Vattikonda et al.; “Practical TDMA for Datacenter Ethernet”; Apr. 2012; available at: https://dl.acm.org/doi/10.1145/2168836.2168859. [cited by applicant]
Xie et al.; “Improving MapReduce Performance through Data Placement in Heterogeneous Hadoop Clusters”; Apr. 2010; available at: https://ieeexplore.ieee.org/document/5470880. [cited by applicant]
Zhong et al.; “BPF for Storage: An Exokernel-Inspired Approach”; May 2021; available at: https://arxiv.org/abs/2102.12922. [cited by applicant]
Pending U.S. Appl. No. 18/232,224, filed Aug. 9, 2023, entitled “Disaggregated Memory Management”, Marjan Radi. [cited by applicant]
Pending U.S. Appl. No. 18/232,780, filed Aug. 10, 2023, entitled “Disaggregated Memory Management for Virtual Machines”, Marjan Radi. [cited by applicant]