[go: up one dir, main page]

EP2176773B1 - Data packet processing method for a multi core processor - Google Patents

Data packet processing method for a multi core processor Download PDF

Info

Publication number
EP2176773B1
EP2176773B1 EP08808136.9A EP08808136A EP2176773B1 EP 2176773 B1 EP2176773 B1 EP 2176773B1 EP 08808136 A EP08808136 A EP 08808136A EP 2176773 B1 EP2176773 B1 EP 2176773B1
Authority
EP
European Patent Office
Prior art keywords
cpu core
network
core
cpu
data packet
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.)
Not-in-force
Application number
EP08808136.9A
Other languages
German (de)
French (fr)
Other versions
EP2176773A2 (en
EP2176773A4 (en
Inventor
Nilakantan Mahadevan
Ananth Yelthimar Shenoy
Srikanth Lakshminarayan
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of EP2176773A2 publication Critical patent/EP2176773A2/en
Publication of EP2176773A4 publication Critical patent/EP2176773A4/en
Application granted granted Critical
Publication of EP2176773B1 publication Critical patent/EP2176773B1/en
Not-in-force legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Definitions

  • Known multi core processor platforms comprise one or more central processor units (CPU) which can each have multiple processing cores which share memory and I/O (input and output) resources.
  • CPU central processor units
  • I/O input and output
  • the multiple core architecture enables simultaneous execution of processes or "threads" on more than one core.
  • Such multi core processors have been developed to increase platform processing capacity over that of single core processors.
  • SMP symmetric multiprocessing processing
  • the system memory is shared so any processor core can work on any task regardless of where the data for that task resides in system memory. It is also known for multi core systems to utilise a cache memory shared between multiple cores of the one CPU.
  • Multi core processor platforms may be used as servers in a network, such as an Ethernet local area network (LAN).
  • Server architecture can comprise a plurality of processors, however, are physically connected to the network using only one LAN interface or network interface card (NIC) connected to one processor core.
  • NIC network interface card
  • This network interface can only interrupt one processor core when packets are received from the network. The received packet is then processed through the network stack in the interrupted core until it reaches the application.
  • the network connected processor core must be used for all data received from the network.
  • the full server processing capacity may not be realised due to throughput of data between the network and the server being limited by saturation of the network connected processor core.
  • Another proposed solution to this problem is to redistribute network stack operations for inbound data to various cores by the network interface.
  • This solution requires interoperability between the LAN or network interface and the processor operating system.
  • modification of the network interface and operating system is required to implement such a solution, so this solution cannot be implemented with standard currently available network interfaces.
  • Patent application US2005/0060462 A1 discloses a method and system where, upon detecting an interrupt received from an I/O device directed to one or more processors, a policy is invoked and the interrupt is redirected to another processor for efficient interrupt handling.
  • server architecture to improve throughput between a network and a server having multi core processor architecture.
  • a method of processing a data packet being sent to a network by an application executing in one central processor unit (CPU) core of a multi core processor platform comprising the steps of:
  • a network server system comprising at least one central processor unit (CPU) having a plurality of cores and a network interface for connecting to a network, and adapted to create an interrupt in a designated CPU core for processing each data packet received from the network.
  • CPU central processor unit
  • Each data packet received from the network is associated with an application connection established in a selected CPU core selected based on processor load.
  • An interrupt thread is created on the CPU core associated with the application connection for processing the data packet.
  • a network server system comprising at least one central processor unit (CPU) having a plurality of cores and a network interface for connecting to a network, and adapted to create an interrupt in a designated CPU core for each data packet received from the network, and further adapted such that each CPU core can access the network interface for transmitting data packets to the network.
  • CPU central processor unit
  • Each data packet being sent to the network is associated with an application connection established either in the CPU core in which the application is executing or an alternative CPU core selected based on processor load. Where the application connection is established in an alternative CPU core, an interrupt thread is created on the CPU core associated with the application connection for processing the data packet.
  • Embodiments of the present invention provide a method and system for processing packets sent to and received from a network 110 in a multi core processor platform 100 to reduce limitations to throughput of data to and from the network 110 due to the network interface interrupting one CPU core for all received packets.
  • Received packets are associated with an application connection established in a selected central processor unit (CPU) core, wherein the CPU core is selected based on processor load.
  • An interrupt thread is then created on the CPU core associated with the application connection for the received packet. This enables the packet processing to be handed off to a core, other than the network interface interrupted CPU core, in which an application connection exists or is established to reduce the processing capacity being used in the network interface connected core for packet processing.
  • the system 100 includes at least one central processor unit CPU 120 122 each having a plurality of cores 130 131 132 133, optionally the cores 130 131 within one processor 120 have a shared cache 145 as well as each core 130 131 having its own respective cache 140 141.
  • SMP symmetric multiprocessing
  • the system memory 160 is shared such that any processor can access any data in system memory 160.
  • a network interface 150 is provided for forming a connection between the server 100 and the network 110.
  • the network interface 150 is connected to a predetermined CPU core 130 such that an interrupt will be created in the predetermined CPU core 130 for each data packet received from the network.
  • the predetermined CPU core 130 distributes each data packet received from the network to a selected one of the plurality of processor cores 130 131 132 133 based on processor load where the packet is processed until it reaches the destination application 170 171 172 .
  • Embodiment of the present invention alleviate this problem by relieving the CPU core 130 interrupted by the network interface 150 from packet processing as the packet is received by the network stack and by parallization of network stack operations.
  • the processing of received packets can be distributed to other CPU cores 131 132 133 in order for the network interface core 130 to be freed to receive more data from network interface 150.
  • each received packet 230 231 232 is illustrated in Figure 2 .
  • Each packet received from the network is initially handled in the network stack 210 of the network interface 150 connected CPU core 130.
  • the received packet is then associated with an application connection 240 241 242 for a destination application 220 221 222 in a selected CPU core 130 131 132.
  • An interrupt is created on the CPU core associated with the application connection for processing the received packet through the network stack 210 211 212 of the respective core 130 131 132.
  • an interrupt is generated to start the processing of the received packet through the network stack 210 of the network interface connected CPU core 130.
  • the packet is associated with an application connection in a selected CPU core and the processing of the packet handed over to the selected CPU core as soon as possible, at the bottom of the network stack, after the packet is received.
  • the process of associating a packet with an application in a selected CPU core and handing over packet processing is illustrated in the flowchart of Figure 3 .
  • the process of figure 3 is executed for data transmission, data reception, a new outgoing connection request or a new incoming connection request, however, the processing occurs at different levels in the network stack depending whether the an incoming or outgoing request is being processed. For incoming requests this process occurs at the bottom of the network stack for example in the data link layer or a layer just above, whereas for outgoing requests this process occurs at the top of the network stack for example in the session layer.
  • the incoming or outgoing request 310 is received in the relevant layer of the network stack, it is then determined whether a new application connection is required 320 for the request.
  • this known CPU is interrupted 350 and the processing handed over to this CPU core, such that a packet is associated with the connection and all further processing continues using this connection in the interrupted CPU core 360.
  • Applications connections may exist and can be handled in more than one core and in this situation the preferred CPU core for processing of data packets may not be known 330. If the preferred CPU core is not known then a CPU core is selected 340, from those where an application connection is established, based on the processor load and other preferred criteria. For example, for a send request it is preferable to establish the application connection in the CPU core being used for the application execution. If a preferred CPU core is not known, then a CPU core can be selected 340 based on processor load alone. An interrupt to associate data processing with the connection in the selected core is then created 350 and processing continues 360 in the selected core.
  • a CPU core for the connection is selected 340 based on processor load.
  • An interrupt is then created 350 to establish the connection in the selected core and associate data processing with this connection then processing continues 360 in the selected core.
  • a separate interrupt thread is created for each outgoing or incoming request for a connection.
  • a processor core per connection technique is adopted and once the received packet is associated with the connection all further work is done by the software interrupt thread that is created on the selected CPU core for that incoming or outgoing request.
  • This interrupt thread will do all further processing on the received or transmitted data until it reaches application or is transmitted to the network.
  • the interrupt thread is utilized as early as possible so as to free up the network interface connected CPU core during an incoming request.
  • selection of a processor core for a connection occurs at the bottom of the network stack, for example in the data link layer or a layer just above during the connection establishment.
  • the core is selected based on load, however preference can be given to select the core on which the destination application for the packet is running. This can provide advantages by minimising future interrupts and network stack processing handoffs, for example for data transmission and improve cache utilisation or minimise cache misses.
  • affinity of the application is set with the selected core so that application is not rescheduled on another core.
  • a further advantage of the above method is minimisation of locking and associated wasted CPU cycles waiting for a lock.
  • the network stack has to acquire a spin lock in order to synchronize access to data structures and avoid contention between processing of incoming and outgoing packets. This can result in wasted CPU cycles spinning while waiting to acquire the lock.
  • Embodiments of the present invention alleviate the requirement for network stack spin locks, and the associated overhead, by the approach of selecting a processor core per connection.
  • the selection of the CPU core and establishment of the connection for data transmission is performed at the top of the network stack.
  • IPL interrupt priority level
  • Variations in the core selection process and algorithm may be made depending on the server architecture. For example, in a hyper threading environment, a plurality of co-threads may be established for parallel processing though each CPU core, appearing as each co-thread being executed in a separate virtual CPU emulated in the CPU core. In this example, an embodiment can be implemented where the possibility of CPU contention by co-threads is minimised by keeping the co-thread CPU core free as much as possible. In this embodiment, during connection establishment a core other than the co-thread CPU core is preferentially selected.
  • a partner core can be selected to leverage the benefits of the shared cache. For example, where the cache is shared then by handing off the received packet processing, as described above, to the partner core can minimise cache updates.
  • the selection of the processor core can be implemented using an algorithm integrated with the operating system (OS) scheduler to select the processor core based on software interrupt load on all CPU cores. As the number of network connections increases, thus it is desirable to evenly distribute stack processing across all the available processors cores.
  • OS operating system
  • the operating system schedules processes but does not schedule software interrupts.
  • a software interrupt load detection algorithm is used to evenly distribute the load by identifying the CPU core with least software interrupt load which is coupled with OS scheduler and is used by the network stack to select a CPU core in which to establish a connection.
  • the established connection is maintained on one CPU core or is migrated to a different CPU as the interrupt load changes.
  • the total load is distributed among the plurality of cores enabling more data to be processed.
  • the decision of selecting a particular core for a connection depends on the least heavily loaded CPU core, which can also be identified as the CPU which spends the least amount of time in and above the software interrupt at which network stack is executed.
  • An example of a mathematical model which can be used to find the optimal CPU core for each connection is described below.
  • the time spent at and above the software interrupt priority level (IPL) in which the network stack executes for sample n is represented as ⁇ n .
  • ⁇ avg n ⁇ cpu x ⁇ ⁇ ⁇ n + ⁇ avg n - 1 ⁇ cpu x * n - 1 N
  • next kernel job will be triggered on cpu x with the lowest ⁇ avg n cpu x . This means that next kernel job, to establish an application connection, is triggered on a CPU core which has spent the least amount of time on and above the software interrupt at which network stack is executed.
  • the deviation of the average time for each CPU core from the previous value is represented as ⁇ cpu x where ⁇ avg n ⁇ cpu x - ⁇ avg n - 1 ⁇ cpu x ⁇ ⁇ 2 ⁇ ⁇ cpu x
  • the total number of processors can be divided into an equal number of partitions and for each sample one of the set can be used for the average calculation.
  • the ⁇ avg n cpu x is maintained in a sorted array representing the average interrupt load value for each CPU and is accessible for use by the network stack to determine the optimal CPU for a particular connection.
  • This example uses the results of proof of concept testing which compares the performance of an embodiment of the present invention implemented as a test model using SMP architecture as illustrated in Figure 5 with a test model implemented using conventional multi core server architecture comprising three CPU cores 430 431 432 433 as illustrated in Figure 4 .
  • all received packets 460 - 463 are processed through the network stack 410 of the LAN card 450 connected core 431, whereas sent packets (not shown) are processed through the respective network stack of the core 430 431 432 433 on which the application 420 421 422 423 is executing, requiring spin locking.
  • received packets 460 461 462 463 are sequentially processed 440 441 442 443 through the network stack 410 of the LAN connected CPU core 431 until they reach their respective destination applications 420 421 422 423 and the data is used by the application on the core in which it is scheduled.
  • received packets 560 - 563 are associated with respective connections 540 541 542 543 and processing handed off, where necessary, from network stack 511 in the network interface 550 connected core 531 to the respective network stacks 510 511 512 513 for processing until reaching the respective destination application 520 521 522 523.
  • Sent packets are associated with the application connections 540 541 542 543 and processed through the respective network stack 510 511 512 513 of the respective CPU core 530 531 532 533 and are sent via the network interface 550.
  • Table 1 provides experimental results for the distributed network stack of Figure 2 compared with that of Figure 4 .
  • Table 1 Effective distribution of software interrupts among all CPUs, Spin wait and CPU utilization Stack CPU Spinwait % % Spinwait in Transport layer Average Throughput % system utlization % Total Interrupt Event/Sec CPU 0 CPU 1 CPU 2 CPU 3 (IPL event) LAN CPU IPL events IPL event IPL events Conventional Stack 33 40 43 15 1162 36.4 1121 .1 5.3 Distrubbed network stack 23 0 46 17 1457 105 1146 106 100
  • the distributed stack architecture of figure 5 achieves concurrency in the transport layer by placing a connection in each CPU core 530 - 533.
  • the network interface connected CPU core 531 is been relieved from packet processing, as is demonstrated by the results of Table 1 by distribution of the interrupts among all CPU cores 530 - 531.
  • the results show a 10% reduction in CPU spin wait state.
  • the throughput achieved for the distributed stack architecture is at least comparable to the conventional network stack architecture and, as illustrated in Figure 6 , the distributed stack architecture 610 starts performing better than the conventional architecture 620 as the number of connections and data volume increases.
  • the CPU utilization of the distributed stack architecture is marginally higher than that of the conventional architecture due to overhead involved in creating the interrupt thread in the CPU associated with each connection.
  • the distributed stack architecture test model foreshadows more potential once concurrency is achieved in all layers.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Description

    Introduction:
  • Known multi core processor platforms comprise one or more central processor units (CPU) which can each have multiple processing cores which share memory and I/O (input and output) resources. The multiple core architecture enables simultaneous execution of processes or "threads" on more than one core. Such multi core processors have been developed to increase platform processing capacity over that of single core processors.
  • In multi core symmetric multiprocessing processing (SMP) architecture the system memory is shared so any processor core can work on any task regardless of where the data for that task resides in system memory. It is also known for multi core systems to utilise a cache memory shared between multiple cores of the one CPU.
  • Multi core processor platforms may be used as servers in a network, such as an Ethernet local area network (LAN). Server architecture can comprise a plurality of processors, however, are physically connected to the network using only one LAN interface or network interface card (NIC) connected to one processor core. This network interface can only interrupt one processor core when packets are received from the network. The received packet is then processed through the network stack in the interrupted core until it reaches the application. Thus, the network connected processor core must be used for all data received from the network. In the case of high speed TCP/IP applications or any network stack applications and high bandwidth networks, such as Gigabit and ten Gigabit Ethernet networks, the full server processing capacity may not be realised due to throughput of data between the network and the server being limited by saturation of the network connected processor core.
  • Current solutions to overcome this problem require the server to be provided with further network interfaces connected to further processors in order to distribute the network interface processing load across multiple processors. This solution can improve throughput between the server and the network, but is inefficient as it requires additional network interface cards. This solution also introduces an additional overhead for coordination of the multiple network interfaces.
  • Another proposed solution to this problem is to redistribute network stack operations for inbound data to various cores by the network interface. This solution requires interoperability between the LAN or network interface and the processor operating system. Thus, modification of the network interface and operating system is required to implement such a solution, so this solution cannot be implemented with standard currently available network interfaces.
  • Patent application US2005/0060462 A1 (Eiji Ota ) discloses a method and system where, upon detecting an interrupt received from an I/O device directed to one or more processors, a policy is invoked and the interrupt is redirected to another processor for efficient interrupt handling.
  • There is a need for server architecture to improve throughput between a network and a server having multi core processor architecture.
  • Brief description of the drawings:
  • Embodiments of the invention will now be described by way of example only with reference to the accompanying drawings in which:
  • Figure 1
    illustrates an example of a multi core processor architecture;
    Figure 2
    illustrates an example of processing packets through the network stack of a multi core processor according to an embodiment of the present invention;
    Figure 3
    is a flow chart illustrating a kernel process of selecting a processor core and handing over packet processing to the selected core;
    Figure 4
    illustrates a conventional multi core processor network stack architecture test model used in comparative test Example 1;
    Figure 5
    illustrates a multi core processor network stack architecture in accordance with an embodiment of the present invention used in comparative test Example 1; and
    Figure 6
    is a graph illustrating the results of comparative test Example 1.
    Detailed description:
  • According to an embodiment there is provided a method of processing a data packet received from a network in a multi core processor platform comprising the steps of:
    • receiving an interrupt in a designated central processor unit (CPU) core from a network interface for processing a data packet received from the network;
    • associating the data packet with an application connection established in a central processor unit (CPU) core selected based on processor load; and
    • creating an interrupt thread on the CPU core associated with the application connection for processing the received data packet.
  • According to an embodiment there is provided a method of processing a data packet being sent to a network by an application executing in one central processor unit (CPU) core of a multi core processor platform, the method comprising the steps of:
    • determining whether to perform outgoing processing of the data packet using the CPU core executing the application or using an alternative central processor unit (CPU) core;
      and where it is determined to use an alternative CPU core:
    • selecting an alternative CPU core for outgoing packet processing based on processor load;
    • establishing a application connection in the selected alternative CPU core;
    • associating the data packet with the application connection; and
    • creating an interrupt thread on selected alternative CPU core for processing the data packet to the network interface for transmission over the network.
  • According to an embodiment there is provided a network server system comprising at least one central processor unit (CPU) having a plurality of cores and a network interface for connecting to a network, and adapted to create an interrupt in a designated CPU core for processing each data packet received from the network. Each data packet received from the network is associated with an application connection established in a selected CPU core selected based on processor load. An interrupt thread is created on the CPU core associated with the application connection for processing the data packet.
  • According to an embodiment there is provided a network server system comprising at least one central processor unit (CPU) having a plurality of cores and a network interface for connecting to a network, and adapted to create an interrupt in a designated CPU core for each data packet received from the network, and further adapted such that each CPU core can access the network interface for transmitting data packets to the network. Each data packet being sent to the network is associated with an application connection established either in the CPU core in which the application is executing or an alternative CPU core selected based on processor load. Where the application connection is established in an alternative CPU core, an interrupt thread is created on the CPU core associated with the application connection for processing the data packet.
  • Embodiments of the present invention provide a method and system for processing packets sent to and received from a network 110 in a multi core processor platform 100 to reduce limitations to throughput of data to and from the network 110 due to the network interface interrupting one CPU core for all received packets. Received packets are associated with an application connection established in a selected central processor unit (CPU) core, wherein the CPU core is selected based on processor load. An interrupt thread is then created on the CPU core associated with the application connection for the received packet. This enables the packet processing to be handed off to a core, other than the network interface interrupted CPU core, in which an application connection exists or is established to reduce the processing capacity being used in the network interface connected core for packet processing.
  • An example of a network server system for implementing this method is illustrated in Figure 1. The system 100 includes at least one central processor unit CPU 120 122 each having a plurality of cores 130 131 132 133, optionally the cores 130 131 within one processor 120 have a shared cache 145 as well as each core 130 131 having its own respective cache 140 141. For symmetric multiprocessing (SMP) the system memory 160 is shared such that any processor can access any data in system memory 160. A network interface 150 is provided for forming a connection between the server 100 and the network 110. The network interface 150 is connected to a predetermined CPU core 130 such that an interrupt will be created in the predetermined CPU core 130 for each data packet received from the network. The predetermined CPU core 130 distributes each data packet received from the network to a selected one of the plurality of processor cores 130 131 132 133 based on processor load where the packet is processed until it reaches the destination application 170 171 172 .
  • Advances in high speed networks and interfaces has lead to a situation where the network interface driver is capable of delivering packets to a processor faster than the processor has the capacity to process the packets through the network stack and deliver the data to the destination applications 170 171 172 . This is a problem in SMP network architecture where the network interface 150 is programmed to interrupt only one processor core 130 on receipt of a packet and all further processing of that packet occurs on the same core 130 until the data reaches the application. In this situation the CPU core 130 which receives the interrupt from the network interface 150 acts as a bottleneck, limiting the throughput of data to the applications.
  • Embodiment of the present invention alleviate this problem by relieving the CPU core 130 interrupted by the network interface 150 from packet processing as the packet is received by the network stack and by parallization of network stack operations. Thus the processing of received packets can be distributed to other CPU cores 131 132 133 in order for the network interface core 130 to be freed to receive more data from network interface 150.
  • The process for distributing each received packet 230 231 232 is illustrated in Figure 2. Each packet received from the network is initially handled in the network stack 210 of the network interface 150 connected CPU core 130. The received packet is then associated with an application connection 240 241 242 for a destination application 220 221 222 in a selected CPU core 130 131 132. An interrupt is created on the CPU core associated with the application connection for processing the received packet through the network stack 210 211 212 of the respective core 130 131 132.
  • When each packet is received from the network 110 by the network interface 150, an interrupt is generated to start the processing of the received packet through the network stack 210 of the network interface connected CPU core 130. The packet is associated with an application connection in a selected CPU core and the processing of the packet handed over to the selected CPU core as soon as possible, at the bottom of the network stack, after the packet is received.
  • The process of associating a packet with an application in a selected CPU core and handing over packet processing is illustrated in the flowchart of Figure 3. For example, the process of figure 3 is executed for data transmission, data reception, a new outgoing connection request or a new incoming connection request, however, the processing occurs at different levels in the network stack depending whether the an incoming or outgoing request is being processed. For incoming requests this process occurs at the bottom of the network stack for example in the data link layer or a layer just above, whereas for outgoing requests this process occurs at the top of the network stack for example in the session layer. The incoming or outgoing request 310 is received in the relevant layer of the network stack, it is then determined whether a new application connection is required 320 for the request.
  • Where a connection already exists, and the CPU core for the connection is known 330 then this known CPU is interrupted 350 and the processing handed over to this CPU core, such that a packet is associated with the connection and all further processing continues using this connection in the interrupted CPU core 360.
  • Applications connections may exist and can be handled in more than one core and in this situation the preferred CPU core for processing of data packets may not be known 330. If the preferred CPU core is not known then a CPU core is selected 340, from those where an application connection is established, based on the processor load and other preferred criteria. For example, for a send request it is preferable to establish the application connection in the CPU core being used for the application execution. If a preferred CPU core is not known, then a CPU core can be selected 340 based on processor load alone. An interrupt to associate data processing with the connection in the selected core is then created 350 and processing continues 360 in the selected core.
  • Where no connection is already established 320, for example for an outgoing request for a new connection, a CPU core for the connection is selected 340 based on processor load. An interrupt is then created 350 to establish the connection in the selected core and associate data processing with this connection then processing continues 360 in the selected core.
  • Once the selected core has been interrupted and processing handed over to this core in accordance with the established connection 360, then the processing of the incoming or outgoing request is completed 370 for the original core, which frees the original core to continue processing the next operation.
  • In a preferred embodiment a separate interrupt thread is created for each outgoing or incoming request for a connection. In this embodiment a processor core per connection technique is adopted and once the received packet is associated with the connection all further work is done by the software interrupt thread that is created on the selected CPU core for that incoming or outgoing request. This interrupt thread will do all further processing on the received or transmitted data until it reaches application or is transmitted to the network. The interrupt thread is utilized as early as possible so as to free up the network interface connected CPU core during an incoming request.
  • In the case of received packets, selection of a processor core for a connection occurs at the bottom of the network stack, for example in the data link layer or a layer just above during the connection establishment. The core is selected based on load, however preference can be given to select the core on which the destination application for the packet is running. This can provide advantages by minimising future interrupts and network stack processing handoffs, for example for data transmission and improve cache utilisation or minimise cache misses. Further, in a preferred embodiment affinity of the application is set with the selected core so that application is not rescheduled on another core.
  • A further advantage of the above method is minimisation of locking and associated wasted CPU cycles waiting for a lock. Where data is transmitted over the network by the application in conventional server architecture, the network stack has to acquire a spin lock in order to synchronize access to data structures and avoid contention between processing of incoming and outgoing packets. This can result in wasted CPU cycles spinning while waiting to acquire the lock.
  • Embodiments of the present invention alleviate the requirement for network stack spin locks, and the associated overhead, by the approach of selecting a processor core per connection. The selection of the CPU core and establishment of the connection for data transmission is performed at the top of the network stack. As is illustrated in Figure 2, once the processor core for a connection is identified, the packet processing for the outbound and inbound data for that connection occurs at the same interrupt priority level (IPL) on that core. This provides a natural synchronization for each connection through the network stack of the processor core. Thus relieving the network stack from locking which avoids wasting CPU cycles due to CPU spinning.
  • Variations in the core selection process and algorithm may be made depending on the server architecture. For example, in a hyper threading environment, a plurality of co-threads may be established for parallel processing though each CPU core, appearing as each co-thread being executed in a separate virtual CPU emulated in the CPU core. In this example, an embodiment can be implemented where the possibility of CPU contention by co-threads is minimised by keeping the co-thread CPU core free as much as possible. In this embodiment, during connection establishment a core other than the co-thread CPU core is preferentially selected.
  • Alternatively, in an embodiment suitable for architectures having a cache shared between partner cores, a partner core can be selected to leverage the benefits of the shared cache. For example, where the cache is shared then by handing off the received packet processing, as described above, to the partner core can minimise cache updates.
  • The selection of the processor core can be implemented using an algorithm integrated with the operating system (OS) scheduler to select the processor core based on software interrupt load on all CPU cores. As the number of network connections increases, thus it is desirable to evenly distribute stack processing across all the available processors cores.
  • The operating system schedules processes but does not schedule software interrupts. In an embodiment a software interrupt load detection algorithm is used to evenly distribute the load by identifying the CPU core with least software interrupt load which is coupled with OS scheduler and is used by the network stack to select a CPU core in which to establish a connection. The established connection is maintained on one CPU core or is migrated to a different CPU as the interrupt load changes. Thus, the total load is distributed among the plurality of cores enabling more data to be processed.
  • The decision of selecting a particular core for a connection depends on the least heavily loaded CPU core, which can also be identified as the CPU which spends the least amount of time in and above the software interrupt at which network stack is executed. An example of a mathematical model which can be used to find the optimal CPU core for each connection is described below.
  • The time spent at and above the software interrupt priority level (IPL) in which the network stack executes for sample n is represented as ∂n.
  • Δ∂ n represents the total time spent by the CPU core at and above software IPL during the time interval between n and n-1. Δ n = n - n - 1
    Figure imgb0001
  • The average of the Δ∂ over a period of time is represented as λ i.e. it is the average time the CPU core has spent in the required software IPL and above over a period of time. λavg n cpu x = Δ n + λavg n - 1 cpu x * n - 1 N
    Figure imgb0002
  • The next kernel job will be triggered on cpux with the lowest λavgncpux . This means that next kernel job, to establish an application connection, is triggered on a CPU core which has spent the least amount of time on and above the software interrupt at which network stack is executed.
  • The deviation of the average time for each CPU core from the previous value is represented as Γcpux where λavg n cpu x - λavg n - 1 cpu x 2 < Γ cpu x
    Figure imgb0003
  • This represents the deviation from the previous calculation. In order to minimize the overhead an embodiment uses deviation as a measure to decide whether the CPUs average is recalculated during the next sampling period. If the previous difference in λ is less than a threshold r, then the average calculation for that CPU is not done for twice the previous time interval σ cpux = 2 * σ cpux
    Figure imgb0004

    where σ cpux is the sampling frequency for CPUx.
  • Further, the total number of processors can be divided into an equal number of partitions and for each sample one of the set can be used for the average calculation. The λavgncpux is maintained in a sorted array representing the average interrupt load value for each CPU and is accessible for use by the network stack to determine the optimal CPU for a particular connection.
  • Example 1:
  • This example uses the results of proof of concept testing which compares the performance of an embodiment of the present invention implemented as a test model using SMP architecture as illustrated in Figure 5 with a test model implemented using conventional multi core server architecture comprising three CPU cores 430 431 432 433 as illustrated in Figure 4.
  • In the conventional SMP server architecture of Figure 4, all received packets 460 - 463 are processed through the network stack 410 of the LAN card 450 connected core 431, whereas sent packets (not shown) are processed through the respective network stack of the core 430 431 432 433 on which the application 420 421 422 423 is executing, requiring spin locking. In the server of Figure 4 received packets 460 461 462 463 are sequentially processed 440 441 442 443 through the network stack 410 of the LAN connected CPU core 431 until they reach their respective destination applications 420 421 422 423 and the data is used by the application on the core in which it is scheduled.
  • In the proof of concept distributed stack architecture of Figure 5, received packets 560 - 563 are associated with respective connections 540 541 542 543 and processing handed off, where necessary, from network stack 511 in the network interface 550 connected core 531 to the respective network stacks 510 511 512 513 for processing until reaching the respective destination application 520 521 522 523. Sent packets are associated with the application connections 540 541 542 543 and processed through the respective network stack 510 511 512 513 of the respective CPU core 530 531 532 533 and are sent via the network interface 550.
  • Table 1 provides experimental results for the distributed network stack of Figure 2 compared with that of Figure 4. Table 1: Effective distribution of software interrupts among all CPUs, Spin wait and CPU utilization
    Stack CPU Spinwait % % Spinwait in Transport layer Average Throughput % system utlization % Total Interrupt Event/Sec CPU 0 CPU 1 CPU 2 CPU 3
    (IPL event) LAN CPU IPL events
    IPL event IPL events
    Conventional Stack 33 40 43 15 1162 36.4 1121 .1 5.3
    Distrbuted network stack 23 0 46 17 1457 105 1146 106 100
  • As can be appreciated by a person skilled in the relevant art the distributed stack architecture of figure 5 achieves concurrency in the transport layer by placing a connection in each CPU core 530 - 533. The network interface connected CPU core 531 is been relieved from packet processing, as is demonstrated by the results of Table 1 by distribution of the interrupts among all CPU cores 530 - 531. The results show a 10% reduction in CPU spin wait state.
  • The throughput achieved for the distributed stack architecture is at least comparable to the conventional network stack architecture and, as illustrated in Figure 6, the distributed stack architecture 610 starts performing better than the conventional architecture 620 as the number of connections and data volume increases.
  • The CPU utilization of the distributed stack architecture is marginally higher than that of the conventional architecture due to overhead involved in creating the interrupt thread in the CPU associated with each connection. The distributed stack architecture test model foreshadows more potential once concurrency is achieved in all layers.

Claims (13)

  1. A method of processing a data packet received from a network (110) in a multi core processor platform (100), the multi core processor platform (100) comprising a network interface (150) connected to a first central processor unit (CPU) core (130), the method comprising the steps of:
    receiving an interrupt in the first CPU core (130) from the network interface for processing a data packet (230) received from the network (110);
    selecting a second central processor unit (CPU) core (131, 132) based on processor load and establishing an application connection in said second CPU core (131, 132), the selecting and establishing steps being performed at a data link layer level of a network stack (210) of the first CPU core (130);
    associating the data packet (230) with the application connection established in said second CPU core (131, 132);
    creating a separate interrupt thread on said second CPU core (131, 132) associated with the application connection for processing the received data packet (230);
    handing off handling of the data packet to a network stack (211, 212) of said second CPU core (131, 132); and
    handling the data packet at levels above the data link layer level in the network stack (211, 212) of said second CPU core (131, 132).
  2. A method of processing a data packet being sent to a network by an application executing in one central processor unit (CPU) core of a multi core processor platform, the multi core processor platform comprising a network interface accessible by each CPU core for transmitting data packets to the network, the method comprising the steps of:
    determining whether to perform processing of the outgoing data packet using the CPU core executing the application or using an alternative central processor unit (CPU) core;
    and where it is determined to use an alternative CPU core:
    selecting (340), at a session layer level of a network stack of the CPU core executing the application, an alternative CPU core for outgoing packet processing based on processor load;
    establishing, at said session layer level, an application connection in said alternative CPU core;
    associating the data packet with the application connection;
    creating (350) an interrupt thread on the selected alternative CPU core;
    handing off (350) handling of the data packet to a network stack of said alternative CPU core; and
    handling (360)the data packet at levels below the session layer level in the network stack of said alternative CPU core so as to process the data packet to the network interface for transmission over the network.
  3. A method as claimed in claim 1 or claim 2 wherein the CPU core is selected based on processor interrupt load for each CPU core.
  4. A method as claimed in claim 3 wherein the CPU core is selected giving preference to a CPU core sharing cache memory with a CPU core performing an operation related to the received packet.
  5. A method as claimed in claim 3 wherein the multi core processor is adapted to enable hyper-threading wherein each CPU core emulates two virtual CPUs enabling a co-thread to be executed in each virtual CPU of the CPU core and wherein a virtual CPU for establishing the application connection is selected in a CPU core selected giving preference to a non co-threaded CPU core.
  6. A method as claimed in claim 3 wherein the processor interrupt load is monitored by an operating system scheduling function.
  7. A method as claimed in claim 2 further comprising the step of associating affinity for the application with the selected CPU core.
  8. A network server system (100, 200) comprising:
    at least one central processor unit (CPU - 120) having a plurality of cores (130, 131); and
    a network interface (150) for connecting to a network (110), and adapted to create an interrupt in a first CPU core (130) connected to the network interface (150) for processing each data packet received from the network (110),
    wherein:
    on receipt of a data packet from the network (110) the network server system (100, 200) is adapted to select a second CPU core (131) and establish an application connection at data link layer level of a network stack (210) of the first CPU core (130);
    each data packet received from the network is associated with an application connection established in a selected CPU core;
    a CPU core is selected based on processor load;
    a separate interrupt thread is created on a selected CPU core associated with the application connection for processing the data packet; and
    the first CPU core (130) hands off handling of a received data packet to a network stack (211) of a selected CPU core (131), further handling of the received data packet at levels above the data link layer being performed in the network stack (211) of the selected CPU core (131).
  9. A network server system (100, 200) comprising:
    at least one central processor unit (CPU -120) having a plurality of cores (130, 131); and
    a network interface (150) for forming a connection to a network (110), and adapted to create an interrupt in a CPU core (130, 131) connected to the network interface (150) for processing each data packet received from the network (110), and further adapted such that each CPU core can access the network interface (150) for transmitting data packets to the network (110),
    wherein:
    an execution CPU core executes an application;
    on transmission of a data packet to the network (110) from the application, the network server system (100, 200) is adapted to select an alternative CPU core (131) to the execution CPU core and establish an application connection at session layer level of a network stack (210) of the execution CPU core;
    each data packet being sent to the network is associated with the application connection;
    an alternative CPU core is selected based on processor load; and
    an interrupt thread is created on an alternative CPU core associated with the application connection for processing the data packet; and
    the execution CPU core hands off handling of a data packet to be transmitted to a network stack of an alternative CPU core, further handling of said data packet at levels below the session layer being performed in the network stack of the alternative CPU core so as to process the data packet to the network interface (150) for transmission over the network (110).
  10. A network server system (100, 200) as claimed in claim 8 or claim 9 wherein the alternative CPU core is selected based on processor interrupt load for each CPU core.
  11. A network server system (100, 200) as claimed in claim 10 wherein the alternative CPU core is selected giving preference to a CPU core sharing cache memory with a CPU core performing an operation related to the received packet.
  12. A network server system (100, 200) as claimed in claim 10 wherein the processor interrupt load for each CPU core is monitored by a operating system scheduler function.
  13. A network server system (100, 200) as claimed in claim 10 wherein the multi core processor is adapted to enable hyper-threading wherein each CPU core emulates two virtual CPUs enabling a co-thread to be executed in each virtual CPU of the CPU core and wherein a virtual CPU for establishing the application connection is selected in a CPU core selected giving preference to a non co-threaded CPU core.
EP08808136.9A 2007-07-09 2008-07-07 Data packet processing method for a multi core processor Not-in-force EP2176773B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN1477CH2007 2007-07-09
PCT/IN2008/000431 WO2009008007A2 (en) 2007-07-09 2008-07-07 Data packet processing method for a multi core processor

Publications (3)

Publication Number Publication Date
EP2176773A2 EP2176773A2 (en) 2010-04-21
EP2176773A4 EP2176773A4 (en) 2011-12-21
EP2176773B1 true EP2176773B1 (en) 2015-09-02

Family

ID=40229225

Family Applications (1)

Application Number Title Priority Date Filing Date
EP08808136.9A Not-in-force EP2176773B1 (en) 2007-07-09 2008-07-07 Data packet processing method for a multi core processor

Country Status (4)

Country Link
US (1) US8799547B2 (en)
EP (1) EP2176773B1 (en)
CN (1) CN101689158B (en)
WO (1) WO2009008007A2 (en)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101996103B (en) * 2009-08-20 2013-03-20 三星电子(中国)研发中心 Parallel application optimizing method for multinuclear cloud computing platform
US8230054B2 (en) * 2009-12-23 2012-07-24 Citrix Systems, Inc. Systems and methods for managing dynamic proximity in multi-core GSLB appliance
WO2013095502A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Methods, systems, and computer program products for processing a packet
CN102555550B (en) * 2011-12-30 2014-04-16 浙江大学 High-speed image data rotation processing system and method for printing machine based on multi-core processor
US9800503B2 (en) * 2012-12-03 2017-10-24 Aruba Networks, Inc. Control plane protection for various tables using storm prevention entries
US8619800B1 (en) 2012-12-20 2013-12-31 Unbound Networks Parallel processing using multi-core processor
US9588923B2 (en) 2014-01-24 2017-03-07 Applied Micro Circuits Corporation Flow pinning in a server on a chip
US10164905B2 (en) * 2014-02-06 2018-12-25 Mellanox Technologies, Ltd. Efficient management of network traffic in a multi-CPU server
CN103853692B (en) * 2014-03-12 2017-03-15 四川九洲空管科技有限责任公司 A kind of multiprocessor data means of communication based on interruption judgment mechanism
CN104197299A (en) * 2014-08-21 2014-12-10 浙江生辉照明有限公司 Illuminating device and voice broadcasting system and method based on device
US10200292B2 (en) 2014-08-25 2019-02-05 Intel Corporation Technologies for aligning network flows to processing resources
US10091063B2 (en) * 2014-12-27 2018-10-02 Intel Corporation Technologies for directed power and performance management
US9880953B2 (en) * 2015-01-05 2018-01-30 Tuxera Corporation Systems and methods for network I/O based interrupt steering
CN105207946B (en) * 2015-08-27 2018-05-01 国家计算机网络与信息安全管理中心 A kind of network packet load balancing and pre-parsed method
CN107172650B (en) * 2016-03-08 2022-03-25 中兴通讯股份有限公司 A simulation method and system for a large-scale complex wireless communication system
US10416897B2 (en) * 2017-03-27 2019-09-17 SK Hynix Inc. Memory system with latency distribution optimization and an operating method thereof
WO2018183542A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
US10725825B2 (en) 2017-07-10 2020-07-28 Fungible, Inc. Data processing unit for stream processing
WO2019014265A1 (en) * 2017-07-10 2019-01-17 Fungible, Inc. Data processing unit for compute nodes and storage nodes
KR102452205B1 (en) 2017-11-20 2022-10-06 삼성전자주식회사 Multi core control system
KR102844006B1 (en) 2019-03-22 2025-08-11 삼성전자 주식회사 An electronic device comprising multi-cores and method for processing packet in the same
CN110597639B (en) * 2019-09-23 2021-07-30 腾讯科技(深圳)有限公司 CPU distribution control method, device, server and storage medium
CN111538636B (en) * 2020-04-24 2021-11-19 深圳华锐金融技术股份有限公司 Computer equipment determination method and device and storage medium
CN113037649B (en) * 2021-05-24 2021-09-07 北京金山云网络技术有限公司 Method and device for transmitting and receiving network interrupt data packet, electronic equipment and storage medium
CN113259274B (en) * 2021-06-11 2022-05-31 深圳市网是科技有限公司 Method for processing network message out-of-order and load balancing in multi-core mode and storage medium
WO2023087306A1 (en) * 2021-11-22 2023-05-25 华为技术有限公司 Method and device for processing data packets

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3008896B2 (en) * 1997-06-16 2000-02-14 日本電気株式会社 Interrupt Load Balancing System for Shared Bus Multiprocessor System
US6813665B2 (en) * 2001-09-21 2004-11-02 Intel Corporation Interrupt method, system and medium
US6804632B2 (en) * 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US7444639B2 (en) * 2001-12-20 2008-10-28 Texas Insturments Incorporated Load balanced interrupt handling in an embedded symmetric multiprocessor system
US7028302B2 (en) * 2002-04-24 2006-04-11 Hewlett-Packard Development Company, L.P. System and method for automatically tuning a multiprocessor computer system
US20050033889A1 (en) * 2002-10-08 2005-02-10 Hass David T. Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US7117285B2 (en) * 2003-08-29 2006-10-03 Sun Microsystems, Inc. Method and system for efficiently directing interrupts
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US20070180310A1 (en) * 2006-02-02 2007-08-02 Texas Instruments, Inc. Multi-core architecture with hardware messaging
US8190864B1 (en) * 2007-10-25 2012-05-29 Oracle America, Inc. APIC implementation for a highly-threaded x86 processor
US8549341B2 (en) * 2008-08-29 2013-10-01 Netlogic Microsystems, Inc. System and method for reducing latency associated with timestamps in a multi-core, multi-threaded processor

Also Published As

Publication number Publication date
WO2009008007A2 (en) 2009-01-15
CN101689158A (en) 2010-03-31
US20100241831A1 (en) 2010-09-23
EP2176773A2 (en) 2010-04-21
EP2176773A4 (en) 2011-12-21
US8799547B2 (en) 2014-08-05
CN101689158B (en) 2012-06-06
WO2009008007A3 (en) 2009-03-05

Similar Documents

Publication Publication Date Title
EP2176773B1 (en) Data packet processing method for a multi core processor
US6895585B2 (en) Method of mixed workload high performance scheduling
US8875151B2 (en) Load balancing method and apparatus in symmetric multi-processor system
US7694009B2 (en) System and method for balancing TCP/IP/workload of multi-processor system based on hash buckets
US7076781B2 (en) Resource reservation for large-scale job scheduling
US20040024873A1 (en) Load balancing the servicing of received packets
CN102594891A (en) Method and system for processing remote procedure call request
Caccamo et al. Aperiodic servers with resource constraints
US11438271B2 (en) Method, electronic device and computer program product of load balancing
CN102571568B (en) Task processing method and device
CN111490963A (en) Data processing method, system, equipment and storage medium based on QUIC protocol stack
US6141677A (en) Method and system for assigning threads to active sessions
Li et al. Co-Scheduler: A coflow-aware data-parallel job scheduler in hybrid electrical/optical datacenter networks
US9128771B1 (en) System, method, and computer program product to distribute workload
CN116048756A (en) Queue scheduling method and device and related equipment
CN116821041A (en) Efficient queue access for user space packet processing
CN105337888B (en) Load-balancing method, device and virtual switch based on multicore forwarding
US20230359490A1 (en) Device, system and method for scheduling job requests
CN104714783B (en) task processing method and device
CN118573638A (en) Transmission queuing scheduling method, system and storage medium for server communication system
US20040064580A1 (en) Thread efficiency for a multi-threaded network processor
CN104506452B (en) A kind of message processing method and device
US12045671B2 (en) Time-division multiplexing method and circuit for arbitrating concurrent access to a computer resource based on a processing slack associated with a critical program
CN115168028A (en) Task processing method and device
RU2191425C2 (en) Concurrent data processing optimization method for minimizing processing time

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20100108

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MT NL NO PL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL BA MK RS

A4 Supplementary search report drawn up and despatched

Effective date: 20111122

RIC1 Information provided on ipc code assigned before grant

Ipc: G06F 9/48 20060101ALI20111116BHEP

Ipc: G06F 9/50 20060101ALI20111116BHEP

Ipc: G06F 13/24 20060101AFI20111116BHEP

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20130508

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

INTG Intention to grant announced

Effective date: 20150317

GRAS Grant fee paid

Free format text: ORIGINAL CODE: EPIDOSNIGR3

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

AK Designated contracting states

Kind code of ref document: B1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MT NL NO PL PT RO SE SI SK TR

REG Reference to a national code

Ref country code: GB

Ref legal event code: FG4D

REG Reference to a national code

Ref country code: AT

Ref legal event code: REF

Ref document number: 747025

Country of ref document: AT

Kind code of ref document: T

Effective date: 20150915

Ref country code: CH

Ref legal event code: EP

REG Reference to a national code

Ref country code: IE

Ref legal event code: FG4D

REG Reference to a national code

Ref country code: DE

Ref legal event code: R096

Ref document number: 602008039979

Country of ref document: DE

REG Reference to a national code

Ref country code: AT

Ref legal event code: MK05

Ref document number: 747025

Country of ref document: AT

Kind code of ref document: T

Effective date: 20150902

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: GR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20151203

Ref country code: LV

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: FI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: LT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: NO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20151202

REG Reference to a national code

Ref country code: LT

Ref legal event code: MG4D

Ref country code: NL

Ref legal event code: MP

Effective date: 20150902

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: AT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: SE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: PL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: ES

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IS

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20160102

Ref country code: CZ

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: NL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: IT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: SK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: EE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: RO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: PT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20160104

REG Reference to a national code

Ref country code: DE

Ref legal event code: R097

Ref document number: 602008039979

Country of ref document: DE

REG Reference to a national code

Ref country code: DE

Ref legal event code: R082

Ref document number: 602008039979

Country of ref document: DE

Representative=s name: SCHOPPE, ZIMMERMANN, STOECKELER, ZINKLER, SCHE, DE

Ref country code: DE

Ref legal event code: R081

Ref document number: 602008039979

Country of ref document: DE

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOU, US

Free format text: FORMER OWNER: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., HOUSTON, TEX., US

PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

REG Reference to a national code

Ref country code: GB

Ref legal event code: 732E

Free format text: REGISTERED BETWEEN 20160701 AND 20160706

26N No opposition filed

Effective date: 20160603

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: SI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: DK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

REG Reference to a national code

Ref country code: FR

Ref legal event code: TP

Owner name: HEWLETT PACKARD ENTREPRISE DEVELOPMENT LP, US

Effective date: 20160819

REG Reference to a national code

Ref country code: FR

Ref legal event code: PLFP

Year of fee payment: 9

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: BE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

REG Reference to a national code

Ref country code: CH

Ref legal event code: PL

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: MC

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: CH

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20160731

Ref country code: LI

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20160731

REG Reference to a national code

Ref country code: IE

Ref legal event code: MM4A

REG Reference to a national code

Ref country code: FR

Ref legal event code: PLFP

Year of fee payment: 10

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20160707

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: LU

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20160707

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: HU

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO

Effective date: 20080707

Ref country code: CY

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

REG Reference to a national code

Ref country code: FR

Ref legal event code: PLFP

Year of fee payment: 11

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: TR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: HR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

Ref country code: MT

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20160731

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: BG

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150902

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: GB

Payment date: 20230724

Year of fee payment: 16

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: FR

Payment date: 20230724

Year of fee payment: 16

Ref country code: DE

Payment date: 20230725

Year of fee payment: 16

REG Reference to a national code

Ref country code: DE

Ref legal event code: R119

Ref document number: 602008039979

Country of ref document: DE

GBPC Gb: european patent ceased through non-payment of renewal fee

Effective date: 20240707

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: DE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20250201

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: FR

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20240731

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: GB

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20240707