WO2017058157A1 - Application management data - Google Patents

Application management data Download PDF

Info

Publication number
WO2017058157A1
WO2017058157A1 PCT/US2015/052867 US2015052867W WO2017058157A1 WO 2017058157 A1 WO2017058157 A1 WO 2017058157A1 US 2015052867 W US2015052867 W US 2015052867W WO 2017058157 A1 WO2017058157 A1 WO 2017058157A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
virtual machine
data
shared memory
data portion
Prior art date
Application number
PCT/US2015/052867
Other languages
French (fr)
Inventor
Thirusenthilanda ARASU
Original Assignee
Hewlett Packard Enterprise Development 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 Enterprise Development Lp filed Critical Hewlett Packard Enterprise Development Lp
Priority to US15/756,232 priority Critical patent/US10521155B2/en
Priority to PCT/US2015/052867 priority patent/WO2017058157A1/en
Publication of WO2017058157A1 publication Critical patent/WO2017058157A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Definitions

  • FIG. 1 is a block diagram of an example computing device
  • FIG. 2 is another block diagram of an example computing device
  • FIG. 3 is a block diagram of an example shared memory segment
  • FIG. 4 is a flowchart of an example method for monitoring application management data of a virtual machine executing an application.
  • FIG. 5 is another block diagram of an example computing device.
  • a developer of a platform-independent application may wish to monitor the application's performance during its execution by a virtual machine, for example, in order to identify and fix various errors, improve the application's performance, and so forth.
  • the developer may wish to monitor and analyze the application's memory usage, thread performance, etc.
  • the user may run a monitoring application in parallel to the virtual machine, where running "in parallel" may include any type of concurrent execution, such as execution by a different processor or a different processor core, or execution by the same processor or processor core in a time-sharing manner.
  • the virtual machine can create a separate thread that can collect the information and pass it to the monitoring application using sockets, signals, or other inter-process communication mechanisms.
  • the separate thread may consume memory, CPU, and other resources, all of which may affect the application's performance.
  • Examples disclosed herein describe, among other things, to a computing device comprising a memory and a processor.
  • the processor may execute a virtual machine process and a monitoring process.
  • the virtual machine process may obtain a shared memory segment in the memory, obtain an application for execution, execute the application, and store in the shared memory segment application management data associated with an application.
  • the monitoring process may obtain access to the shared memory segment, and obtain at least one data portion of the management data from the shared memory segment.
  • a monitoring tool may be able to monitor an application being executed by a virtual machine without affecting the application's performance.
  • FIG. 1 is a block diagram of an example computing device 100.
  • Computing device 100 may be any type of electronic device or a combination of electronic devices.
  • computing device may include a desktop computer, a laptop computer, a tablet computer, a smartphone, a server (e.g., a NonStop server), a gaming console, a printing device, and so forth.
  • computing device 100 may include a memory 120, which may include any type of non-transitory memory that may include any combination of volatile and non-volatile memory.
  • memory 120 may include any combination of random-access memories (RAMs), read-only memories (ROMs), flash memories, hard drives, memristor-based memories, and the like.
  • RAMs random-access memories
  • ROMs read-only memories
  • flash memories hard drives, memristor-based memories, and the like.
  • Computing device 100 may also include a processor 130, which may include one or more processors or processor cores, such as central processing units (CPUs), semiconductor-based microprocessors, graphics processing units (CPUs), field-programmable gate arrays (FPGAs), or other electronic circuitry.
  • processor 130 may execute one or more processes, which may include, for example, processes associated with the operating system, such as processes running in kernel space, and processes associated with applications, such as processes running in user space.
  • the operating system running on computing device 100 may be any type of an operating system, such as a Unix- based operating system (e.g., Linux, Solaris, etc.), a icrosoft Windows operating system (e.g., Windows 7, 8, 10, etc.), a proprietary operating system (e.g., NonStop OS) or any other type of an operating system supporting a parallel (e.g., time-shared) execution of two or more processes.
  • a Unix- based operating system e.g., Linux, Solaris, etc.
  • a icrosoft Windows operating system e.g., Windows 7, 8, 10, etc.
  • a proprietary operating system e.g., NonStop OS
  • any other type of an operating system supporting a parallel (e.g., time-shared) execution of two or more processes e.g., time-shared
  • the operating system may create a new process and assign to the new process a dedicated address space in memory 120.
  • the dedicated address space may be a virtual address space, where each virtual address is mapped to a certain physical address of memory 120.
  • the operating system may prevent one process from accessing a physical address used by another process. Accordingly, in order to allow communication between processes, the operating system may allow any number of processes to access one or more common segments of memory 120, that is, segments that have been designated as "shared memory segments.”
  • the operating system may designate a new physical address in memory 120 as an address of a shared memory segment, assign an identifier to the shared memory segment, and map the physical address of the shared memory segment to a virtual address in the virtual address space of the process.
  • Another process may then request access to the shared memory segment, e.g., by identifying the segment by its identifier.
  • the operating system may then map the shared memory segment's physical address to a virtual address in the virtual address space of the other process, and provide the virtual address to the other process.
  • the other process may access (e.g., read from and/or write to) the shared memory segment.
  • the operating system may receive a request (e.g., a user-initiated request) to run an application.
  • the application may be a platform-independent application, such as a Java application.
  • the operating system may create a virtual machine process 141 , and instruct processor 130 to execute a virtual machine, such as a Java Virtual Machine ("JVM"), within virtual machine process 141 .
  • the virtual machine may, in some examples, obtain the application's instructions (e.g., the bytecode of the Java application), compile, link, and otherwise process the application, and cause processor 130 to execute the application (i.e., the application's instructions) within the same virtual machine process 141 ,
  • the virtual machine may manage the application's execution, for example, by managing the application's memory consumption (e.g., allocate new memory, free unused memory, etc.), managing the application's various threads, loading and compiling new instructions (e.g., new classes), and performing any other management tasks, in some examples, the virtual machine may store and update application management data 125 associated with these various management tasks.
  • application management data 125 may include various information about the application's memory usage, thread status, loaded classes, performance, and any other information used by the virtual machine for management of the application's execution.
  • the virtual machine may store application management data 125 in shared memory segment 121 , thereby allowing access to management data 125 by other processes.
  • the virtual machine may request that the operating system create shared memory segment 121 , that is, dedicate some unused space in memory 120 as shared memory segment 121 .
  • shared memory segment 121 may be associated with and identified by a segment identifier.
  • the segment identifier may be generated by the operating system, or it may be provided to the operating system by the virtual machine as part of the request to create the segment, in some examples, the virtual machine may obtain the segment identifier from a file, such as virtual machine header file 127 illustrated in FIG. 2 and discussed in more detail below.
  • a user may run a monitoring application for monitoring the execution (e.g., status, performance, etc.) of the application.
  • the monitoring application may be a piatform- specific application developed for the particular operating system and processor 130 of computing device 100, or it may be a platform-independent application such as a Java application performed by another instance of a virtual machine, such as another instance of a JVM.
  • the monitoring application may be executed in a monitoring process 142 that may running in parallel with virtual machine process 142, e.g., either on a different core of processor 130, or on the same core in a timesharing manner.
  • monitoring process 142 may run on a processor of another computing device that is communicatively coupled to computing device 100. As mentioned above, in some examples monitoring process 142 may be unable to access any memory space that was dedicated for virtual machine process 141 .
  • the monitoring application may, however, access application management data 125 stored in shared memory segment 121.
  • the monitoring application may request access to shared memory segment 121 , for example, by providing to the operating system the segment identifier of shared memory segment 121 and/or the process identifier of virtual machine process 141 . in some examples, the combination of the segment identifier and the process identifier may uniquely identify shared memory segment 121 among any other shared memory segments.
  • the monitoring application may provide for display (e.g., on a display coupled to computing device 100) a list of a number of (e.g., one or more) virtual machines running on computing device 100, and the process identifiers of the processes associated therewith.
  • the user may select one or more virtual machines (and applications associated therewith) whose performance the user would like to monitor.
  • the monitoring application may allow the user to simultaneously monitor a number of applications being executed by a number of virtual machines, where each virtual machine may store its application management data in a different shared memory segment in memory 120 or in a different portion of shared memory segment 121 .
  • the size and location of application management data are sized and location of application management data
  • the virtual machine may also store in shared memory segment 121 an application management header 123.
  • Application management header 123 may be stored at a predefined offset within segment 121 (e.g., at the very beginning of segment 121 ) and may have a predefined structure and size.
  • the offset, structure, size, and any other parameters defining the application management header 123 collectively referred to as application management header info 129, may be stored in virtual- memory header file 127, or at another location accessible by monitoring process 142.
  • virtual machine header file 127 may also store a shared memory segment identifier 128 identifying shared memory segment 121.
  • the monitoring application may obtain application management header info 129, and based on application management header info 129, locate and determine the structure of application management header 123. Based on application management header 123, the monitoring application may find the application management data 125 within shared memory segment 121 , and locate the various data portions within application management data 125.
  • FIG. 3 illustrates an example application management data 125.
  • application management data 125 may include, for example, compiler data portion 125A indicating, e.g., the number of compilation tasks that have been or are being performed, the number of compilation tasks that have failed, the amount of time spent performing each compilation task, the name of the class and method of the last successful and/or failed compilation, etc.
  • Application management data 125 may also include spin lock count data portion
  • Application management data 125 may also include thread data portion 125C including, e.g., a list of threads created by the application, the status or state of each thread (e.g., blocked, ready for execution, etc.), the number of times each thread has entered a blocked state, the amount of time that has elapsed since each thread entered blocked state, the total amount of time spent by the thread in the waiting state, the name of a lock to which the thread is waiting, etc. [0022] Application management data 125 may also include class loader data portion 125D indicating, e.g., the number of classes that have been loaded and/or unloaded, the number of bytes that have been loaded and/or unloaded, the amount of time spent performing class loading and unloading operations.
  • thread data portion 125C including, e.g., a list of threads created by the application, the status or state of each thread (e.g., blocked, ready for execution, etc.), the number of times each thread has entered a blocked state, the amount of time that has
  • Application management data 125 may also include heap data portion 125E indicating, e.g., the size of the heap memory allocated for the application, the number of regions (e.g., permanent generation, young generation, etc.), the capacity and the current utilization of each region, etc.
  • Application management data 125 may also include garbage-collector data portion 125F (if the virtual machine supports garbage collection). Garbage-collector data portion 125F may indicate, e.g., the number of minor garbage collections, the number of major garbage collections, the reason for the last garbage collection, the number of bytes reclaimed by garbage collections, the amount of time spent in garbage collections, etc. It is appreciated that application management data 125 may also include any other type of information related to the execution of the application by the virtual machine.
  • FIG. 3 also illustrates an example application management header 123.
  • application management header 123 may include a number of anchors or pointers 123A-123F indicating the addresses (and optionally the sizes) of the various data portions (e.g., 125A-125F) of application management data 125.
  • Application management header 123 may also include a virtual machine version 123V of the virtual machine, or any other information associated with the virtual machine and/or application management data 125.
  • the structure of application management header 123 may be a fixed and predefined structure that may be obtainable by the monitoring application, e.g., from virtual machine header file 127 or another source.
  • the monitoring application may further determine the structure of the particular portion. For example, the monitoring application may obtain a plurality of symbols defining the structures of the various portions of application management data 125.
  • the symbols may be stored in one or more header files associate with the virtual machine, such as virtual machine header file 127.
  • the storage location of the symbols e.g., the name(s) and location(s) of file(s) storing the symbols
  • the monitoring application may determine the location of the header file storing the symbols based on virtual machine version 123V.
  • the monitoring application may periodically and/or non-periodically access application management data 125 or portions thereof, asynchronously and without affecting the performance of the virtual machine and the application.
  • the monitoring application may be optionally process (e.g., filter, organize, statistically analyze, etc.) the obtained application management data 125, and present it to the user, e.g., by providing the data for display on a display coupled to computing device 10(3. Because some or ail of the management data 125 may be continuously updated by the virtual machine, in some examples, the monitoring application may, periodically and/or upon request by the user, obtain updated application management data 125 and provide for updated data to the user. Based on application management data 125 and changes therein, the user may analyze performance of the application, identify and fix any potential issues, and other-wise evaluate the execution of the application.
  • FIG. 4 is a flowchart of an example method 400 for monitoring application management data of a virtual machine executing an application on a computing device.
  • Method 400 may be described below as being executed or performed by a computing device, such as computing device 100 of FIG. 1 .
  • Other suitable systems and/or computing devices may be used as well.
  • Method 40(3 may be implemented in the form of executable instructions stored on at least one non-transitory machine- readable storage medium of the computing device and executed by at least one processor of the computing device.
  • method 400 may be implemented in the form of electronic circuitry (e.g., hardware), in alternate examples of the present disclosure, one or more or blocks of method 400 may be executed substantially concurrently or in a different order than shown in FIG. 4.
  • method 400 may include more or less blocks than are shown in FIG. 4. in some examples, one or more of the blocks of method 400 may, at certain times, be ongoing and/or may repeat. [0027] ⁇ block 410, method 400 may identify a virtual machine process (e.g., 141 ) associated with the virtual machine.
  • a virtual machine process e.g., 141
  • the method may obtain, by a monitoring process (e.g., 142), access to a shared memory segment (e.g., 121 ) associated with the virtual machine process, where the shared memory segment may store the application management data (e.g., 125) and an application management header (e.g., 123) associated with the application management data, and where the application management data may include a plurality of data portions (e.g., 125A-125F).
  • the method may determine, by the monitoring process, an offset of at least one data portion of the plurality of data portions based on the header information.
  • the method may obtain the at least one data portion by the monitoring process.
  • the method may provide the at least one data portion for display.
  • the method may also include determining a structure of the at least one data portion based on a plurality of symbols, and determining a storage location of the plurality of symbols based on a version of the virtual machine, where the version may be stored in the application management header.
  • FIG. 5 is a block diagram of an example computing device 500.
  • Computing device 500 may be similar to computing device 100 of FIG. 1 .
  • computing device 500 includes a processor 510 and a non- transitory machine-readable storage medium 520.
  • processor 510 and a non- transitory machine-readable storage medium 520.
  • the instructions may be distributed (e.g., stored) across multiple machine-readable storage mediums and the instructions may be distributed (e.g., executed by) across multiple processors.
  • Processor 510 may include one or more central processing units (CPUs), processor cores, microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in non-transitory machine-readable storage medium 520.
  • processor 510 may fetch, decode, and execute instructions 522, 524, 526, 528, and 530, or any other instructions (not shown for brevity).
  • processor 510 may include one or more electronic circuits comprising a number of electronic components for performing the functionality of one or more of the instructions in machine-readable storage medium 520.
  • executable instruction representations e.g., boxes
  • executable instructions and/or electronic circuits included within one box may, in alternate examples, be included in a different box shown in the figures or in a different box not shown.
  • Non-transitory machine-readable storage medium 520 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions.
  • medium 520 may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disc, and the like.
  • Medium 520 may be disposed within computing device 500, as shown in FIG. 5.
  • the executable instructions may be "installed" on computing device 500.
  • medium 520 may be a portable, external or remote storage medium, for example, that allows computing device 510 to download the instructions from the portable/external/remote storage medium.
  • the executable instructions may be part of an "installation package".
  • medium 520 may be encoded with executable instructions for generating report(s).
  • instructions 522, 524, 526, and 528 may be executed by a virtual machine process.
  • instructions 522 when executed by a processor (e.g., 510), may cause a computing device (e.g., 500) to obtain access to a shared memory segment accessible by a monitoring process running in parallel with the virtual machine process.
  • Instructions 524 when executed by the processor, may cause the computing device to execute an application.
  • Executing the application may include, for example, obtaining instructions (e.g., bytecode) of a platform-independent application such as Java application, compiling, linking, and otherwise processing the instructions to convert them into machine code compatible with processor 510, and causing computing device 500 to execute the application by causing processor 510 to execute the instructions.
  • Instructions 526 when executed by the processor, may cause the computing device to store at a first address of the shared memory segment management data associated with the application's execution, where the management data includes at least thread data indicating status of a set of threads created by the application, and/or heap data indicating the application's memory usage.
  • instructions 526 may be executed on a continuous basis, i.e., the management data may be continuously updated, instructions 528, when executed by the processor, may cause the computing device to store the first address at a predefined offset within the shared memory segment.

Abstract

Examples disclosed herein relate, in one aspect, to a non-transitory machine-readable storage medium encoded with instructions executable by a processor of a computing device to cause the computing device to start a virtual machine process. The virtual machine process may obtain access to a shared memory segment accessible by a monitoring process, execute an application, and store in the shared memory segment management data associated with the application's execution.

Description

APPLICATION MANAGEMENT DATA BACKGROUND
[0001 ] Many applications developed today are intended to run on a number of various platforms. Developing and maintaining different application versions for different platforms may be a time and resource consuming task. Instead, a single application may be developed using a platform-independent programming language (e.g., Java) and executed using a virtual machine (e.g., a Java Virtual Machine) on any platform for which a virtual machine has been developed.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] The following detailed description references the drawings, wherein:
[0(303] FIG. 1 is a block diagram of an example computing device;
[0(304] FIG. 2 is another block diagram of an example computing device;
[0005] FIG. 3 is a block diagram of an example shared memory segment;
[0006] FIG. 4 is a flowchart of an example method for monitoring application management data of a virtual machine executing an application; and
[0007] FIG. 5 is another block diagram of an example computing device.
DETAILED DESCRIPTION
[0008] A developer of a platform-independent application may wish to monitor the application's performance during its execution by a virtual machine, for example, in order to identify and fix various errors, improve the application's performance, and so forth. For example, the developer may wish to monitor and analyze the application's memory usage, thread performance, etc. In order to collect such information, the user may run a monitoring application in parallel to the virtual machine, where running "in parallel" may include any type of concurrent execution, such as execution by a different processor or a different processor core, or execution by the same processor or processor core in a time-sharing manner. The virtual machine can create a separate thread that can collect the information and pass it to the monitoring application using sockets, signals, or other inter-process communication mechanisms. The separate thread, however, may consume memory, CPU, and other resources, all of which may affect the application's performance.
[0009] Examples disclosed herein describe, among other things, to a computing device comprising a memory and a processor. The processor may execute a virtual machine process and a monitoring process. The virtual machine process may obtain a shared memory segment in the memory, obtain an application for execution, execute the application, and store in the shared memory segment application management data associated with an application. The monitoring process may obtain access to the shared memory segment, and obtain at least one data portion of the management data from the shared memory segment. As a result, a monitoring tool may be able to monitor an application being executed by a virtual machine without affecting the application's performance.
[0010] FIG. 1 is a block diagram of an example computing device 100. Computing device 100 may be any type of electronic device or a combination of electronic devices. For example, computing device may include a desktop computer, a laptop computer, a tablet computer, a smartphone, a server (e.g., a NonStop server), a gaming console, a printing device, and so forth. In some examples, computing device 100 may include a memory 120, which may include any type of non-transitory memory that may include any combination of volatile and non-volatile memory. For example, memory 120 may include any combination of random-access memories (RAMs), read-only memories (ROMs), flash memories, hard drives, memristor-based memories, and the like.
[001 1 ] Computing device 100 may also include a processor 130, which may include one or more processors or processor cores, such as central processing units (CPUs), semiconductor-based microprocessors, graphics processing units (CPUs), field-programmable gate arrays (FPGAs), or other electronic circuitry. In some examples, processor 130 may execute one or more processes, which may include, for example, processes associated with the operating system, such as processes running in kernel space, and processes associated with applications, such as processes running in user space. The operating system running on computing device 100 may be any type of an operating system, such as a Unix- based operating system (e.g., Linux, Solaris, etc.), a icrosoft Windows operating system (e.g., Windows 7, 8, 10, etc.), a proprietary operating system (e.g., NonStop OS) or any other type of an operating system supporting a parallel (e.g., time-shared) execution of two or more processes.
[0(312] Upon receiving a request to run an application, the operating system may create a new process and assign to the new process a dedicated address space in memory 120. In some examples, the dedicated address space may be a virtual address space, where each virtual address is mapped to a certain physical address of memory 120. In some examples, in order to ensure data security, the operating system may prevent one process from accessing a physical address used by another process. Accordingly, in order to allow communication between processes, the operating system may allow any number of processes to access one or more common segments of memory 120, that is, segments that have been designated as "shared memory segments."
[0013] For example, upon a request from a process, the operating system may designate a new physical address in memory 120 as an address of a shared memory segment, assign an identifier to the shared memory segment, and map the physical address of the shared memory segment to a virtual address in the virtual address space of the process. Another process may then request access to the shared memory segment, e.g., by identifying the segment by its identifier. The operating system may then map the shared memory segment's physical address to a virtual address in the virtual address space of the other process, and provide the virtual address to the other process. As a result, the other process may access (e.g., read from and/or write to) the shared memory segment.
[0014] in some examples, the operating system may receive a request (e.g., a user-initiated request) to run an application. In some examples, the application may be a platform-independent application, such as a Java application. In response to the request, the operating system may create a virtual machine process 141 , and instruct processor 130 to execute a virtual machine, such as a Java Virtual Machine ("JVM"), within virtual machine process 141 . The virtual machine may, in some examples, obtain the application's instructions (e.g., the bytecode of the Java application), compile, link, and otherwise process the application, and cause processor 130 to execute the application (i.e., the application's instructions) within the same virtual machine process 141 ,
[0015] In some examples, the virtual machine may manage the application's execution, for example, by managing the application's memory consumption (e.g., allocate new memory, free unused memory, etc.), managing the application's various threads, loading and compiling new instructions (e.g., new classes), and performing any other management tasks, in some examples, the virtual machine may store and update application management data 125 associated with these various management tasks. As will be discussed in more detail below, application management data 125 may include various information about the application's memory usage, thread status, loaded classes, performance, and any other information used by the virtual machine for management of the application's execution.
[0016] in some examples, instead of storing application management data 125 in an address space dedicated to virtual machine process 141 (such space generally being inaccessible by other processes), the virtual machine may store application management data 125 in shared memory segment 121 , thereby allowing access to management data 125 by other processes. For example, the virtual machine may request that the operating system create shared memory segment 121 , that is, dedicate some unused space in memory 120 as shared memory segment 121 . As mentioned above, shared memory segment 121 may be associated with and identified by a segment identifier. The segment identifier may be generated by the operating system, or it may be provided to the operating system by the virtual machine as part of the request to create the segment, in some examples, the virtual machine may obtain the segment identifier from a file, such as virtual machine header file 127 illustrated in FIG. 2 and discussed in more detail below.
[0017] in some examples, a user (e.g., a developer, a system administrator, etc.) may run a monitoring application for monitoring the execution (e.g., status, performance, etc.) of the application. The monitoring application may be a piatform- specific application developed for the particular operating system and processor 130 of computing device 100, or it may be a platform-independent application such as a Java application performed by another instance of a virtual machine, such as another instance of a JVM. The monitoring application may be executed in a monitoring process 142 that may running in parallel with virtual machine process 142, e.g., either on a different core of processor 130, or on the same core in a timesharing manner. In some examples, monitoring process 142 may run on a processor of another computing device that is communicatively coupled to computing device 100. As mentioned above, in some examples monitoring process 142 may be unable to access any memory space that was dedicated for virtual machine process 141 . The monitoring application may, however, access application management data 125 stored in shared memory segment 121. The monitoring application may request access to shared memory segment 121 , for example, by providing to the operating system the segment identifier of shared memory segment 121 and/or the process identifier of virtual machine process 141 . in some examples, the combination of the segment identifier and the process identifier may uniquely identify shared memory segment 121 among any other shared memory segments.
[0018] In some examples, the monitoring application may provide for display (e.g., on a display coupled to computing device 100) a list of a number of (e.g., one or more) virtual machines running on computing device 100, and the process identifiers of the processes associated therewith. In these examples, the user may select one or more virtual machines (and applications associated therewith) whose performance the user would like to monitor. Thus, while some examples described herein discuss monitoring one application run by one virtual machine, it is appreciated that in other examples, the monitoring application may allow the user to simultaneously monitor a number of applications being executed by a number of virtual machines, where each virtual machine may store its application management data in a different shared memory segment in memory 120 or in a different portion of shared memory segment 121 .
[0019] in some examples, the size and location of application management data
125 within shared memory segment 121 may dynamically change during the execution of the application. Accordingly, in some examples, the virtual machine may also store in shared memory segment 121 an application management header 123. Application management header 123 may be stored at a predefined offset within segment 121 (e.g., at the very beginning of segment 121 ) and may have a predefined structure and size. In some examples, the offset, structure, size, and any other parameters defining the application management header 123, collectively referred to as application management header info 129, may be stored in virtual- memory header file 127, or at another location accessible by monitoring process 142. As mentioned above, in some examples, virtual machine header file 127 may also store a shared memory segment identifier 128 identifying shared memory segment 121.
[0020] In some examples, the monitoring application may obtain application management header info 129, and based on application management header info 129, locate and determine the structure of application management header 123. Based on application management header 123, the monitoring application may find the application management data 125 within shared memory segment 121 , and locate the various data portions within application management data 125.
[0021 ] FIG. 3 illustrates an example application management data 125. As illustrated in this example, application management data 125 may include, for example, compiler data portion 125A indicating, e.g., the number of compilation tasks that have been or are being performed, the number of compilation tasks that have failed, the amount of time spent performing each compilation task, the name of the class and method of the last successful and/or failed compilation, etc.
Application management data 125 may also include spin lock count data portion
1258 indicating, e.g., the number of times the spin lock was acquired without contention, the number of times the spin lock was acquired with contention, the amount of time spent in waiting for the spin lock, the last owner of the spin lock, etc.
Application management data 125 may also include thread data portion 125C including, e.g., a list of threads created by the application, the status or state of each thread (e.g., blocked, ready for execution, etc.), the number of times each thread has entered a blocked state, the amount of time that has elapsed since each thread entered blocked state, the total amount of time spent by the thread in the waiting state, the name of a lock to which the thread is waiting, etc. [0022] Application management data 125 may also include class loader data portion 125D indicating, e.g., the number of classes that have been loaded and/or unloaded, the number of bytes that have been loaded and/or unloaded, the amount of time spent performing class loading and unloading operations. Application management data 125 may also include heap data portion 125E indicating, e.g., the size of the heap memory allocated for the application, the number of regions (e.g., permanent generation, young generation, etc.), the capacity and the current utilization of each region, etc. Application management data 125 may also include garbage-collector data portion 125F (if the virtual machine supports garbage collection). Garbage-collector data portion 125F may indicate, e.g., the number of minor garbage collections, the number of major garbage collections, the reason for the last garbage collection, the number of bytes reclaimed by garbage collections, the amount of time spent in garbage collections, etc. It is appreciated that application management data 125 may also include any other type of information related to the execution of the application by the virtual machine.
[0023] FIG. 3 also illustrates an example application management header 123. As illustrated in FIG. 3, application management header 123 may include a number of anchors or pointers 123A-123F indicating the addresses (and optionally the sizes) of the various data portions (e.g., 125A-125F) of application management data 125. Application management header 123 may also include a virtual machine version 123V of the virtual machine, or any other information associated with the virtual machine and/or application management data 125. As discussed above, the structure of application management header 123 may be a fixed and predefined structure that may be obtainable by the monitoring application, e.g., from virtual machine header file 127 or another source.
[0024] In some examples, after accessing shared memory segment 121 and finding a particular data portion (e.g., one of portions 125A-125F) of application management data 125, the monitoring application may further determine the structure of the particular portion. For example, the monitoring application may obtain a plurality of symbols defining the structures of the various portions of application management data 125. In some examples, the symbols may be stored in one or more header files associate with the virtual machine, such as virtual machine header file 127. In some examples, the storage location of the symbols (e.g., the name(s) and location(s) of file(s) storing the symbols) may depend on the version of the virtual machine, in which case the monitoring application may determine the location of the header file storing the symbols based on virtual machine version 123V.
[0025] In some examples, the monitoring application may periodically and/or non-periodically access application management data 125 or portions thereof, asynchronously and without affecting the performance of the virtual machine and the application. The monitoring application may be optionally process (e.g., filter, organize, statistically analyze, etc.) the obtained application management data 125, and present it to the user, e.g., by providing the data for display on a display coupled to computing device 10(3. Because some or ail of the management data 125 may be continuously updated by the virtual machine, in some examples, the monitoring application may, periodically and/or upon request by the user, obtain updated application management data 125 and provide for updated data to the user. Based on application management data 125 and changes therein, the user may analyze performance of the application, identify and fix any potential issues, and other-wise evaluate the execution of the application.
[0026] FIG. 4 is a flowchart of an example method 400 for monitoring application management data of a virtual machine executing an application on a computing device. Method 400 may be described below as being executed or performed by a computing device, such as computing device 100 of FIG. 1 . Other suitable systems and/or computing devices may be used as well. Method 40(3 may be implemented in the form of executable instructions stored on at least one non-transitory machine- readable storage medium of the computing device and executed by at least one processor of the computing device. Alternatively or in addition, method 400 may be implemented in the form of electronic circuitry (e.g., hardware), in alternate examples of the present disclosure, one or more or blocks of method 400 may be executed substantially concurrently or in a different order than shown in FIG. 4. In alternate examples of the present disclosure, method 400 may include more or less blocks than are shown in FIG. 4. in some examples, one or more of the blocks of method 400 may, at certain times, be ongoing and/or may repeat. [0027] Αί block 410, method 400 may identify a virtual machine process (e.g., 141 ) associated with the virtual machine. At block 420, the method may obtain, by a monitoring process (e.g., 142), access to a shared memory segment (e.g., 121 ) associated with the virtual machine process, where the shared memory segment may store the application management data (e.g., 125) and an application management header (e.g., 123) associated with the application management data, and where the application management data may include a plurality of data portions (e.g., 125A-125F). At block 430, the method may determine, by the monitoring process, an offset of at least one data portion of the plurality of data portions based on the header information. At block 440, the method may obtain the at least one data portion by the monitoring process. At block 450, the method may provide the at least one data portion for display. As discussed above, in some examples the method may also include determining a structure of the at least one data portion based on a plurality of symbols, and determining a storage location of the plurality of symbols based on a version of the virtual machine, where the version may be stored in the application management header.
[0028] FIG. 5 is a block diagram of an example computing device 500. Computing device 500 may be similar to computing device 100 of FIG. 1 . In the example of FIG. 5, computing device 500 includes a processor 510 and a non- transitory machine-readable storage medium 520. Although the following descriptions refer to a single processor and a single machine-readable storage medium, it is appreciated that multiple processors and multiple machine-readable storage mediums may be anticipated in other examples. In such other examples, the instructions may be distributed (e.g., stored) across multiple machine-readable storage mediums and the instructions may be distributed (e.g., executed by) across multiple processors.
[0029] Processor 510 may include one or more central processing units (CPUs), processor cores, microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in non-transitory machine-readable storage medium 520. In the particular example shown in FIG. 5, processor 510 may fetch, decode, and execute instructions 522, 524, 526, 528, and 530, or any other instructions (not shown for brevity). As an alternative or in addition to retrieving and executing instructions, processor 510 may include one or more electronic circuits comprising a number of electronic components for performing the functionality of one or more of the instructions in machine-readable storage medium 520. With respect to the executable instruction representations (e.g., boxes) described and shown herein, it should be understood that part or all of the executable instructions and/or electronic circuits included within one box may, in alternate examples, be included in a different box shown in the figures or in a different box not shown.
[0030] Non-transitory machine-readable storage medium 520 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, medium 520 may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disc, and the like. Medium 520 may be disposed within computing device 500, as shown in FIG. 5. In this situation, the executable instructions may be "installed" on computing device 500. Alternatively, medium 520 may be a portable, external or remote storage medium, for example, that allows computing device 510 to download the instructions from the portable/external/remote storage medium. In this situation, the executable instructions may be part of an "installation package". As described herein, medium 520 may be encoded with executable instructions for generating report(s).
[0031 ] Referring to FIG. 5, instructions 522, 524, 526, and 528 may be executed by a virtual machine process. Specifically, instructions 522, when executed by a processor (e.g., 510), may cause a computing device (e.g., 500) to obtain access to a shared memory segment accessible by a monitoring process running in parallel with the virtual machine process. Instructions 524, when executed by the processor, may cause the computing device to execute an application. Executing the application may include, for example, obtaining instructions (e.g., bytecode) of a platform-independent application such as Java application, compiling, linking, and otherwise processing the instructions to convert them into machine code compatible with processor 510, and causing computing device 500 to execute the application by causing processor 510 to execute the instructions. [0032] Instructions 526, when executed by the processor, may cause the computing device to store at a first address of the shared memory segment management data associated with the application's execution, where the management data includes at least thread data indicating status of a set of threads created by the application, and/or heap data indicating the application's memory usage. As discussed above, in some examples, instructions 526 may be executed on a continuous basis, i.e., the management data may be continuously updated, instructions 528, when executed by the processor, may cause the computing device to store the first address at a predefined offset within the shared memory segment.

Claims

CLA!MS What is claimed is:
1 . A non-transitory machine-readable storage medium encoded with instructions executable by a processor of a computing device to cause the computing device to start a virtual machine process, wherein the virtual machine process is to:
obtain access to a shared memory segment accessible by a monitoring process running in parallel with the virtual machine process;
execute an application;
store, at a first address of the shared memory segment, management data associated with the application's execution, wherein the management data comprises at least one of: thread data indicating status of a set of threads created by the application, and heap data indicating the application's memory usage; and store the first address at a predefined offset within the shared memory segment.
2. The non-transitory machine-readable storage medium of claim 1 , wherein the management data further comprises at least one of: compiler data, spin-lock count, class loader data, and garbage-collector data.
3. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions of the application comprise platform-independent instructions.
4. The non-transitory machine-readable storage medium of claim 1 , wherein the shared memory segment is associated with a predefined identifier obtainable by the monitoring process.
5. A method for monitoring application management data of a virtual machine executing an application on a computing device, the method comprising:
identifying a virtual machine process associated with the virtual machine; obtaining, by a monitoring process, access to a shared memory segment associated with the virtual machine process, wherein the shared memory segment stores the application management data and an application management header associated with the application management data, and wherein the application management data comprises a plurality of data portions; determining, by the monitoring process, an offset of at least one data portion of the plurality of data portions based on the application management header;
obtaining the at least one data portion by the monitoring process; and providing the at least one data portion for display.
6. The method of claim 5, wherein the plurality of data portions includes at least one of: a thread data portion, a compiler data portion, a spin-lock count data portion, a class loader data portion, a heap data portion, and a garbage-collector data portion.
7. The method of claim 5, further comprising determining a structure of the at least one data portion based on a plurality of symbols.
8. The method of claim 7, wherein the application management header comprises a version of the virtual machine, and wherein the method further comprises determining a storage location of the plurality of symbols based on the version.
9. The method of claim 5, wherein obtaining access to the shared memory segment comprises determining, by the monitoring process, an identifier of the shared memory segment.
10. The method of claim 5, wherein identifying the virtual machine process comprises providing for display identifiers of a plurality of processes being executed by the computing device, and obtaining a selection input indicating one of the identifiers.
1 1 . A computing device comprising a memory and a processor, wherein the processor is to execute a virtual machine process and a monitoring process, wherein:
the virtual machine process is to:
obtain a shared memory segment in the memory,
obtain an application for execution,
execute the application, and
store, in the shared memory segment, application management data associated with the application; and
the monitoring process is to:
obtain access to the shared memory segment, and
obtain at least one data portion of the management data from the shared memory segment.
12. The computing device of claim 1 1 , wherein the virtual machine process is further to store, in the shared memory segment, application management header indicating an address of the at least one data portion within the shared memory segment.
13. The computing device of claim 1 1 , wherein the management data comprises at least one of: a thread data portion, a compiler data portion, a spin- lock count data portion, a class loader data portion, a heap data portion, and a garbage-collector data portion.
14. The computing device of claim 1 1 , wherein the monitoring process is further to determine a structure of the at least one data portion based on a plurality of symbols stored in the memory.
15. The computing device of claim 1 1 , wherein the virtual machine comprises a Java Virtual Machine, and wherein the application comprises a Java application.
PCT/US2015/052867 2015-09-29 2015-09-29 Application management data WO2017058157A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/756,232 US10521155B2 (en) 2015-09-29 2015-09-29 Application management data
PCT/US2015/052867 WO2017058157A1 (en) 2015-09-29 2015-09-29 Application management data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2015/052867 WO2017058157A1 (en) 2015-09-29 2015-09-29 Application management data

Publications (1)

Publication Number Publication Date
WO2017058157A1 true WO2017058157A1 (en) 2017-04-06

Family

ID=58427800

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2015/052867 WO2017058157A1 (en) 2015-09-29 2015-09-29 Application management data

Country Status (2)

Country Link
US (1) US10521155B2 (en)
WO (1) WO2017058157A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10769129B2 (en) * 2017-09-29 2020-09-08 Oracle International Corporation Efficient thread-safe tracking of function usage in distributed-processing systems

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143595A1 (en) * 2004-12-28 2006-06-29 Jan Dostert Virtual machine monitoring using shared memory
EP1679602A1 (en) * 2004-12-28 2006-07-12 Sap Ag Shared memory based monitoring for application servers
US20100023941A1 (en) * 2008-07-28 2010-01-28 Fujitsu Limted Virtual machine monitor
US20120216185A1 (en) * 2010-12-23 2012-08-23 International Business Machines Corporation Managing virtual machines
US20130061241A1 (en) * 2010-12-28 2013-03-07 International Business Machines Corporation Managing shared data objects to provide visibility to shared memory

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7167850B2 (en) 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US8176491B1 (en) 2006-08-04 2012-05-08 Oracle America, Inc. Fast synchronization of simple synchronized methods
US9239706B2 (en) 2013-04-24 2016-01-19 International Business Machines Corporation Selective speculative class-based optimization
US9361224B2 (en) * 2013-09-04 2016-06-07 Red Hat, Inc. Non-intrusive storage of garbage collector-specific management data
US9454497B2 (en) * 2014-08-15 2016-09-27 Intel Corporation Technologies for secure inter-virtual-machine shared memory communication

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143595A1 (en) * 2004-12-28 2006-06-29 Jan Dostert Virtual machine monitoring using shared memory
EP1679602A1 (en) * 2004-12-28 2006-07-12 Sap Ag Shared memory based monitoring for application servers
US20100023941A1 (en) * 2008-07-28 2010-01-28 Fujitsu Limted Virtual machine monitor
US20120216185A1 (en) * 2010-12-23 2012-08-23 International Business Machines Corporation Managing virtual machines
US20130061241A1 (en) * 2010-12-28 2013-03-07 International Business Machines Corporation Managing shared data objects to provide visibility to shared memory

Also Published As

Publication number Publication date
US10521155B2 (en) 2019-12-31
US20180246671A1 (en) 2018-08-30

Similar Documents

Publication Publication Date Title
US8868622B2 (en) Method and apparatus for allocating resources in a computer system
US20080104441A1 (en) Data processing system and method
TWI539280B (en) Method for analyzing application not specifically designed to provide memory allocation informaion and extracting memory allocation information, and computer system and computer-readable storage medium thereof
US20120166705A1 (en) Managing virtual machines
US20080072224A1 (en) Enhanced store facility list system and operation
US20130173843A1 (en) Write bandwidth management for flash devices
TW201301029A (en) Memory manager with enhanced application metadata
US11594252B2 (en) Reader bias based locking technique enabling high read concurrency for read-mostly workloads
US9038080B2 (en) Method and system for heterogeneous filtering framework for shared memory data access hazard reports
Nitu et al. Swift birth and quick death: Enabling fast parallel guest boot and destruction in the xen hypervisor
US11556468B2 (en) Multi-ring shared, traversable, and dynamic advanced database
CN101484876A (en) Heap organization for a multitasking virtual machine
CN113010265A (en) Pod scheduling method, scheduler, memory plug-in and system
CN108459906B (en) Method and device for scheduling VCPU (virtual host processor unit) thread
US8185693B2 (en) Cache-line aware collection for runtime environments
US20120005460A1 (en) Instruction execution apparatus, instruction execution method, and instruction execution program
US20090187911A1 (en) Computer device with reserved memory for priority applications
US10552135B1 (en) Reducing a size of an application package
US20110202903A1 (en) Apparatus and method for debugging a shared library
US10521155B2 (en) Application management data
WO2017095367A1 (en) Managing objects stored in memory
US8689230B2 (en) Determination of running status of logical processor
US9298460B2 (en) Register management in an extended processor architecture
US10838737B1 (en) Restoration of memory content to restore machine state
Zlatanov Dynamic memory allocation and fragmentation

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15905550

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15756232

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15905550

Country of ref document: EP

Kind code of ref document: A1