Patent classifications
G06F11/3632
Method and technique to find timing window problems
Threads of a multithreaded application may be scheduled to different cores and executed in various orders and at various frequencies. Controlling how the threads are scheduled and clock rates of processor cores enables testing multiple possible execution scenarios, which may force previously unknown timing window problems to occur. These timing window problems may then be detected.
Method Of Debugging A Processor That Executes Vertices Of an Application, Each Vertex Being Assigned To a Programming Thread of the Processor
A method for debugging a processor which is executing vertices of a software application is described. Each vertex is assigned to a programming thread of the processor. The processor has debug hardware for raising exceptions in certain break conditions. The method comprises inspecting a vertex identifier, comparing the vertex identifier and raising an instruction exception event for the programming thread if the vertex identifier assigned to the thread matches the vertex break identifier in the debug hardware. Exceptions are raised based on identified vertices, rather than just individual instructions or instruction addresses.
Diffing of replayable execution traces
Diffing subject and comparison traces. A first call tree representing function calls made by a first executable entity is created based on subject trace, and a second call tree representing function calls made by a second executable entity is created based on a comparison trace. A differencing tree is created from the call trees, with differencing tree nodes indicate a differencing status between the first and second call trees. A differencing cost is assigned to each differencing tree node, based at least on the nodes' differencing status. A differencing tree node is identified based on following nodes that most contribute to differences between the first and second call trees, and it is used to provide an indicia of a difference between the first and second function calls.
SYMBOL MAPPING SYSTEM FOR CONCURRENT KERNEL AND USER SPACE DEBUGGING OF A VIRTUAL MACHINE
A method is provided comprising: monitoring, by a symbol context manager, context switch events that are generated in a virtual machine, and updating a symbol space map based on the context switch events; receiving, by the symbol context manager, a request to provide a symbol space of the virtual machine, the request being generated by a symbol database interface in response to a symbol query that is received at the symbol database interface from a debugger that is debugging the virtual machine, the symbol query being associated with a symbol that is part of the symbol space; and providing, by the symbol context manager, an indication of the symbol space of the virtual machine, the indication of the symbol space being provided based on the symbol space map.
Diffing of replayable execution traces
Diffing subject and comparison traces. The subject and comparison traces can be matched based on identifying similar work being performed by their represented entities. The diffing includes identifying first function calls from the subject trace and identifying second function calls the comparison trace. First and second call trees are created from these function calls; parent-to-child node relationships in the call trees represent caller-to-callee function relationships. A differencing tree is created from the call trees; differencing tree nodes indicate a differencing status between the first and second call trees, and a differencing cost based on the nodes' differencing status pus an aggregation of the node's descendants' differencing costs. A differencing tree node is identified based on following nodes that most contribute to differences between the first and second call trees, and it is used to provide an indicia of a difference between the first and second function calls.
Maintaining two-site configuration for workload availability between sites at unlimited distances for products and services
A system for maintaining a two-site configuration for continuous availability over long distances may include a first computing site configured to execute a first instance associated with a priority workload, the first instance being designated as an active instance; a second computing site configured to execute a second instance of the priority workload, the second instance being designated as a standby instance; a software replication module configured to replicate a unit of work data associated with the priority workload from a first data object associated with the active instance to a second data object associated with the standby instance, and a hardware replication module configured to replicate an image from a first storage volume to a copy on a second storage volume, wherein the first storage volume is associated with the first computing site, and the second storage volume is associated with a third computing site.
MULTICORE MEMORY DATA RECORDER FOR KERNEL MODULE
A processing device includes a processing core, coupled to a memory, to execute a task including a code segment identified as being monitored and a kernel recorder, coupled to the processing core via a core interface. The kernel recorder includes a first filter circuit to responsive to determining that the task being executed enters the code segment, set the kernel recorder to a first mode under which the kernel recorder is to record, in a first record, a plurality of memory addresses accessed by the code segment, and responsive to determining that the execution of the task exits the code segment, set the kernel recorder to a second mode under which the kernel recorder is to detect a write operation to a memory address recorded in the first record and record the memory address in a second record.
METHOD AND SYSTEM FOR ENABLING COMMUNICATION BETWEEN MULTIPLE VIRTUAL PLATFORMS
A computer system configured to enable communication between two or more virtual platforms is disclosed. The computer system comprises a physical processor configured to run the two or more virtual platforms. The computer system further comprises a memory. The memory comprises one or more separate memory portions allocated to each of the two or more virtual platforms, wherein within at least one memory portion allocated to one of the virtual platform a predefined range of addresses is configured as a shared device memory, the shared device memory being accessible by all the virtual platforms. Firmware running on a first virtual platform is configured to transfer a data packet from the first virtual platform to one or more further virtual platforms via the shared device memory.
Checkpointing
A system comprising: a first subsystem comprising at least one first processor, and a second subsystem comprising one or more second processors. A first program is arranged to run on the at least one first processor, the first program being configured to send data from the first subsystem to the second subsystem. A second program is arranged to run on the one more second processors, the second program being configured to operate on the data content from the first subsystem. The first program is configured to set a checkpoint at one or more points in time. At each checkpoint it records in memory of the first subsystem i) a program state of the second program, comprising a state of one or more registers on each of the second processors at the time of the checkpoint, and ii) a copy of the data content sent to the second subsystem since the respective checkpoint.
Managing concurrent accesses by a set of tasks to a shared resource of a computer system
Managing concurrent accesses by a set of tasks to a shared resource of a computer system. Synchronizing the set of tasks for assigning and releasing a resource according to a predefined access period with flexibility of providing an extended access period where an external task is not detected during the predefined access period. Where an extended access period is provided, resynchronizing is performed, and the external task is identified and access is prevented when the external task is determined to be a particular type of task.