Download Install Zing Licensing

Document related concepts
no text concepts found
Transcript
Zing Installation and
Administration Guide
Release 15.05.0.0
May 15, 2015
Zing Installation and Administration Guide
The Azul Systems® Zing™ platform uses the Zing Virtual Machine (ZVM) to run Java™ technologybased applications. In the Zing product, the Zing System Tools (ZST) component, installed on each
ZVM host system, manages the elastic and highly scalable shared memory resources.
Zing Vision (ZVision) and Zing Vision Robot (ZVRobot) provide ZVM process profiling and diagnostics.
Zing Documentation Overview
Zing documentation includes installation, administration, and reference information. It is not intended to
be read in its entirety. Select the only the tasks you need to perform and complete those related steps.
l
Release Notes
Release notes cover each Zing component and their associated release version.
l
System Requirements
Lists the systems, environment, hardware, and software requirements for all components.
l
Quick Start
Brief list of tasks to complete installation.
l
Installation and Configuration
l
Installing and Configuring Zing System Tools
Required for all basic Zing installations. Describes ZST installation and
configuration tasks.
l
Installing Zing Standalone Licenses
Required if you are not using Zing Pool licensing. Describes Zing License Server
installation and use for managing Pool Zing licenses.
l
Installing the Zing Virtual Machine
Required for all basic Zing installations. Describes ZVM installation tasks.
Includes installing ZVision and ZVRobot.
l
Using the Zing Virtual Machine
Provides an overview of the ZVM, and describes the command line options that
the ZVM supports.
l
Specific Use-Cases: Zing Installation
l
Using Zing through Amazon Web Services
Describes how to create an Amazon Elastic Compute Cloud (EC2) instance for
Zing.
l
Installing Zing System Tools using DKMS
Describes how to install ZST using the Dynamic Kernel Module Support (DKMS)
framework to automatically build the kernel module.
Azul Systems
Confidential and Proprietary
2
Zing Installation and Administration Guide
l
Installing and Configuring zing Using Read-Only Images
Describes how to install and configure Zing using read-only images of ZST and
ZVM for use in an Enterprise File System (EFS).
l
Installing and Using Pool Licensing
Required only if you have a Pool license contract with Azul. Describes Zing
License Server installation and use for managing Pool Zing licenses.
l
Zing Pilot Assist Kit
Describes using the Zing Pilot Assist Kit, that simplifies the Zing evaluation
process.
l
Zing Advanced Tuning
l
Zing Advanced Tuning: ReadyNow!
Describes Zing's advanced tuning option, ReadyNow! that provides a set of flags
and options to help your Java applications be ready to perform real transaction
processing at designated start times.
l
Zing Advanced Tuning: @ Contented
Describes Zing's advanced tuning use of the @sun.misc.Contended annotation
to reduce cache contention across multiple threads.
l
Starting or Stopping Zing System Tools Services
l
Upgrading or Uninstalling Zing Components
l
Zing Tools Management
l
Understanding Memory Use
Describes how memory is used to support Java applications in a environment
l
Using Zing Vision
Describes configuring and using the ZVision profiling and diagnostics tool for the
ZVM.
l
Using Zing Vision Robot
Describes configuring and using the ZVRobot profiling and diagnostic snapshot
collection tool for the ZVM.
l
Using Zing System Tools
Describes the ZST tools, zing-ps.
l
Troubleshooting Zing
Lists errors, messages, and possible solutions.
l
Appendix A - Zing Installation Prerequisites Details
Appendix B - Not utilized at this time.
Azul Systems
Confidential and Proprietary
3
Zing Installation and Administration Guide
l
Appendix C - Zing System Tools Installed Files
Azul Systems
Confidential and Proprietary
4
Table of Contents
Table of Contents
Zing Installation and Administration Guide
Zing Documentation Overview
1
2
Table of Contents
5
Zing Release Notes
26
Zing Component Versions
26
New Features and Updates
26
Zing Virtual Machine Resolved Issues
27
Advisory!
27
Zing Virtual Machine Known Issues
31
Zing System Tools Resolved Issues
32
Zing System Tools Known Issues
36
Zing System Requirements
37
Zing Components
37
Zing Machine Requirements
37
Operating System Requirements
38
DKMS Supported Operating Systems for ZST
42
CPU Requirements
42
Memory Requirements
43
Hard Disk Storage Space Requirements
43
Browser Requirements
43
Listening Connection Requirements
44
Zing Component Version Compatibility
44
Azul Systems
Confidential and Proprietary
5
Zing Installation and Administration Guide
Zing ZST and API Versions
45
Installation Quick Start
46
Ensure your environment meets the system requirements.
46
Download the ZST and ZVM installation files.
47
Install the Zing System Tools (ZST).
48
Configure Zing memory management.
48
Install Zing Licensing
48
Standalone Zing License
48
Install the Pool Server
49
Install the Zing Virtual Machine (ZVM).
49
Prepare to run Zing
49
Run your Java applications with Zing
50
Zing Installation and Configuration
Installing and Configuring Zing System Tools
51
51
Complete Prerequisites
51
Install Zing System Tools
52
Configure Zing Memory
54
Completing Zing Installation
55
Install Zing License File
56
Install Zing Virtual Machine
56
Verify Zing Installation
56
Modifying Zing Memory Configuration
57
Modify Zing Memory Allocation
58
Use System Method to Allocate Zing Memory
59
Azul Systems
Confidential and Proprietary
6
Table of Contents
Use Percentage of System Memory for Zing Memory
60
Use Exact Amount of System Memory for Zing Memory
60
Use Java Method to Allocate Zing Memory
60
Specify Contingency Memory Pool
61
Installing Zing Standalone Licenses
62
Zing Licensing Overview
62
Installing Zing Licenses
62
Renewing Zing License
63
Installing the Zing Virtual Machine
63
Install the Zing Virtual Machine
63
Completing Post ZVM Installation Tasks
66
Applying JDK Customizations
66
Setting an Unlimited ulimit
66
Ensuring Sufficient Memory
66
JDK Configuration Compatibility
67
Verifying Zing Virtual Machine Installation
Using the Zing Virtual Machine
67
68
Overview Zing Memory Management Processes
68
Generational Pauseless Garbage Collection (GPGC)
68
Zing Memory Allocation
68
Compatibility with HotSpot VM Command Line Options
69
Command Line Options for the Zing Virtual Machine
70
Zing Virtual Machine Options
70
Garbage Collection Options
71
Azul Systems
Confidential and Proprietary
7
Zing Installation and Administration Guide
ExplicitGC Options
71
Reserved Memory Command
71
Statistics Monitoring Command
72
Usage Syntax
72
Samples
72
Output Header Descriptions
73
ZVM Mini-Core File Option
75
ZVM Mini-Core File Requirements
75
Setting the ZVM Mini-Core File Option
75
Run a Java Application
76
Native Applications with Zing
76
Invoking Native Applications with Zing
76
Invoking the ZVM in Native Applications
77
Case 1: Native application dlopens libjvm.so and uses dlsym to find 'JNI_
CreateJavaVM’.
77
Case 2: Native application directly calls JNI_CreateJavaVM by linking against libjvm.
78
ZVM Instance Configuration Recommendations
78
RHEL Performance Tuning Options
78
Installing the Tuned Package
79
Running Tuned
79
Tuned Options
80
Automatically Starting Tuned
81
Disabling All Tuning
81
Specific Use-Cases: Zing Installation
Azul Systems
Confidential and Proprietary
82
8
Table of Contents
Using Zing through Amazon Web Services
82
Sign In to Amazon Web Services
82
Build an EC2 Server
84
Stop EC2 Instance
86
Start EC2 Instance
86
Prepare AWS EC2 Instance for Zing
86
Prepare Required Files
87
Start your AWS Instance
87
Login Remotely to your AWS Instance
88
Create a Non-Root User
88
Copy the Zing Installation Files to the AWS Instance
89
Install Zing Components
89
Installing Zing System Tools using DKMS
Installing and Configuring Zing System Tools
90
91
Complete Prerequisites
91
Install Zing System Tools
93
Configure Zing Memory
95
Completing Zing Installation
97
Install Zing License File
97
Install Zing Virtual Machine
97
Verify Zing Installation
97
Modifying Zing Memory Configuration
98
Modify Zing Memory Allocation
99
Use System Method to Allocate Zing Memory
Azul Systems
Confidential and Proprietary
100
9
Zing Installation and Administration Guide
Use Percentage of System Memory for Zing Memory
101
Use Exact Amount of System Memory for Zing Memory
101
Use Java Method to Allocate Zing Memory
101
Specify Contingency Memory Pool
102
Installing and Configuring Zing Using Read-Only Images
103
Installing Zing with Read Only Images Overview
103
Complete Prerequisites
104
Install Zing System Tools on the Zing Server
105
Prepare the Zing System Tools Server
106
Install Zing System Tools on the ZST Nodes
107
Configure Zing Memory on the ZST Nodes
109
Install Zing License File on the ZST Nodes
110
Install Zing Virtual Machine on the ZST Nodes
111
Verify Zing Installation on the ZST Nodes
112
Modifying Zing Memory Configuration
113
Modify Zing Memory Allocation
114
Use System Method to Allocate Zing Memory
115
Use Percentage of System Memory for Zing Memory
116
Use Exact Amount of System Memory for Zing Memory
116
Use Java Method to Allocate Zing Memory
116
Specify Contingency Memory Pool
117
Upgrading Zing System Tools in Read Only Environments
118
Uninstalling the Zing System Tools from a ZST Node
118
Uninstalling the Zing System Tools from the Zing Server
119
Azul Systems
Confidential and Proprietary
10
Table of Contents
Installing and Using Pool Licensing
120
Zing Licensing Overview
120
Pool Licensing Components
120
Zing License Locking
121
Pool Licensing Process Overview
121
Installing and Initializing the Zing License Server
122
Install the License Server
122
Connect to a Zing License Server
125
Store the Pool License Zip File
125
Add a Pool License
126
Configuring ZVM Hosts for Zing Pool Licensing
zing-licensed Command Options
127
129
Managing the Zing Licensing Server
131
Change the Listening Ports
131
Delete a Pool License from License Server
133
Backup the License Server
133
Restore the License Server
134
Configure Email Server
135
Configure Notifications
135
Managing Zing Licenses
137
Viewing Zing License Status and Activity
View Active Server Licenses
138
View Audit Log of Licensing Activity
139
Modifying Zing License Settings
Azul Systems
137
140
Confidential and Proprietary
11
Zing Installation and Administration Guide
Use an Amazon ID for ZVM Host ID
141
Require ZVM Host Authentication
141
Modify Zing License Lease Interval
141
Reserving Zing Licenses
142
Reserve Zing Licenses from the Pool
142
Add a ZVM Host Reservation
142
Remove a ZVM Host Reservation
143
Removing, Resetting, or Revoking Zing Licenses
143
View ZVM Hosts with Active Zing Licenses
143
Reset All ZVM Host Zing Licenses
144
Remove Expired Zing Licenses
145
Revoke Zing License on a ZVM Host
145
Managing ZVM Hosts
146
View ZVM Hosts in the License Server Pool
146
Disable a ZVM Host
147
Enable a ZVM Host
148
Delete a ZVM Host
148
Unconfigure a ZVM Host
148
Managing License Server Users
149
Add a User Role
149
Edit a User Role
151
Delete a User Role
151
Add a User
151
Change User Passwords
152
Azul Systems
Confidential and Proprietary
12
Table of Contents
Delete a User
152
Uninstalling the Zing Licensing Components
153
Remove the License Server
153
Remove your Pool License
153
Upgrading the Zing Licensing Components
Upgrade the Pool License Server
153
154
Zing Pilot Assist Kit
156
Zing Pilot Assist Kit Quick Start
156
Selecting and Validating Zing PAK Download Packages
158
Understanding the system-administrator-todo-list File
159
Sample system-administrator-todo-list.txt File
Understanding the Validation Profile
159
161
Sample validation File
162
Sample validation Script Output
162
Understanding the Options Profile
163
Sample options Profile
164
Configuring the Zing Pilot Assist Kit
166
Sample startup.conf File
166
Converting Zing from Evaluation to Production
167
Zing Pilot Assist Kit Operating System Requirements
167
Zing Advanced Tuning
172
Zing Advanced Tuning: ReadyNow!
172
ReadyNow! Overview
172
Run ReadyNow!
173
Azul Systems
Confidential and Proprietary
13
Zing Installation and Administration Guide
ProfileLog Use Case
173
Pre-JIT ProfileLog Use Case
174
Run a Profile Restoration
174
Display Summary Statistics Using jstat
174
Summary Statistics - Example Output A
174
Summary Statistics -- Example Output B
175
Monitoring ProfileLog Effectiveness
175
Using ProfileLog Information
175
Analyzing the Report
176
Tuning Opening Java Code
177
Ensure That Critical Methods are Compiled
178
Compilation Policy
178
Compilation Thresholds
179
Compiler API
179
Reducing Deoptimizations
180
Identifying Deoptimizations with PrintCompilation
180
Identifying Deoptimizations with TraceDeoptimization
181
Reducing Unreached Deoptimizations
183
Using DynamicBranchEliminationLevel as a Flag
183
Using DynamicBranchEliminationLevel as an Option
183
Using UseOldBranchProfileAdjustmentAtDeopt as a Flag
184
Reducing Null_Check Deoptimizations
184
Using ImplicitNullCheck as a Flag
184
Using ImplicitNullCheck as an Option
184
Azul Systems
Confidential and Proprietary
14
Table of Contents
Reducing Unloaded Deoptimizations
184
Using UseEarlyClassLoading as a Flag
185
Using UseEarlyClassLoading as an Option
185
Reducing Uninitialized Deoptimizations
185
Using UseEnhancedClassResolution as a Flag
186
Using UseEnhancedClassResolution as an Option
186
Using EagerInitializationDuringEarlyClassLoading as a Flag
186
Zing Advanced Tuning: @Contended
186
@Contended Overview
186
Using @Contended Annotation
187
Marking a Class as Contended
187
Marking an Instance Field as Contended
187
Marking Multiple Fields as Contended
187
Marking Groups as Contended
188
Zing @Contended Options
188
@Contended References
189
Starting or Stopping the Zing Services
190
Starting Zing Memory
190
Stopping Zing Memory
191
Starting Zing License Daemon
191
Stopping Zing License Daemon
191
Start the License Server
192
Stop the License Server
192
Upgrading or Uninstalling Zing Components
Azul Systems
Confidential and Proprietary
193
15
Zing Installation and Administration Guide
Upgrading Zing System Tools
193
Uninstalling the Zing System Tools
194
Upgrading the Zing Virtual Machine
195
Uninstalling the Zing Virtual Machine
196
Uninstalling the Zing Standalone License
197
Zing Tools Management
198
Understanding Memory Use
198
Understanding Memory Allocation
198
Host System Memory
199
Linux Memory
199
Linux Kernel Memory
199
Linux Process Memory
199
JNI Memory
200
JVM Internal Memory
200
Other Linux Processes Memory
200
Zing Memory
200
Estimating Zing Memory Allocation Example
201
Pause Prevention Memory
202
Contingency Memory for Elasticity
203
Contingency Memory and Generational Pauseless Garbage Collection
203
Sharing Contingency Memory and Memory Leaks
204
Reservable and Reserved Memory
Estimating the Number of Possible Concurrent ZVM Instances
Java Heap Memory
Azul Systems
204
205
205
Confidential and Proprietary
16
Table of Contents
Temporary Java Heap Memory
206
Heap Memory in 32-Bit vs. 64-Bit Systems
206
Setting Reservable Memory
207
Zing Allocation
207
Configuring -Xmx<val>
207
Configuring -XX:JavaMemMax=<val>
208
Using Zing Vision
208
Zing Vision Overview
208
Azul Customer Support
209
Statistical Tick Profiler
209
Enable or Disable Tick Profiler
209
Sorting Tables
209
Configuring ZVision
209
ZVM Command Line Options
210
Configuring the ZVM Host Port
210
Configuring the ZVision Server
211
Accessing ZVision
211
ZVision Interface
212
Overview Tab
Azul Systems
215
Configuration Window
215
Environment Variables Window
216
HotSpot Flags Window
217
Statistics Window
218
Settings Window
219
Confidential and Proprietary
17
Zing Installation and Administration Guide
Groups Window
220
Login Window
220
Features Window
220
Threads Tab
221
Threads List Window
222
Stack Trace Window
223
Deadlocks Window
224
Contention Window
225
Contention Details Window
226
CPU Tab
226
Tick Profile Window
226
Meta Ticks Window
230
Event Tracker
233
Memory Tab
233
Memory Summary Window
233
GC Summary Window
235
GC History Window
237
Browse Object Window
240
Allocated Objects Window
241
Live Objects Window
242
Type Velocity Window
243
Compilers Tab
245
Applications Tab
246
Advanced Configuration Options
Azul Systems
Confidential and Proprietary
247
18
Table of Contents
Using Zing Vision Robot
248
ZVision Overview
248
ZVRobot Benefits
248
Azul Customer Support
249
Configuring the Zing Virtual Machine to Use ZVRobot
249
Installing and Configuring ZVRobot
250
Running ZVRobot and Collecting Data
251
Enable or Disable Tick Profiler
252
Viewing ZVRobot Snapshot Data
252
ZVRobot Snapshot Data
252
Configuration Window
255
Environment Variables Window
256
HotSpot Flags Window
257
Statistics Window
258
Settings Window
259
Features Window
260
Threads List Window
261
Stack Trace Window
262
Deadlocks Window
262
Contention Window
262
Tick Profile Window
264
Memory Summary Window
265
GC Summary Window
266
GC History Window
267
Azul Systems
Confidential and Proprietary
19
Zing Installation and Administration Guide
Compilers – Task Window
270
Class List Window
271
Using Zing System Tools
271
Using the zing-ps Tool
271
Command Return Overview
272
Legend for Memory Usage Labels
273
Additional Field Descriptions
273
Summary of Total Memory Usage
274
Memory Usage for Each Running ZVM Process
274
Fund Breakdown
275
Memory Usage by Account per Process
275
Format Command Sample Options
276
Example 1: No parameters used, returns the number of ZVM processes.
276
Example 2: Comma separated.
276
Example 3: CMD column options.
277
Example 4: Units displayed options.
279
Example 5: Details of specific process by process id (PID).
286
Samples Memory Usage by Account
286
Example 6: To monitor a test run.
286
Example 7: For ZVM fault diagnosis.
286
Example 8: Memory statistics with zero ZVM processes running.
286
Example 9: Memory account details with 1 ZVM process running.
287
Example 10: Memory funding details with 1 ZVM process running.
287
Explanation of zing-ps Fund Breakdown
288
Azul Systems
Confidential and Proprietary
20
Table of Contents
Example Memory Fund Allocation for a Process
289
Use zing-ps and awk Commands to Show Available Heap Sizes in MB
291
Example 11: No JVMs have been started.
291
Example 12: An Azul Inspector 1GB JVM has been started.
292
Troubleshooting Zing
294
Core Files and Core Bundling with Zing
294
Mini-Core File Option
295
Mini-Core File Option Requirements
295
Setting the Option
296
Automatic ZVM Core Bundling
296
Enabling Automatic ZVM Core Bundling
296
Disabling Automatic ZVM Core Bundling
298
Locating Automatic ZVM Core Bundles
299
Manual ZVM Core Bundling
299
Decrypting Core Files
302
Zing License Core Files
303
Zing Installation Errors
304
/user/bin Access
304
Message:
304
Action:
304
Known Intel chip errata can cause spurious system-wide delays
304
Description:
304
Solution:
304
DKMS Installation Troubleshooting
Azul Systems
304
Confidential and Proprietary
21
Zing Installation and Administration Guide
Kernel Mismatch on a DKMS RHEL System
305
Kernel Mismatch on a DKMS SLES System
305
Kernel Mismatch on a DKMS Ubuntu or Debian System
306
Native Launch with ZVM
306
Invoking Native Launch with Zing
306
Invoking the ZVM in Native Launch Apps
306
Case 1: C-main dlopens the libjvm.so and tries to find "JNI_CreateJavaVM” using dlsym.307
Case 2: C-main app directly calls JNI_CreateJavaVM by statically linking libjvm.
Known Issues Running Native Launch Apps on Zing
307
308
Case 1: Virtual address space collisions when native launch applications allocate
memory where ZVM allocates certain internal structures like the CodeCache and the
OopTable.
308
Case 2: Virtual address space collisions when native launch applications allocate
memory where libjvm.so needs to be loaded
309
Case 3: Virtual address space collisions when native launch applications allocate
memory where ZVM allocates other VM internal data structures
309
Case 4: Native launch application uses signal handlers for signals used by the ZVM
309
Loading /usr/lib/zing/libc_hooks2.so
309
Native launch app colliding with areas used or assumed by the ZVM.
309
Case 1: Native launch app allocates/mmaps specfic areas like CodeCache/OopTable
Tick Profiler and C-Heap Leak Detection
Zing Errors
310
310
310
When abrtd running zing core_pattern cannot overwrite /proc/sys/kernel/core_pattern
310
Description:
310
Solution:
310
Azul Systems
Confidential and Proprietary
22
Table of Contents
ZVM WARNING: The Event Tick Buffer Profiling system status is: "Shutdown."
311
Reason:
311
Description:
311
Background:
311
Solution:
312
Crash When Using Tight Polling Loops
312
Description:
312
Background:
312
Solution:
312
Out of Space for OOP (Ordinary Object Pointer) Table - KlassTable
312
Description:
312
Solution:
313
pthread_exit called without calling JNI_DetachCurrentThread first
313
Description:
313
Solution:
313
%preun(zing-zst-<version>) scriptlet failed, exit status1
313
Description:
313
Solution:
313
The Zing System Tools is Not Loaded Properly
313
Description:
313
Solution:
314
The Zing System Tools Has Not Been Configured Yet
314
Description:
314
Solution:
314
Azul Systems
Confidential and Proprietary
23
Zing Installation and Administration Guide
Not Enough Free Memory During Zing Memory Configuration
314
Description 1:
314
Solution 1:
314
Description 2:
314
Solution 2:
314
Error example:
314
ZST Fails to Allocate Requested Memory
315
Description:
315
Solution:
315
Cannot find kernel config /boot/config-<kernel version>
315
Description:
315
Solution:
315
Qualification Failed Errors
316
Processor support insufficient for Zing (constant_tsc support required)
316
Description:
316
Solution:
316
UseLargePages Not Supported with Zing System Tools
Appendix A – Zing Installation Prerequisites Details
SWAP Settings
316
318
318
Persistent change:
318
Non-persistent change:
319
vm.min_free Settings
319
Persistent change:
319
Non-persistent change:
319
Azul Systems
Confidential and Proprietary
24
Table of Contents
Transparent HugePages Settings
319
Disabling the Intel Idle Driver
320
On RHEL/CentOS 7.x systems:
321
On RHEL/CentOS 5.x or 6.x systems:
322
On Ubuntu systems:
323
On SUSE systems:
323
Appendix C – Zing System Tools Installed Files
User Tools
325
325
/usr/bin/zing-ps
325
Administrator Tools
325
/usr/sbin/zing-llpmem
325
/usr/sbin/zing-configure-pmem
325
/usr/sbin/system-config-zing-memory
325
/usr/sbin/system-config-zing-core-pattern
325
Configuration Files
326
/etc/zing/pmem.conf.default
326
/etc/zing/pmem.conf
326
/etc/zing/pmem.conf.*example*
326
Man Pages
326
ZST Configuration File Relationships
326
ZST Boot Sequence File Relationships
327
ZST Update Software File Relationships
327
Legal Notice
Azul Systems
328
Confidential and Proprietary
25
Zing Installation and Administration Guide
Zing Release Notes
May 15, 2015
15.05.0.0
Zing Component Versions
The Zing 15.05.0.0 release includes the following product component versions:
l
ZVM 15.05.0.0
l
ZST 5.7.11
New Features and Updates
New for Zing 15.05.0.0 release:
l
ReadyNow! enhancements
l
Zing Pilot Assist Kit
l
Launch from native application (c-main)
l
Large heap enhancements
l
Experimental version of Zing MXBeans
l
Support for Oracle Linux versions
l
l
2.6.39-400.212.1.el5uek.x86_64
l
2.6.39-400.209.1.el5uek.x86_64
l
2.6.32-300.11.1.el5uek.x86_64
l
2.6.39-400.215.11.el6uek.x86_64
l
2.6.39-400.17.2.el5uek.x86_64
l
2.6.39-400.17.2.el6uek.x86_64
Support for RHEL/CentOS 7.1
l
3.10.0-229.1.2.el7.x86_64
l
Added flags PrintThreadDumpsCallerStacktrace and PrintFindDeadlocksCallerStacktrace
l
Added options AllowExplicitThreadDumps and AllowExplicitFindDeadlocks
l
Bug fixes
Azul Systems
Confidential and Proprietary
26
Zing Release Notes
Zing Virtual Machine Resolved Issues
Advisory!
Various hangs in the futex code have been reported by applications running on
Haswell. Please see https://access.redhat.com/solutions/1350963 for more details.
Even though the referenced link talks only about Redhat, the kernel bug is present in
other distros too. Please check with the respective OS support teams on the latest
patches available for other distros.
The following table lists known issues that are resolved as of Zing Virtual Machine 15.05.0.0. The Bug
IDs listed are Azul internal reference numbers.
Bug ID
Release
Resolved
Description
Eliminate the expiration timer check in Zing MXBeans and make the
VM option an experimental option.
4282
15.05.0.0
To use Zing MXBeans specify both of the following options, in order.
-XX:+UnlockExperimentalVMOptions
-XX:+UseZingMXBeansExperimentalVersion
Provide VM options to print stack trace for explicit calls to
ThreadDumps and FindDeadlocks.
3799
15.05.0.0
The following VM options have been added:
PrintThreadDumpsCallerStacktrace
PrintFindDeadlocksCallerStacktrace
3768
15.05.0.0
Recognize the '%p' macro in loggc param to expand the PID of the
current VM process and add it to the GC log file.
Usage: -Xloggc:verbose.gc.%p.log
3627
15.05.0.0
Failure of ImplicitNullChecks optimization causes severe performance
degradation. This manifests as high amount of CPU time spent in
handler_segv.
3501
15.05.0.0
Crash in NodeHash::hash_delete(Node const*)+0xa.
3474
15.05.0.0
VM hang in park/unpark code. This is due to a kernel bug in futex_wait.
Please see https://access.redhat.com/solutions/1350963 for more
details.
3387
15.05.0.0
CHeapLeakDetection will cause a crash in C [libjvm.so+0x3ad1f0]
Azul Systems
Confidential and Proprietary
27
Zing Installation and Administration Guide
Bug ID
Release
Resolved
Description
Thread::pop_lock(AzLock*)+0x10 in versions 14.09.0.0, 14.09.1.0 and
14.09.2.0.
3192
15.05.0.0
Have java.time.Clock constructor use linux's clock_gettime(CLOCK_
REALTIME,...) to provide nanosecond precision
Allow VM option KeepSafepointsInCountedLoops to be controlled at
the method level.
2438
15.05.0.0
Example: Add the following line to the CompileCommandFile to enable
this option on a per-method basis
option /package/Class <method>
+KeepSafepointsInCountedLoops
2051
15.05.0.0
Allow options to configure stack size for JavaThreads. -Xss and XX:ThreadStackSize=<n> are now honored. The default stack size is
2MB.
Provide VM options to disable explicit calls to ThreadDumps and
FindDeadlocks.
1255
15.05.0.0
The following VM options have been added to enable/disable the
functionalities:
AllowExplicitThreadDumps (defaults to on)
AllowExplicitFindDeadlocks (defaults to on)
3704
15.02.1.0
Using UseOptimizedCollectionsIterator shows a lot of exceptions
3557
15.02.1.0
Crash in Klass::GPGC_follow_weak_klass_links()+0x4d4
3473
15.02.0.0
Crash while freeing a methodCodeOop. (CodeCache::GPGC_unlink(),
methodCodeOopDesc::free_internals(),...)
3374
15.02.0.0
Crash in (C2) sun.security.ssl.ClientHandshaker.processMessage(BI)
V
3226
15.02.0.0
Need faster implementation of ConcurrentHashMap.values()
2411
15.02.0.0
Default number of threads (GC and compiler) now calculated based on
the physical core count rather than the logical core count
Azul Systems
Confidential and Proprietary
28
Zing Release Notes
Bug ID
Release
Resolved
Description
3444
14.09.2.0
Thread is holding jvm_lock while yield()
3373
14.09.2.0
MacroAssembler::test8il generates incorrect code
3331
14.09.2.0
Times to safepoint greater than 100ms are observed due to realloc of
certain safepoint tracking data structures
3295
14.09.2.0
NullPointerException while loading fonts on a system that has no
'fontconfig' library
3212
14.09.2.0
For Java 8, fonts from /etc/zing/java-fonts not found by ZVM
3211
14.09.2.0
Crash in frame C [libjvm.so+0x6763e1] Node::rematerialize()
const+0x1
3169
14.09.2.0
ProfileLogIn causes certain virtual call sites to be erroneously treated
as megamorphic
3139
14.09.2.0
Error: zing-zst not found when installing Zing using the shar installers.
2910
14.09.2.0
-XX:+IgnoreUnrecognizedVMOptions doesn't work in Zing
1920
14.09.2.0
Segmentation fault in GPGC_Collector::mutator_relocate_object after
incorrect code generation for java.util.
1692
14.09.2.0
WARNING: The Event Tick Buffer Profiling system status is:
"Shutdown." (reason: "Max Buffers Exceeded").
3007
14.09.1.0
Threads created in native code before the VM has been initialized will
cause a recursive SEGV when calling AttachCurrentThread.
ThreadLocalMap can cause a performance slowdown when the
hash is not optimal due to a smaller capacity.
2967
Azul Systems
14.09.1.0
Note: The initial capacity of the ThreadLocalMap can be adjusted
using the VM option XX:JavaThreadLocalMapInitialCapacity=<val> (<val>
defaults to 128).
Confidential and Proprietary
29
Zing Installation and Administration Guide
Bug ID
Release
Description
Resolved
2869
14.09.1.0
Crash in libplumbr.so while loading Plumbr agent.
2781
14.09.0.0
zing_installer.sh: Installing using the shell installer can fail.
JBoss EAP 5.1 throws one of the following messages when
serializing/deserializing the java/lang/String class with Zing VM on one
side and a VM which has a String class with the offset and count
fields.
java.lang.RuntimeException: Field hash null is not available on
current classPath for class java.lang.String
2681
14.09.0.0
or
java.io.IOException: Current classpath has lesser fields on
java.lang.String than its original version
Solution: Use -XX:+UseJDK6CompatibleStringClass to use
a version of java/lang/String that is compatible with the String class
that has the offset and count fields.
Security adjustment made to internal method
sun.reflect.Reflection.getCallerClass(depth) for JDK 6 installations
where the depth parameter was not used correctly.
Affects: This only affects JDK 6. JDK 7 and JDK 8 are unaffected by
this change.
2650
14.09.0.0
Background: sun.reflect.reflection.getCallerClass(depth) is
deprecated, not recommended, and has been disabled by default.
Calling this function results in an UnsupportedOperationException
being thrown, unless you include the command line option "Djdk.reflect.allowGetCallerClass=true”.
Solution: When enabled, the Class returned by this method now
matches behavior in JDK 7 and historical releases of JDK 6. If
possible, use the replacement function,
sun.reflect.reflection.getCallerClass(void), instead.
2426
14.09.0.0
Crash in __popcountdi2 when run with libgcc version 4.8.2
2404
14.09.0.0
Using -XX:+HeapDumpOnOutOfMemoryError does not create a
heap dump.
2359
14.09.0.0
Crash when using saved profile on restart with -XX:
Azul Systems
Confidential and Proprietary
30
Zing Release Notes
Release
Bug ID
Description
Resolved
ProfileLogIn.
2229
2106
14.09.0.0
Crash in PhaseIterGVN::transform_old
14.09.0.0
Maximum checkpoint sync time exceeded following a CTRL-C when
ZVM doing a heap dump following OutOfMemoryError (when using
option -XX:+HeapDumpOnOutOfMemoryError
-XX:AutoBoxCacheMax does not work with ZVM.
1844
14.09.0.0
Background: When using the command line option, XX:AggressiveOpts, this fix automatically increases the value of
AutoBoxCacheMax from the default value of 128 to 20000.
AutoBoxCacheMax specifies the size of the java.lang.Integer autobox
cache (property: java.lang.Integer.IntegerCache.high).
Workaround (available for JDK 1.7 only): Replace: XX:AutoBoxCacheMax=<nnn> With: Djava.lang.Integer.IntegerCache.high=<nnn>
Unable to generate a heap dump (using SIGQUIT) when ZVM forked
from an Oracle JVM process
1709
14.09.0.0
Background: The Oracle JVM masks SIGQUITs in the process and
enables the signal to be received only by the VMThread. When the
ZVM is forked it inherits the process signal mask from the Oracle JVM.
Solution: Use -XX:+ResetSignalMaskAtLaunch to clear the
signal mask to enable SIGQUITs.
Zing Virtual Machine Known Issues
The following table lists known issues that are known issues as of Zing Virtual Machine 15.05.0.0. The
Bug IDs listed are Azul internal reference numbers.
Bug Release
ID
Known
Description
For users of the technical preview release com.azul.zing.management MXBean
3552 15.02.0.0 feature, accessing the unsupported threshold and notification operations for classes
in the com.azul.zing.management package will generate an
Azul Systems
Confidential and Proprietary
31
Zing Installation and Administration Guide
Bug Release
ID
Description
Known
UnsupportedOperationExceptionNoStackTrace exception (package
com.azul.zing.impl.management and base class
java.lang.UnsupportedOperationException). When implementation of the
threshold/notifications mechanism is complete, this exception will no longer be
thrown.
Nashorn benchmark STALLS after encountering data error processing profile log
2820 14.09.0.0 error (error: 101) while running Nashorn benchmarks with ReadyNow! enabled.
ZVM running in environment with multiple scheduling policies, RR, BATCH, and
2602 14.09.0.0 OTHER, encounters checkpoint sync timeout in thread running with BATCH policy.
1980 14.09.0.0 JNI calls are faster on Oracle 1.6 vs. Zing.
Zing System Tools Resolved Issues
The following table lists known issues that are resolved as of Zing System Tools 5.7.11. The Bug IDs
listed are Azul internal reference numbers.
Release
Bug ID
Resolved
4116
5.7.11
4105
5.7.11
4081
5.7.11
3977
5.7.11
Description
Add support for Oracle Linux 5, 2.6.39-400.212.1.el5uek.x86_64, 2.6.39400.209.1.el5uek.x86_64, and 2.6.32-300.11.1.el5uek.x86_64
Add support for Oracle Linux 6 kernel, 2.6.39-400.215.11.el6uek.x86_64
Add support for Oracle Linux 5 and 6 kernels, 2.6.39-400.17.2.el5uek.x86_
64 and 2.6.39-400.17.2.el6uek.x86_64
Add support for RHEL/CentOS 7.1, kernel 3.10.0-229.1.2.el7.x86_64
Provide option to disable cstate check.
3865
5.7.11
Azul Systems
Note: To disable cstate check. Create a file, disable_cstate_check, in
/etc/zing folder and configure zing-memory.
Confidential and Proprietary
32
Zing Release Notes
Release
Bug ID
Resolved
Description
Not able to access license server on Chrome, Error code: ERR_SSL_
VERSION_OR_CIPHER_MISMATCH
3942
3842,
5.7.10
Note: If you are using a pool server. Upgrade existing pool server to
preserve existing host configurations
5.7.10
Add support for Oracle Linux 6 kernel 2.6.39-400.214.4.el6uek.x86_64 and
2.6.39-400.214.3.el6uek.x86_64
3760
5.7.10
Add support for Oracle Linux 5 kernel 2.6.39-400.246.2.el5uek.x86_64
3256
5.7.10
zing-licensed --display_system_info displays ERROR: (ioctl failed)
243
5.7.10
Verifying a UUID license sometimes fails with ERROR: getvmid binary
has invalid checksum.
5.7.9
Support for Oracle Linux Server release kernel version 2.6.32-504.el6.x86_
64, 2.6.32-300.39.2.el6uek.x86_64, and 2.6.39-200.24.1.el6uek.x86_64.
3162
5.7.8
Removed az_mmap, az_munmap, az_mremap, semaphore_create and
semaphore_destroy hooks from CHeapLeakDetection
3158
5.7.8
Crash in verify() when using custom libssl.so
3074
5.7.8
Error: Implicit declaration of function ‘preempt_enable_no_resched’ when
installing ZST
2682
5.7.7
On RHEL 7, systemctl shows failure for zing-licensed status, however
service command indicates the process is running.
4004
3585,
3650
RHEL 7 ZST uninstall displays warning messages. Ignore these
messages.
2564
5.7.7
2210
5.7.6
Azul Systems
warning: file /var/run/zing-licensed: remove failed:
No such file or directory
After a zing app is killed/terminated, /tmp/azlicdata not cleaned up on
ReiserFS
Confidential and Proprietary
33
Zing Installation and Administration Guide
Release
Bug ID
Resolved
Description
Crash in _runLocalDestructors in Tibco code when run with ZST.
1982
5.7.6
Background: On prior releases, the crash occurs in any application if
destructors are registered with pthreads and the destructors consume more
than 8k of stack.
Workaround: Do not limit the pthread stack size to PTHREAD_STACK_
MIN . It can then assume the default pthread stack size or the size that you
set in native code.
1487
5.7.6
The Zing core bundler now produces encrypted core files. A passphrase file
is produced for local decryption. Only Azul Systems and those with the
unique corresponding passphrase can decrypt the core file.
1149
5.7.6
No fonts installed by default in jre/lib. ZVM 5.10.1 or later required.
701
5.7.6
Linux kernel crash at az_pmem.c:1667.
1562
5.7.5
An incorrect error message is displayed if Zing memory is stopped and you
are using partitions when launching.
1490
5.7.4
ZST 5.7.3 system-config-zing-memory fails on SLES 11 SP2 kernel
3.0.101
1301
5.7.4
Startup crash accessing thread stack page.
1011
5.7.2
EFS - Enhance startup and shutdown scripts to accept license and
pmem.conf
992
5.7.2
Shutdown of Cassandra 2.0.1 leaves defunct process.
843
5.7.2
Warning messages seen when installing/upgrading ZST 5.7.x and port
*3824 is not in use.
643
5.7.2
zing-core-bundler does not work with Amazon Linux if hs_err is supplied.
640
5.7.2
Can't enable core pattern on Amazon Linux.
620
5.7.2
When using Amazon Linux OS possible message: libssl.so.6: cannot open
shared object file: No such file or directory.
Azul Systems
Confidential and Proprietary
34
Zing Release Notes
Release
Bug ID
Description
Resolved
789
5.7.1
Uninstalling or restarting versions 5.5.x Zing license package deleted the
crontab entries.
568
5.7.0
insmod error when installing on Amazon instances
543
5.7.0
Script name for Zing core bundling has changed to zing-core-bundler. The
.pl extension has been dropped.
512
5.7.0
zing_mm: Cannot mknod: Operation not permitted when extracting core file
511
5.7.0
Multiple nginx processes running after uninstalling ZST
464
5.7.0
Missing description for ZST package on Ubuntu
439
5.7.0
5.7 ZST does not support older (but still supported) ZVMs
389
5.7.0
Failed to enable HTTPS agent configuration! this happens if /usr/sbin is not
set in the PATH
343
5.7.0
Installation stuck during "zing-memory start”
311
5.7.0
Issues with automatic core bundling on RHEL 5.X (especially with ulimit -c
0)
256
5.7.0
Port requirements for ZST install
242
5.7.0
Installation fails because of ld: not found
225
5.7.0
ZST install requires openssl098
327
5.7.0
Core bundler script failing
282
5.7.0
ulimit -c not honored by zing-core pattern
31659
5.7.0
Blank screen displayed when session expired and user tries to login again
31763
5.7.0
User should be logged out when DB goes down
Azul Systems
Confidential and Proprietary
35
Zing Installation and Administration Guide
Zing System Tools Known Issues
The following table lists known issues that are known issues as of Zing System Tools 5.7.11. The Bug
IDs listed are Azul internal reference numbers.
Bug
Release
ID
Known
4358
5.7.11
Description
Uninstalling ZST 5.7.11 on Amazon Linux displays a message. Ignore this
message:
/bin/cat: /etc/redhat-release: No such file or directory
If ZST is installed on Ubuntu 10.04 or Ubuntu 11.04 with the ZST DKMS installers
and zing-core-pattern is turned ON, Decrypted zing cores files are zero bytes.
2943
5.7.7
Workaround: Turn off Zing Core Pattern using
# system-config-zing-core-pattern disable
2156
243
5.7.7
5.7.6
Status of zing-licensed process not displayed correctly on Sles11 SP1
Verifying a UUID license sometimes fails with ERROR: getvmid binary has invalid
checksum
Workaround: Reinstall ZST and verify license
2406
5.7.6
Zing processes still running after uninstall when both relocated binaries and regular
binaries are installed. Issue may arise under deployment control systems like EFS.
2337
5.7.6
Cannot renew license through the OEM UI.
2195
5.7.6
libpcre is not required for ZST on Ubuntu even though dpkg -p prints this information
1486
5.7.6
Can bundle Zing cores with non matching executable
Warning messages seen on MRG and Amazon Linux kernels; kernel WARNING:
at kernel/trace/ftrace.c:1583
Work around: Login as root and run the following commands:
998
5.7.6
mount -t debugfs none /sys/kernel/debug
echo 0 > /sys/kernel/debug/tracing/tracing_on
echo nop > /sys/kernel/debug/tracing/current_tracer
Azul Systems
Confidential and Proprietary
36
Zing System Requirements
Bug
Release
ID
Known
Description
1002
5.7.6
Crash with ERROR: Module zing_mm is in use,zing-memory: ERROR: rmmod
zing_mm.ko failed (error 1) Fatal error: os::safeSystem: command '/etc/init.d/zingmemory restart' failed
442
5.7.6
zing-ps shows a misleading message when given the pid of a dead process.
Zing System Requirements
This guide provides a complete list of system requirements for installing and configuring each of the
components, ZST, ZVM, ZVision, ZVRobot, and Zing licensing. This includes hardware and software
requirements.
Zing Components
Each of the Zing components are installed on machines relative to the ZVM host machine, as listed.
l
ZVM and ZST are installed on the same machine. ZVM requires ZST to use the Zing
memory management features.
The ZVM package software are packaged as standard .sh, .rpm, or .deb. The ZST
package software are packaged as standard .rpm or .deb.
l
l
Zing license file is installed on the ZVM host.
Zing Pool license server is installed on a separate machine from the ZVM host machines
that will be in its license pool. It is a Java application and requires a ZVM instance to run.
The Zing Pool license server is packaged as a .sh. A specific Pool license contract with
Azul is required to use this option.
l
ZVision and ZVRobot are the profiling and diagnostics tools for the ZVM processes. They
are automatically installed with the ZVM component.
Zing Machine Requirements
The system that components, ZVM, ZST, Zing license components, ZVision, and ZVRobot are
installed on has the following requirements:
l
Operating System Requirements
l
CPU Requirements
Azul Systems
Confidential and Proprietary
37
Zing Installation and Administration Guide
l
Memory Requirements
l
Hard Disk Storage Space Requirements
Operating System Requirements
The components ZVM, ZST, and the Zing license server can be installed on machines running the
following operating systems using .sh, .rpm, or .deb installers, as appropriate.
l
Notes
Ensure that OpenSSL 0.9.8 or later is installed.
l
On RHEL 5.x, CentOS 5x., or Oracle Linux 5 systems, also install the Development
Tools Package.
l
All RHEL installations require a registered copy of RHEL and a valid Red Hat Network
(RHN) account user name and password.
l
l
Ensure that binutils are installed.
In virtual machine environments, paravirtualization is not supported. Only HVM
(Hardware-assisted Virtual Machine) cluster instances are supported.
The following tables list the supported operating systems, kernel versions, and for Amazon EC2
Instances, the Amazon Machine Image (AMI) identification code. Where multiple kernel versions are
listed, any from the list are supported with the associated operating system.
RHEL or CentOS
Operating System
Kernel Version
Supported As Of ZST Version
RHEL/CentOS 7.1
3.10.0-229.1.2.el7.x86_64
v5.7.11
RHEL/CentOS 7
3.10.0-123
v5.7.6
RHEL/CentOS 6.6
2.6.32-504
v5.7.8
RHEL/CentOS 6.5
2.6.32-431
v5.7.3
RHEL/CentOS 6.4
2.6.32-358
v5.7.0
RHEL/CentOS 6.3
2.6.32-279
v5.7.0
RHEL/CentOS 6.2
2.6.32-220
v5.7.0
RHEL/CentOS 6.1
2.6.32-131
v5.7.0
Azul Systems
Confidential and Proprietary
38
Zing System Requirements
RHEL or CentOS
Kernel Version
Operating System
Supported As Of ZST Version
RHEL/CentOS 6.0
2.6.32-71
v5.7.0
RHEL/CentOS 5.10
2.6.18-371
v5.7.6
RHEL/CentOS 5.9
2.6.18-348
v5.7.0
RHEL/CentOS 5.8
2.6.18-308
v5.7.0
RHEL/CentOS5.7
2.6.18-274
v5.7.0
RHEL/CentOS 5.6
2.6.18-238
v5.7.0
RHEL/CentOS 5.5
2.6.18-194
v5.7.0
RHEL/CentOS 5.4
2.6.18-164
v5.7.0
RHEL/CentOS 5.3
2.6.18-128
v5.7.0
RHEL/CentOS 5.2
2.6.18-92
v5.7.0
Oracle Linux Server Operating System
Kernel Version
Supported As Of
ZST Version
Oracle Linux Server
2.6.39-400.212.1.el5uek.x86_64
v5.7.11
Oracle Linux Server
2.6.39-400.209.1.el5uek.x86_64
v5.7.11
Oracle Linux Server
2.6.32-300.11.1.el5uek.x86_64
v5.7.11
Oracle Linux Server
2.6.39-400.215.11.el6uek.x86_64
v5.7.11
Oracle Linux Server
2.6.39-400.17.2.el5uek.x86_64
v5.7.11
Azul Systems
Confidential and Proprietary
39
Zing Installation and Administration Guide
Oracle Linux Server Operating Sys-
Supported As Of
Kernel Version
tem
ZST Version
Oracle Linux Server
2.6.39-400.17.2.el6uek.x86_64
v5.7.11
Oracle Linux Server
2.6.39-400.214.3.el6uek.x86_64
v5.7.10
Oracle Linux Server
2.6.39-400.214.4.el6uek.x86_64
v5.7.10
Oracle Linux Server
2.6.39-400.246.2.el5uek.x86_64
v5.7.10
Oracle Linux Server
2.6.39-200.24.1.el6uek.x86_64
v5.7.9
Oracle Linux Server
2.6.32-300.39.2.el6uek.x86_64
v5.7.9
Oracle Linux Server
2.6.32-504.el6.x86_64.x86_64
v5.7.9
Red Hat or CentOS
Operating System
Kernel Version
Supported As Of ZST Version
Messaging Realtime Grid (MRG)
RHEL, RHEL MRG, CentOS
3.6.11.2-rt33.39.el6rt.x86_64 v5.7.3
RHEL, RHEL MRG, CentOS
3.0.36-rt57.66.el6rt.x86_64
SLES Operating System
Kernel Version
v5.7.3
Supported As Of ZST Version
SLES 11 SP3
3.0.101-0.15
v5.7.6
SLES 11 SP3
3.0.101-0.21
v5.7.5
SLES 11 SP3
3.0.93-0.8
v5.7.3
SLES 11 SP3
3.0.76-0.11
v5.7.0
Azul Systems
Confidential and Proprietary
40
Zing System Requirements
SLES Operating System
Kernel Version
Supported As Of ZST Version
SLES 11 SP2
3.0.101-0.7.17
v5.7.4
SLES 11 SP2
3.0.13-0.27
v5.7.0
SLES 11 SP1
2.6.32.59-0.7
v5.7.3
SLES11 SP1
2.6.32.12-0.7
v5.7.0
Ubuntu Operating System
Kernel Version
Supported As Of ZST Version
Ubuntu 12.04
3.5.0-34-generic
Ubuntu 12.04
3.2.0-23-generic, 3.2.0-31-generic v5.7.0
Ubuntu 11.04
2.6.38-15-generic
v5.7.0
Ubuntu 10.4
2.6.32-38, 2.6.32-38-generic
v5.7.0
Debian Operating Sys-
Kernel Ver-
tem
sion
v5.7.1
Supported As Of ZST Version
Debian Wheezy 7.6, 7.7 3.2.0-4-amd64 v5.7.8
Amazon EC2 Instances
Kernel Version
AMI ID
Supported As Of ZST
Version
Amazon Linux
3.4.37-40.44
ami-a73758ce
v5.7.0
Amazon Linux
3.4.43-43.43
ami-a73758ce
v5.7.0
Azul Systems
Confidential and Proprietary
41
Zing Installation and Administration Guide
Amazon EC2 Instances
Kernel Version
AMI ID
Supported As Of ZST
Version
Amazon Linux
3.4.48-45.46
ami-a73758ce
v5.7.0
Amazon Linux
3.4.57-48.42
ami-a73758ce
v5.7.0
3.10.0-123
ami-785bae10
v5.7.6
RHEL 6.5 - Amazon Cloud 2.6.32-431
ami-63b6910a
v5.7.3
2.6.32-358
ami-9d0b64f4
v5.7.0
3.0.101-0.8-default
ami-e572438c
v5.7.5
3.2.0-54-virtual
ami-b93264d0
v5.7.3
RHEL 7.0 – Amazon
Cloud
RHEL 6.4 - Amazon
CloudAmazonCloud
SLES 11 SP3 Amazon
Cloud
Ubuntu 12.04 Virtual
AmazonCloud
DKMS Supported Operating Systems for ZST
ZST can be installed using a Dynamic Kernel Module Support (DKMS) framework. Given that DKMS is
used to generate Linux kernel modules, Azul cannot and does not test all possible operating systems.
Azul only tests selected operating systems. However it is expected, provided all the installation prerequisites are met, that ZST can be installed on most RHEL, CentOS, Oracle Linux, SUSE, and
Ubuntu systems.
Notes
While this feature is tested and validated for a selected set of operating system versions,
there are always risks. Test thoroughly in your staging environment before going into
production.
CPU Requirements
The Zing components ZVM, ZST, and the Zing license server can be installed on machines running the
following CPU types.
l
64-bit x86 CPUs
o
Intel® Xeon® server class processors released 2009 and later.
If your are using power efficiency chips, you must disable the Intel idle driver.
Azul Systems
Confidential and Proprietary
42
Zing System Requirements
o
AMD Opteron™ server class processors released 2010 and later.
Note: Dual socket systems are preferred. The single-chip 23xx systems, which have 4
cores, and the single-chip 41xx systems, which have up to 6 cores, might not be
sufficiently scalable.
l
6+ physical cores recommended (4 minimum)
Increase the number of ZVM host systems for applications that have more threads.
Memory Requirements
The Zing components require the following amount of RAM on the ZVM machine.
l
64+ GB RAM recommended
16-32 GB RAM minimum, depending on the application memory requirements, for
demonstration purposes only. Minimum is not sufficient for performance or scalability
production testing of large or memory consuming enterprise applications.
Increase the memory as needed to accommodate the number and size of your Java
application/Zing Virtual Machine (ZVM) instances.
The Pool license server requires the following amount of RAM on the license server machine.
l
8 GB RAM recommended (4 GB minimum)
Hard Disk Storage Space Requirements
The Zingcomponents require the following amount of disk space on the ZVM machine.
l
32 GB free disk drive space recommended for your ZVM instances to run Java applications
8 GB minimum configuration is a spinning platter hard drive or enterprise quality SSD.
Installation to a USB flash device is not recommended for production use.
l
600 MB additional for JDK functions
The Pool license server requires the following amount of disk space on the license server machine.
l
10 GB free disk space recommended (5 GB minimum)
Browser Requirements
ZVision and ZVRobot are accessible from the listed supported Web browsers.
ZVision is accessible from supported Web browsers with access to the application host running the
ZVM instance. ZVRobot output is viewable from supported Web browsers with network access to the
file system where the ZVRobot files are located. Supported browsers include:
l
Microsoft® Internet Explorer 6 (or later) on Windows 2000, Windows XP, Windows Vista, or
Windows 7
Azul Systems
Confidential and Proprietary
43
Zing Installation and Administration Guide
l
Mozilla Firefox 1.0.3 (or later) on all supported operating systems
l
Apple Safari™ 2.0 (or later) for Mac OS® X
Zing license server functions are managed from the following supported Web browsers:
l
Microsoft® Internet Explorer, version 9
l
Mozilla Firefox 1.0.3 (or later) on all supported operating systems
l
Google Chrome 10.0.x (or later)
Listening Connection Requirements
ZVision and ZVRobot require ZVM host connection information:
l
ZVM host IP address and ZVM host ARTA port
The Azul Run Time Analysis (ARTA) port is the application host port specified with the XX:ARTAPort command line. See Configuring ZVision in Using Zing Vision and
Configuring the Zing Virtual Machine to Use ZVRobot in Using Zing Vision Robot.
The ARTA port provides internal API communication between ZVision and ZVM instances.
ZVision requires:
l
ZVision host IP address and ZVision browser listening port
ZVision is automatically installed on the same machine as ZVM when ZVM is installed. You
can connect a ZVision installed on one machine to a ZVM on another machine. The ZVision
listening port must be configured. See Configuring the ZVision Server in Using Zing Vision .
Zing License Server requires:
l
8443, Web port, TCP protocol to communicate with the ZVM host.
Ensure port 8443 is not used by any other service on the ZVM host. If this is not possible,
edit the standalone.xml file, <socket-binding name="https" port="8443"/>
setting or reconfigure the license server. See Installing and Using Pool Licensing.
l
l
9999 and 4447, management port and remote port, respectively. For internal communication
within the license server.
27017, database port, for license server database (mongoDB).
Zing Component Version Compatibility
This table lists the component versions that have been tested and are compatible. All component
versions listed are compatible with each other.
Azul Systems
Confidential and Proprietary
44
Zing System Requirements
ZVM Version
15.05.0.0
ZST Version
5.7.11
5.7.11, 5.7.10, 5.7.9, 5.7.8, 5.7.7, 5.7.6, 5.7.5,
15.02.1.0, 15.02.0.0
5.7.4, 5.7.3, 5.7.2, 5.7.1, 5.7.0
14.11.1.0, 14.11.0.0
5.7.11, 5.7.10, 5.7.9, 5.7.8, 5.7.7, 5.7.6
14.09.2.0, 14.09.1.0, 14.09.0.0,
5.10.1, 5.10.0,
5.9.3, 5.9.2, 5.9.1, 5.9.0,
5.7.11, 5.7.10, 5.7.9, 5.7.8, 5.7.7, 5.7.6, 5.7.5,
5.8.0,
5.7.5, 5.7.4, 5.7.3, 5.7.2, 5.7.1, 5.7.0,
5.7.4, 5.7.3, 5.7.2, 5.7.1, 5.7.0
5.6.1,
5.5.4, 5.5.1
Zing ZST and API Versions
Some ZVM and ZST features, such as DumpMiniCore and AzMemPartition, require a specific ZST API
level. The table below lists the ZST API level for each ZST version.
ZST Version
ZST API
5.7.11
6b
5.7.10, 5.7.9, 5.7.8, 5.7.7, 5.7.6
6a
5.7.5
5f
5.7.4, 5.7.3, 5.7.2, 5.7.1, 5.7.0,
5.2.7, 5.2.6
5e
5.2.5, 5.2.4, 5.2.3
5d
5.2.2, 5.2.1, 5.2.0
5c
5.1.3, 5.1.2, 5.1.1, 5.1.0
5b
Azul Systems
Confidential and Proprietary
45
Zing Installation and Administration Guide
Installation Quick Start
To configure your system to run your Java applications using the Zing platform, perform the following
steps:
1. Ensure your environment meets the system requirements.
2. Download the ZST and ZVM installation files.
3. Install the Zing System Tools (ZST).
4. Configure Zing memory management.
5. Install Zing Licensing.
6. Install the Zing Virtual Machine (ZVM).
7. Run your Java applications with Zing.
Ensure your environment meets the system requirements.
1. Review Zing System Requirements for a complete list of Zing requirements, including: supported
CPUs, memory requirements, and operating system versions.
2. Ensure the following packages are installed. This includes: OpenSSL 0.9.8 or later, development
tools, and binutils.
System
RHEL, CentOS,
supported Oracle Linux 6
RHEL 5.x, CentOS 5.x,
supported Oracle Linux 5
RHEL 7
Commands to Install Packages
# yum localinstall --nogpgcheck
libssl<version>binutils lsof curl
# yum localinstall --nogpgcheck libssl<version>
binutils lsof curl
# yum groupinstall 'development Tools'
# yum localinstall --nogpgcheck
libssl<version> binutils lsof curl
# yum install perl-Sys-Syslog.x86_64
SLES
# zypper install libssl<version> binutils lsof
curl
Ubuntu
# apt-get install libssl<version> binutils lsof
curl
Azul Systems
Confidential and Proprietary
46
Installation Quick Start
3. If you are using a Nehalem power efficiency chip set, disable the Intel idle driver. See Installing and
Configuring Zing System Tools for directions.
4. Ensure that OS settings are appropriate for performance sensitive applications.
Parameter Setting
Commands to Install Packages
1. Edit the /etc/sysctl.conf file to add
SWAP to 0
vm.swappiness=0
2. Run sysctl -p
1. Edit the /etc/sysctl.conf file to add vm.min_
vm.min_free_
kbytes
to 1 GB or more
free_kbytes=1048576
2. Run sysctl -p
1. Edit the grub configuration file to add transparent_
Disable
transparent_
hugepages
hugepage=never to the kernel boot line.
2. Reboot the server.
Download the ZST and ZVM installation files.
If you are using FTP, ensure the file transfer protocol is set to binary mode.
System
RHEL,
CentOS,
supported
Oracle
Linux, or
SLES
ZST
ZVM
zing-jdk<version>-<zvm_
version>-<platform>.rpm
or
zing-zst-<kernel_version>.<zst_
version>.<platform>.rpm
zing-zst_<kernel_version>server-<zst_version>_
<platform>.deb
Ubuntu
zing-jdk<version>_
<zvm_
version>_
<platform>.deb
or
or
zing-zst_<kernel_version>desktop-<zst_version>_
<platform>.deb
Azul Systems
zing-jdk<version>-<zvm_
version>-<platform>.sh
zing-jdk<version>-<zvm_
version>-<platform>.sh
Confidential and Proprietary
47
Zing Installation and Administration Guide
System
ZST
ZVM
If you are using Pool licenses:
1. Store the Pool license zip file, <your_company>-pool.zip you received by email.
2. Download the Pool license server, zing-license-pool-server-<version>.sh.
Install the Zing System Tools (ZST).
Run the operating system appropriate installation command, as root or use sudo.
Operating System
Installation Command
RHEL, CentOS,
supported Oracle
Linux
# sudo yum localinstall --nogpgcheck zing-zst<version>.rpm
SLES
# sudo zypper install zing-zst-<version>.rpm
Ubuntu
# sudo dpkg -i zing-zst-<version>.deb
Configure Zing memory management.
1. Run the Zing memory configuration wizard.
2. Type y to accept all defaults.
# /usr/sbin/system-config-zing-memory
Install Zing Licensing
Standalone Zing License
Copy your Zing licensing authorization file, license to /etc/zing/directory.
Azul Systems
Confidential and Proprietary
48
Installation Quick Start
Install the Pool Server
1. Install the Pool Server.
a. Run the command
$ zingserver/zing-license-pool-<version>.sh
b. Launch the Pool license server Web interface at: https://<license_server_ip_
address>:8443
c. Add the Pool license. Select Server license > Add > Choose File > Add.
2. On the ZVM host, run the listed command and confirm to proceed:
# zing-licensed –-configure –-server <server_ip> --port <port_no>
For Amazon instances, use:
# zing-licensed –-configure –-amazonId –-server <server_ip> --port
<port_no>
Install the Zing Virtual Machine (ZVM).
Install using the shar file option or choose the appropriate OS-based command.
Operating System
Command
RHEL, CentOS,
supported Oracle
Linux
$ yum localinstall –-nogpgcheck ./ zing-jdk<version><zvm_version>-<platform>.rpm
SLES
$ zypper install ./zing-jdk<version>-<zvm_version><platform>.rpm
Ubuntu
$ dpkg -i ./zing-jdk<version>_<zvm_version>_
<platform>.deb
1. Run the command:
$ ./zing-jdk<version>-<zvm_version><platform>.sh
Shar option
2. Specify the location of the Linux JDK, at the prompt.
Location of <linux_type> JDK (<path>):
Prepare to run Zing
See Installing the Zing Virtual Machine, “Completing Post ZVM Installation Tasks,” for additional
details.
Azul Systems
Confidential and Proprietary
49
Zing Installation and Administration Guide
l
l
Apply JDK customizations you made locally to the standard Linux JDK.
Ensure the ulimit is unlimited for virtual memory, resident memory, and core file size.
Run the following command or add it to a system start command file:
$ ulimit -v unlimited -m unlimited -c unlimited
l
If you are running Oracle HotSpot or OpenJDK and using XX:+UseLargePages, ensure
there is sufficient memory allocated to each: Zing, hugepages, and Linux memory.
l
If your Java application requires access to any javax.crypto unlimited strength policy
files, ensure JDK configuration compatibility.
Run your Java applications with Zing
With Zing installation and configuration completed, run Java runtime applications on ZVM instances for
your JVM just as you would run a HotSpot Java implementation. See Using the Zing Virtual Machine
for a list of Java and Zing command line parameters. See or run man zing-installation to view
common installation errors.
To verify installation:
1. Run a simple Java command, for example:
$ <zing_java_directory>/bin/java -version
For quicker access, use the fully qualified path. For example:
$ /opt/zing/zing-jdk<version>-<zing_version>-<platform>/bin/java version
2. Look for the ZVM component reference in the system response, for example:
/opt/zing/zing-jdk1.8.0-14.09.0.0-33-x86_64/bin/java -version
java version "1.8.0-zing_14.09.0.0"
Zing Runtime Environment for Java Applications (build 1.8.0-zing_
14.09.0.0-b20)
Zing 64-Bit Tiered VM (build 1.8.0-zing_14.09.0.0-b33-productazlinuxM-X86_64, mixed mode)
Azul Systems
Confidential and Proprietary
50
Zing Installation and Configuration
Zing Installation and Configuration
Installing and Configuring Zing System Tools
This section describes how to install and configure Zing System Tools (ZST).
l
Installation – The ZST installation package contains a kernel loadable module and supporting
scripts and tools. This includes:
l
l
Zing Memory
l
Zing license daemon
l
Zing tools, including zing-ps
Configuration –
l
Zing requires that a portion of host system memory is set aside and managed independently
from Linux. This is configured using the system-config-zing-memory command.
l
Usage –
l
To launch ZVM instances, the Zing Memory must be configured and running, and the
license daemon must be running.
For Ubuntu 14.04 or Debian platforms, see the Installing Zing System Tools with DKMS.
Note:
Complete Prerequisites
Prior to installing ZST, complete the following steps to ensure your system can support ZST.
Note
ZST must be installed prior to installing ZVM.
1. Ensure your environment meets the system requirements.
See Zing System Requirements, for a complete list of Zing requirements, including: supported CPUs,
memory requirements, operating system versions, supported browsers, and listening ports.
2. Ensure the following packages are installed.
System
RHEL, CentOS,
supported Oracle Linux 6
Azul Systems
Commands to Install Packages
# yum localinstall --nogpgcheck
libssl<version>binutils lsof curl
Confidential and Proprietary
51
Zing Installation and Administration Guide
System
RHEL 5.x, CentOS 5.x,
supported Oracle Linux 5
RHEL 7
Commands to Install Packages
# yum localinstall --nogpgcheck libssl<version>
binutils lsof curl
# yum groupinstall 'development Tools'
# yum localinstall --nogpgcheck
libssl<version> binutils lsof curl
# yum install perl-Sys-Syslog.x86_64
SLES
# zypper install libssl<version> binutils lsof
curl
Ubuntu
# apt-get install libssl<version> binutils lsof
curl
Depending upon the operating system the required packages include:
l
OpenSSL 0.9.8 or later
l
Development tools – Download the package from the operating system website.
l
binutils – Are required to ensure that any core files, generated when a ZVM instance fails
abnormally, include the shared libraries that were in use at the time.
3. If your systems are using power efficiency chips, such as the Nehalem chip set, disable the Intel idle
driver. See Disabling the Intel Idle Driver.
4. To ensure that OS settings are appropriate for performance sensitive applications, apply the following
configuration settings.
l
SWAP – Turn this off, either by removing swap or by setting swappiness to 0. Best practice
removes swap.
l
vm.min_free – Set this to 1 GB or more. Best practice assigns more than 1 GB.
l
Transparent Huge Pages (THP) – Turn this off.
See Appendix A -- Zing Installation Prerequisites Details for information on performing these tasks.
Install Zing System Tools
The ZST installation package contains a kernel loadable module and supporting scripts and tools.
To install ZST:
1. Ensure your system is configured to support ZST, complete the steps in Complete Prerequisites.
2. Login to your system as root administrator or use sudo.
3. Download ZST installation package to your system <zst_install> directory.
Azul Systems
Confidential and Proprietary
52
Zing Installation and Configuration
The zing-zst package contains the kernel module and various tools. Only one version of
zing-zst may be installed at a time.
The ZST installation package is specific to the operating system version, service pack, and/or
kernel on the installation machine.
System
ZST Installation Package Format
RHEL,
zing-zst-<kernel_version>.<zst_version>.<platform>.rpm
CentOS,
supported For example:
Oracle
zing-zst-5e.2.6.32-5.7.2.0.10.el6.x86_64.rp
Linux
zing-zst-<kernel_version>.<zst_version>.<platform>.rpm
SLES
For example:
zing-zst-5e.2.6.32-5.7.2.0.12.slesl1.sp2.86_64.rpm
<zst_version>_<platform>.deb
zing-zst_<kernel_version>-desktop-<zst_version>_
<platform>.deb
Ubuntu
For example:
zing-zst_5e.2.6.32.x86.64-server-5.7.2.0.10_
amd64.deb
zing-zst_5c-3.2.0.x86.64-desktop-5.7.2.0.10_
amd64.deb
Where –
<kernel_version> is 5e.2.6.32 or 5c-3.2.0
<zst_number> is 5.7.2.0.10
<platform> is el6.x86_64, sles11.sp2.86_64, or amd64
4. Install ZST using the appropriate command for your system, type:
System
RHEL, CentOS,
supported Oracle
Linux
Commands to Install Packages
# yum localinstall --nogpgcheck zing-zst<version>
For example
# sudo zing-zst-5e.2.6.32-5.7.2.0.10.el6.x86_
64.rpm
# zypper install zing-zst-<version>
SLES
Azul Systems
For example
Confidential and Proprietary
53
Zing Installation and Administration Guide
System
Commands to Install Packages
# sudo zing-zst-5e.2.6.325.7.2.0.10.sles11.sp2.86_64.rpm
# dpkg -i zing-zst_<version>.deb
Ubuntu
For example
# sudo dpkg -i zing-zst_5e.2.6.32.x86.64server-5.7.2.0.10_amd64.deb
The system responds.
You must configure Zing memory. Running 'system-config-zing-memory'
now is recommended.
5. Add /usr/sbin to any Zing executable path. For example:
To your appropriate profile file, add:
export PATH=/usr/sbin:$PATH
6. Configure Zing memory allocation. See Configure Zing Memory.
Configure Zing Memory
After ZST is installed you must configure Zing memory allocation. Zing requires a portion of host
system memory to be set aside and managed independently from Linux. The system-configzing-memory wizard assists with this.
The system-config-zing-memory creates or replaces any existing version of the
pmem.conf file.
Note:
Running the system-config-zing-memory wizard is required for first time installations.
This section describes creating a default configuration. To customize your Zing memory
configuration, see Modifying Zing Memory Configuration.
1. Complete the steps in Install Zing System Tools.
2. Configure Zing memory management using the system-config-zing-memory command.
Zing requires a portion of host system memory to be set aside and managed independently from
Linux. Use the system-config-zing-memory wizard for initial configuration.
From the command line, type:
# system-config-zing-memory
The system responds:
Welcome to the Zing memory configuration wizard by Azul Systems.
This wizard sets up the Zing memory configuration file
Azul Systems
Confidential and Proprietary
54
Zing Installation and Configuration
/etc/zing/pmem.conf.0 and initializes Zing memory. (Read the man
pages for zing, zing-zst, and zing-pmem-conf for more information
about this configuration file.)
By default, Azul recommends setting up your system with 25% Linux
memory and 75% Zing memory. Choose yes to accept this default, or no
to enter the wizard expert flow.
** accept default configuration
** (y)es or (n)o [default 'y']: Y
3. Accept default configuration settings. At the prompt, type: y.
** accept default configuration
** (y)es or (n)o [default 'y']:
Y
The system response lists the zing services that are started or restarted and memory
configuration information.
For example:
zing-memory: INFO: Restarting...
zing-memory: INFO: Stopping...
zing-memory: INFO: stop successful
zing-memory: INFO: Starting...
Info: azulPmemPages: 54454.
INFO: az_pmem_reserve_pages (num2mPages 54454) succeeded
INFO: az_pmem_fund_transfer (to 7, from 0, bytes 114198315008)
succeeded
INFO: az_pmem_fund_transfer (to 1, from 7, bytes 5708447744)
succeeded
INFO: az_pmem_fund_transfer (to 3, from 7, bytes 5708447744)
succeeded
INFO: az_pmem_fund_transfer (to 0, from 7, bytes 102781419520)
succeeded
Info: You can now run Java processes up to -Xmx98020m or -Xmx95g.
Info: Azul pmem initialized successfully.
zing-memory: INFO: start successful
zing-memory: INFO: restart successful
You have completed ZST installation!
Zing installation is complete when you install the required Zing license file and ZVM. Modifying Zing
memory usage is available if you do not want to use the default settings.
Completing Zing Installation
After you complete ZST installation, complete the following tasks to enable ZVM instances to run your
Java applications.
Azul Systems
Confidential and Proprietary
55
Zing Installation and Administration Guide
Install Zing License File
Install Zing Virtual Machine
Verify Zing Installation
Install Zing License File
After ZST is installed, install your Zing licensing.
A Zing license is required to start a Java application using a ZVM instance. Zing licenses are issued by
Azul. There are different Zing licensing options for getting the Zing license installed and ready for ZVM.
The option you use depends upon your contract with Azul.
l
Zing license (ZVM Host) – Standalone Zing licenses are installed on ZVM host machines.
These licenses are typically applied one license per ZVM host. All Zing installations require
the Zing license file. The Zing license daemon is installed with ZST.
See Installing Zing Standalone Licenses.
l
Zing Pool Server license – A Zing Pool server license allows you to use the Zing license
server to run an allocated number of Zing licenses concurrently among a set of ZVM hosts
that are configured to use Pool licenses.
See Installing and Using Pool Licensing .
Install Zing Virtual Machine
After ZST is installed and the Zing licensing is applied, install ZVM. See Installing the Zing Virtual
Machine for complete instructions.
Verify Zing Installation
After ZST is installed, configured, and started, and ZVM is installed, verify the completed installation.
1. Verify that your Zing license is installed.
Check /etc/zing/directory for your licensing authorization file, license.
l
If you are running ZVM instances on a standalone host, see Installing Zing Standalone
Licenses.
l
If you are configuring your ZVM host as a member of a Zing licensing pool, see Installing
and Using Pool Licensing.
2. Run a simple Java command, for example type:
$ <zing_java_directory>/bin/java -version
where <zing_java_directory> is the directory where the Zing /bin/java is
located. If you accept the ZVM installation defaults, this path is, for example:
$ /opt/zing/zing-<version>/bin/java -version
Azul Systems
Confidential and Proprietary
56
Zing Installation and Configuration
For quicker access, use the fully qualified path.
3. Look for the ZVM component reference in the system response, for example:
/opt/zing/zing-jdk1.8.0-14.09.0.0-33-x86_64/bin/java -version
java version "1.8.0-zing_14.09.0.0"
Zing Runtime Environment for Java Applications (build 1.8.0-zing_
14.09.0.0-b20)
Zing 64-Bit Tiered VM (build 1.8.0-zing_14.09.0.0-b33-productazlinuxM-X86_64, mixed mode)
See Troubleshooting Zing or run man zing-installation to view common
installation errors.
Modifying Zing Memory Configuration
If you completed all the steps in Installing and Configuring Zing System Tools Zing memory is
configured with default settings. Default configuration sets aside 75% of the physical memory of your
machine for use by ZVMs.
To customize the memory allocation, run the system-config-zing-memory command and do
not accept the default. Running this command automatically restarts the system.
When modifying the memory allocations for ZST, consider the following memory calculations:
/proc/meminfo.MemTotal = Linux Memory + Zing Memory
Zing Memory = Reservable + Contingency + Pause Prevention
Where –
l
Zing Memory – The ZVM uses Zing Memory to allocate the memory required for the Java
heap.
l
Reserved Memory – The amount of Reservable memory initially allocated to a specific ZVM
instance when the instance starts.
l
Contingency Memory – A backup reserve that Zing uses to temporarily allocate additional
memory to any ZVM instance running a Java application.
l
Pause Prevention Memory – A percentage of the Zing Memory set aside as part of Zing's
Generational Pauseless Garbage Collection (GPGC).
See Understanding Zing Memory Use for additional information about memory use. The following
shows an overview.
Azul Systems
Confidential and Proprietary
57
Zing Installation and Administration Guide
To modifying Zing memory allocation complete the steps in the listed sections:
1. Start the process.
Modify Zing Memory Allocation
2. Choose one of the following two allocation methods:
l
Use System Method to Allocate Zing Memory
If you use the System method, choose one of the following options:
l
l
Use Percentage of System Memory for Zing Memory
l
Use Exact Amount of System Memory for Zing Memory
Use Java Method to Allocate Zing Memory
3. Complete the process.
Modify Zing Memory Allocation
To modify Zing memory configuration using the wizard:
Note
The system-config-zing-memory creates or replaces any existing version of the
pmem.conf file.
1. Login to your RHEL system as root.
2. Ensure there are no running processes using Zing memory, type:
$ zing-ps
See “Using the zing-ps Tool” in Using Zing System Tools.
3. Run the Zing memory configuration wizard.
$ system-config-zing-memory
Azul Systems
Confidential and Proprietary
58
Zing Installation and Configuration
The system responds.
Welcome to the Zing memory configuration wizard by Azul Systems.
This wizard sets up the memory driver configuration file
/etc/zing/pmem.conf.0
and initializes the Zing memory. (Read the man pages for zing, zingzst, and zing-pmem-conf for more information about this
configuration file.)
By default, Azul recommends setting up your system with 25% Linux
memory and 75% Zing memory. Choose yes to accept this default, or no
to enter the wizard expert flow.
4. Do not accept the default configuration, type: N
** accept default configuration
** (y)es or (n)o [default 'y']: n
The system responds.
[ Current task: Sizing Zing memory / Choosing sizing method ]
Zing requires you to partition memory up front for exclusive use by
Java. (This is analogous to Linux hugepages, although Zing pages are
not interchangeable with hugepages.)
Would you like to decide how much memory to allocate to Zing based
on the total size of your system, or based on the total size of the
Java instances you expect to run?
** Enter (s)ystem or (j)ava heap size [default 's']:
5. Select a method for allocating Zing memory:
l
System – system sizing allocates memory as a percentage of the available host
system memory. The default value if 75% for Zing Fund memory.
To use this method, continue to Use System Method to Allocate Zing Memory.
l
Java – Java sizing allocates memory as a fixed value in MB based on the estimated
sum of all Xmx values that might be run concurrently.
To use this method, continue to Use Java Method to Allocate Zing Memory.
Use System Method to Allocate Zing Memory
To select the System method for allocating Zing Fund memory.
1. From the system-config-zing-memory wizard, specify System method, type: S
** Enter (s)ystem or (j)ava heap size [default 's']: s
The system responds.
[ Current task: Sizing Zing memory / Choosing system sizing method ]
Do you want to allocate a percentage of your total host system
memory to Zing, or would you prefer to specify an exact amount?
** Enter (p)ercentage or (e)xact [default 'p']:
Azul Systems
Confidential and Proprietary
59
Zing Installation and Administration Guide
2. Select a memory allocation method:
l
Percentage – allocates a percentage of the total host system memory.
To use this method, continue to Use Percentage of System Memory for Zing Memory.
l
Exact – allocates a specific value in MB of memory. This is based on the estimated maximum
Xmx values running concurrently.
To use this method, continue to Use Exact Amount of System Memory for Zing Memory.
Use Percentage of System Memory for Zing Memory
To specify the allocated amount as a percentage of the total host system memory.
1. From the system-config-zing-memory wizard, specify the allocation method, type P
** Enter (p)ercentage or (e)xact [default 'p']: p
The system responds with the next configuration prompt.
2. Specify the percentage value to use, type a percentage value. The default is %75.
** Enter percentage of total memory to dedicate to Zing [default
'75']:
The system responds with the next configuration prompt.
3. Continue to Specify Contingency Memory Pool.
Use Exact Amount of System Memory for Zing Memory
To specify allocation amount as an exact value:
1. From the system-config-zing-memory wizard, specify the exact method, type: e
** Enter (p)ercentage or (e)xact [default 'p']: e
The system responds.
[ Current task:
Sizing Zing memory / Choosing specific size ]
Please specify the amount of memory for Zing to use. (Note:
system has a total of 15g.)
examples:
your
16384m, 16g
** Enter memory to dedicate to Zing:
2. Specify the exact MB value to allocate to Zing memory.
For example:
** Enter memory to dedicate to Zing: 12g
The system responds with the next configuration prompt.
3. Continue to Specify Contingency Memory Pool.
Use Java Method to Allocate Zing Memory
To select the Java method for allocating Zing memory.
Azul Systems
Confidential and Proprietary
60
Zing Installation and Configuration
1. From the system-config-zing-memory wizard, specify the exact method, type: J
** Enter (p)ercentage or (e)xact [default 'p']: j
The system responds.
[[ Current task: Sizing Zing memory / Deriving size from Xmx ]
What is the sum of the Xmx values of all the Java processes you plan
to run concurrently?
** Enter sum of Xmx:
For example:
** Enter sum of Xmx: 2g
The system responds with the next configuration prompt.
3. Continue to Specify Contingency Memory Pool.
Specify Contingency Memory Pool
To specify the memory allocation for the Zing Contingency memory (also known as elastic memory)
pool:
1. From the system-config-zing-memory wizard, type the desired percentage. For example:
75. See Understanding Zing Memory Use for information about Contingency memory.
[ Current task: Sizing Zing memory / Sizing Contingency memory pool
]
Part of Zing memory is set aside in a common contingency memory pool
for all Azul Java processes to share. The contingency memory pool
exists as an insurance policy to allow a JVM instance to temporarily
avoid OOM behavior and grow beyond -Xmx.
What percentage of Zing memory would you like to dedicate to the
contingency memory pool?
** Enter percentage of Zing memory to be used for contingency memory
[default '5']:
2. Verify Zing Memory is restarted. View the system return from the last step to locate the following
lines. If you do not see them, see Starting or Stopping the Zing System Tools Services.
[ Current task:
driver ]
Saving configuration and initializing Zing memory
zing-memory: INFO: Restarting...
zing-memory: INFO: Stopping...
zing-memory: INFO: stop successful
zing-memory: INFO: Starting...
Info: azulPmemPages: 54454.
INFO: az_pmem_reserve_pages (num2mPages 54454) succeeded
INFO: az_pmem_fund_transfer (to 7, from 0, bytes 114198315008)
succeeded
Azul Systems
Confidential and Proprietary
61
Zing Installation and Administration Guide
INFO: az_pmem_fund_transfer (to 1, from 7, bytes 5708447744)
succeeded
INFO: az_pmem_fund_transfer (to 3, from 7, bytes 5708447744)
succeeded
INFO: az_pmem_fund_transfer (to 0, from 7, bytes 102781419520)
succeeded
Info: You can now run Java processes up to -Xmx98020m or -Xmx95g.
Info: Azul pmem initialized successfully.
zing-memory: INFO: start successful
zing-memory: INFO: restart successful
Installing Zing Standalone Licenses
This section describes the licensing required to launch ZVM, how to obtain it and install it.
Zing Licensing Overview
This section describes the Zing licensing required to allow Java runtime applications on instances of
ZVM processes, how to obtain the license and install it.
The standalone Zing licensing method requires the following:
l
Zing license file, license – Required on all ZVM hosts. It allows ZVM instances to start Java
applications. It is issued by Azul.
Installing Zing Licenses
Azul sends you a copy of the Zing license.
1. Obtain the license. Typically, the license file is emailed to your company contact.
2. Choose a method for launching the ZVM instance :
l
Copy the license file, license, to the /etc/zing/ directory of your ZVM host.
If you copy your license file to /etc/zing, you do not need to specify the Zing license in the
ZVM instance launch command.
l
Copy the license file to a location of your choice.
If you choose this option, then you must add -XX:ZingLicenseFile=<filename> to
your ZVM instance launch command.
Licenses allow ZVM instance launches up to the end of the day they are due to expire within
the local timezone specified in the license.
Depending upon your license agreement with Azul, you might see
messages showing your license is expired but the ZVM instance has
been allowed to launch. If you see these messages, contact your
Azul representative to extend your license.
Azul Systems
Confidential and Proprietary
62
Zing Installation and Configuration
Renewing Zing License
When your Zing license expires, you can request a new license. The Zing license file does not require
an upgrade process, simply replace your Zing license file, when you receive a new one.
1. When your Zing license is about to expire contact Azul to obtain a new license.
2. Follow the steps in Installing Zing Licenses.
Installing the Zing Virtual Machine
This section describes how to install the Zing Virtual Machine (ZVM) for Zing so it can be used to run
Java applications.
Install the Zing Virtual Machine
Note
The gzip and tar utilities are required to install the ZVM software packages on Linux
host platforms.
To install the ZVM software using the appropriate installer for your supported platform.
1. Ensure that the current and compatible version of ZST is installed and configured before installing
the ZVM component. See Installing and Configuring Zing System Tools.
2. Ensure that your Zing license is installed.
Check /etc/zing/directory for your licensing authorization file, license.
If you are running ZVM instances on a standalone host, see Installing Zing Standalone
Licenses.
If you are configuring your ZVM host as a member of a Zing licensing pool, see Installing and
Using Pool Licensing.
3. Download the installation package corresponding to your operating system and your version of Java.
The installer package includes the ZVM Development Kit and a Linux JDK.
a. Locate the ZVM software on the Zing download site.
Refer to the Zing download site or the release notes for specific download instructions.
b. If you are using FTP, ensure the file transfer protocol is set to binary mode.
c. Select the installation package for your supported host platform.
The ZVM self-extracting shell script is not dependent upon the operating system on the
installation machine. The ZVM .rpm and .deb installation packages are specific to the
operating system on the host machine. See Zing System Requirements for a list of
supported OS versions.
d. Verify that the file size is the same as shown on the download page.
The ZVM installation package formats are:
Azul Systems
Confidential and Proprietary
63
Zing Installation and Administration Guide
System
ZVM Installation Package Format
zing-jdk<version>-<zvm_version>.<platform>.sh
For example:
Shar
zing-jdk1.6.0_5.8.0.0-13.x86_64.sh
zing-jdk1.7.0-5.8.0.0-13.x86_64.sh
zing-jdk<version>-<zvm_version>.<platform>.rpm
RHEL or SLES
For example:
zing-jdk1.6.0-5.8.0.0-13.x86_64.rpm
zing-jdk1.7.0-5.8.0.0-13.x86_64.rpm
zing-jdk<version>_<zvm_version>_<platform>.deb
For example:
Ubuntu
zing-jdk1.6.0_5.8.0.0-13_amd64.deb
zing-jdk1.7.0_5.8.0.0-13_amd64.deb
The installer package has the following naming format:
zing-jdk<version>-<zvm_version>.<platform>
Where –
jdk<version> is 1.6.0 or 1.7.0
<zvm_version> is 5.8.0.0-13
<platform> is x86_64 or amd64
4. If you are using an .rpm or .deb installation package, login as root.
a. Enter the root shell.
b. Type the su command.
c. Enter the super-user password when prompted.
5. Run the appropriate command to install the ZVM component on the host machine where the Java
applications will be run.
Note
l
The gzip and tar utilities are required to install the ZVM software packages on Linux
host platforms.
For shar script installation:
$ ./zing-jdk<version>-<zvm_version>.<platform>.sh
For example:
$ ./zing-jdk1.6.0_5.8.0.0-13.x86_64.sh
Additional shar options include:
Azul Systems
Confidential and Proprietary
64
Zing Installation and Configuration
Option
Description
Install a full copy of the local version of the
Linux JDK along with the ZVM software
-cp
when using the full installation package.
Specify the directory to install the ZVM
software.
-dest <inst-dir>
Required. Specify the path where the
GNU tar executable is located.
Example:
-tar
./zing-jdk1.6.0_5.8.0.013.x86_64.sh -tar /opt
Optional. Specify the host compatible
version of the ZVM software to install.
<sys> options is:
linux64 – for Linux running on x86 (64bit). This is the default and the only
acceptable option.
-target <sys>
Example:
./zing-jdk1.6.0_5.8.0.013.x86_64.sh -target linux64
l
For RHEL systems:
$ yum localinstall –-nogpgcheck ./zing-jdk<version>-<zvm_
version>.<platform>.rpm
The contents of the RPM package are installed into the /opt/zing directory.
To examine the contents of the RPM package prior to installation, execute the rpm
command using the -qpl option. Using the format:
$ rpm -qpl ./zing-jdk<version>-<zvm_version>.<platform>.rpm
l
For SLES systems:
$ zypper install ./zing-jdk<version>-<zvm_
version>.<platform>.rpm
l
For Ubuntu systems:
$ dpkg -i ./zing-jdk<version>_<zvm_version>_<platform>.deb
When the installation completes, the following message displays:
Installation completed successfully.
Azul Systems
Confidential and Proprietary
65
Zing Installation and Administration Guide
Zing Virtual Machine version 5.8.0.0-13.x86_64, Java version 1.6.0
Installing VM for platform: linux64
Decompressing Zing VM...
ZVM files are located in /opt/zing, /etc/zing, and /usr/sbin.
6. For shar script installations, specify the location of the Linux JDK, at the prompt.
Location of <linux_type> JDK (<path>):
The local version of the Linux JDK must match the version of the ZVM software being installed
(such as 64-bit).
Completing Post ZVM Installation Tasks
Perform the following post installation steps as needed for your specific operating system.
l
Applying JDK Customizations
l
Setting an Unlimited ulimit
l
Ensuring Sufficient Memory
l
JDK Configuration Compatibility
Applying JDK Customizations
Install customizations made to the local version of the standard Linux JDK.
Make customizations to the ZVM JDK to match any done to the local version of the Linux JDK . For
example, if jar files were added to an ext directory of the local JDK, those files must also be added to
the ZVM JDK.
See Troubleshooting Zing or run man zing-installation to view common installation errors.
Setting an Unlimited ulimit
Ensure the ulimit is unlimited for virtual memory, resident memory, and core file size. At the
command line, type:
$ ulimit -v unlimited -m unlimited -c unlimited
Some operating systems default the ulimit to -v unlimited, others do not. The -v unlimited
value is required prior to launching a ZVM instance for the first time. The -m and -c options issue
warnings and do not prevent a ZVM instance from launching.
Set the ulimit prior to launching any ZVM instances or add it to a system start command file.
Ensuring Sufficient Memory
If you are running Oracle HotSpot or OpenJDK and using XX:+UseLargePages, you must ensure
there is sufficient memory allocated to each: Zing and Linux memory.
To ensure that OS settings are appropriate for performance sensitive applications, apply the following
settings:
Azul Systems
Confidential and Proprietary
66
Zing Installation and Configuration
l
Disable transparent_hugepages on your Linux system where you are running Zing.
l
Turn off SWAP either by removing swap or by setting swappiness to 0. Best practice
removes swap.
l
Set vm.min_free_kbytes to 1 GB or more. Best practice assigns more than 1 GB.
JDK Configuration Compatibility
If your Java application requires access to any javax.crypto unlimited strength policy files:
l
If they are included with your existing version of the JDK, copy them to the Linux JDK where the
ZVM software package is installed.
l
If you do not have an existing JDK, download the javax.crypto policy files from the Oracle
website directly and store them to the Linux JDK where the ZVM software package is installed.
This includes two jar files in the $JAVA_HOME/jre/lib/security directory:
US_export_policy.jar
local_policy.jar
If these files are not found, the Java application might experience the following exception:
java.lang.SecurityException: Unsupported keysize or algorithm
parameters at javax.crypto.Cipher.init(DashoA12275)
Verifying Zing Virtual Machine Installation
After the ZST component is installed and configured, and the Zing license and the ZVM component are
installed, verify the completed Zing installation.
1. Verify that your Zing license is installed.
Check /etc/zing/directory for your licensing authorization file, license.
l
If you are running ZVM instances on a standalone host, see Installing Zing Standalone
Licenses.
l
If you are configuring your ZVM host as a member of a Zing licensing pool, see Installing
and Using Pool Licensing .
2. Run a simple Java command, for example type:
$ <zing_java_directory>/bin/java -version
where <zing_java_directory> is the directory where the Zing /bin/java is
located. If you accept the ZVM installation defaults, this path is, for example:
$ /opt/zing/zing-jdk1.8.0_<zvm_version>/bin/java -version
For quicker access, use the fully qualified path. For example:
$ /opt/zing/zing-jdk1.8.0-14.09.0.0-33 -x86_64/bin/java -version
Azul Systems
Confidential and Proprietary
67
Zing Installation and Administration Guide
3. Look for the ZVM component reference in the system response, for example:
/opt/zing/zing-jdk1.8.0-14.09.0.0-33-x86_64/bin/java -version
java version "1.8.0-zing_14.09.0.0"
Zing Runtime Environment for Java Applications (build 1.8.0-zing_
14.09.0.0-b20)
Zing 64-Bit Tiered VM (build 1.8.0-zing_14.09.0.0-b33-productazlinuxM-X86_64, mixed mode)
See Troubleshooting Zing or run man zing-installation to view common
installation errors.
Using the Zing Virtual Machine
This section provides an overview of Azul Systems Zing component, Zing Virtual Machine (ZVM), and
describes the command line options that the ZVM supports.
Overview Zing Memory Management Processes
This section provides an overview of ZVM memory management processes. It covers the following
topics:
l
Generational Pauseless Garbage Collection (GPGC)
l
Zing Memory Allocation
l
Compatibility with HotSpot VM Command Line Options
Generational Pauseless Garbage Collection (GPGC)
The default Generational Pauseless Garbage Collector (GPGC) for the ZVM combines the benefits of
pauseless garbage collectors and generational collectors to achieve low consistent pause times
independent of Java heap size or amount of live objects.
GPGC uses the GC Pause Prevention pool to allow GC processes to allocate extra, temporary
memory to Java objects to prevent GC pauses. This is useful when the memory allocation rate for the
application exceeds the rate that the garbage collector can free memory. On GC cycle completion, the
extra memory returns to the pool and is made available for other GC processes.
See Garbage Collection Options for specific configuration information.
Zing Memory Allocation
The Azul Zing platform uses the ZVM to run Java applications, similar to a typical JVM running a Java
application. The significant difference is how memory is handled. Zing uses the ZST for managing the
memory of three components: Contingency memory, Pause Prevention memory, and the memory used
for GPGC.
Using Zing with GPGC and Contingency memory means that your Java application is no longer limited
to the maximum heap size specified on the Java command line when you started your Java application.
Azul Systems
Confidential and Proprietary
68
Zing Installation and Configuration
As an additional resource, GPGC might temporarily use Pause Prevention memory to prevent pauses
that are caused by lack of available clean pages.
See Understanding Zing Memory Use for additional information about how the memory resource is
used and assigned in a Zing environment.
Adjust the memory you configure to ensure you have sufficient memory to support ZVM instances:
l
Java heap use
l
Reserved memory
Using Azul technology, Java Application Execution uses all available memory without
consequences common to tasks such as garbage collection and heap memory
compaction. With the Zing platform you can allocate 100 GBs of memory to easily and
effectively enhance your enterprise production workloads.
Note
Compatibility with HotSpot VM Command Line Options
The ZVM recognizes the standard and non-standard command line options for the HotSpot VM that is a
core component of Java Platform, Standard Edition (J2SE) 6. See the HotSpot VM Options section, in
the Oracle developer site for detailed descriptions of the HotSpot VM command line options.
l
HotSpot command line options unsupported by ZVM
If the ZVM detects a HotSpot VM native command line option that it does not support, its
response can be set with the following option:
-Xnativevmflags:[ignore|error|warn]
The default option is ignore.
If -Xnativevmflags:error is specified and the ZVM detects an option that it does not
support, it does not launch and generates the following type of message:
HotSpot™ 64-Bit Tiered VM error: Unsupported native VM option
‘+UseParNewGC’
l
ZVM commands not implemented by HotSpot
For command line options that are not implemented by the HotSpot VM (including options
specific to the ZVM), the response is determined by the following option:
–Xflags:[ignore|error|warn]
The default setting is error.
The error setting ensures that unrecognized options are highlighted when the ZVM is used.
For example, if the incorrectly formatted option –XXMaxPermS=128m is detected, the ZVM
does not launch and generates the message:
HotSpot ™ 64-Bit Tiered VM error: Unrecognized VM option
‘MaxPermS=128m’
l
HotSpot or Open JDK XX:+UseLargePages
Azul Systems
Confidential and Proprietary
69
Zing Installation and Administration Guide
If you are running Oracle HotSpot or OpenJDK and using XX:+UseLargePages, you must
choose one of the following options to run Zing:
l
Disable the hugepages facility on your Linux system when you are running Zing.
l
Ensure there is sufficient memory allocated to each: Zing, hugepages, and Linux memory.
Command Line Options for the Zing Virtual Machine
This section describes Java command line options that are available in the ZVM. The following topics
are discussed:
l
Zing Virtual Machine Options
l
Garbage Collection Options
l
Reserved Memory Command
l
Statistics Monitoring Command
Zing Virtual Machine Options
Java command line options that control the interaction between ZVM and ZST begin with the prefix –
XX:. See Using Zing System Tools for more information about ZST. These options are summarized in
the following table.
ZVM Command Line Options1
Command Line Option
XX:JavaMemMax=<size>
See Note 2
Description
Default
Specifies the maximum amount of memory
that can be allocated to the ZVM process (the
Java heap). Units can be specified in kilobytes
(K or k), megabytes (M or m), or gigabytes (G
or g). For example:
-XX:JavaMemMax=2g
No
maximum
-XX:JavaMemMax=128M
-XX:JavaMemMax=128m
If this option is not set, the maximum is set to Xmx + Total Partition Memory.
1ZVM command line options are case sensitive.
2Contact Azul customer support for more information about this option.
Azul Systems
Confidential and Proprietary
70
Zing Installation and Configuration
Garbage Collection Options
Garbage collectors and the associated garbage collection options are described in the following table.
The default garbage collector is Generational Pauseless Garbage Collection (GPGC) that is specified
with the -XX:+UseGenPauselessGC command line option.
Garbage Collection (GC) Java Command Line Options
Command Line Option
Description
-XX:+UseGenPauselessGC
Generational Pauseless GC (GPGC) optimized for minimal
pause times.
-XX:PrintGCHistory=N
Set the number of historical GPGC cycle reports to save for
display in ZVision (default =50).
-XX:GCWarningHistory=N
Set the number of historical GPGC warnings to save for
display in the ZVision (default =50).
ExplicitGC Options
As of ZVM release 5.10.0, the default value the ZVM flag DisableExplicitGC is off. Prior to release
5.10.0, calls to System.gc() were ignored and no garbage collection was initiated unless -XX:DisableExplicitGC was set. From 5.10.0 this is no longer the case and System.gc() calls may
initiate a full GC cycle depending on the value of the GPGCOptimisticExplicitGC flag. If a
System.gc() call initiates a garbage collection, the calling thread may or may not be blocked for the
duration of the GC depending on the value of the SynchronousExplicitGC flag. The previous
behavior is achieved by turning on the DisableExplicitGC flag, using XX:+DisableExplicitGC.
l
-XX:{+/-}GPGCOptimisticExplicitGC
When enabled, a thread calling System.gc() initiates a new garbage collection if and only if
one is not already in progress or one is pending. This flag is enabled by default.
l
-XX::{+/-}SynchronousExplicitGC
When enabled, a thread that initiates a garbage collection by calling System.gc() is
blocked for the entire garbage collection cycle and resumes when the GC completes.
Otherwise a concurrent garbage collection is initiated and the calling thread continues to
execute. This flag is enabled by default.
Reserved Memory Command
When a Java application starts, heap memory is Reserved per the -Xmx value.
There is no specific ulimit pertaining to -Xmx for ZVM. Such memory is pre-allocated during the
ZST configuration which includes physical memory setup. ZST configuration requires root level
administrative access.
If -Xmx is less than 1 GB, Zing automatically increases it to 1 GB and sends a warning to stderr.
Azul Systems
Confidential and Proprietary
71
Zing Installation and Administration Guide
If you are installed on a SUSE Linux Enterprise Server (SLES) system, prior to launching ZVM for the
first time, set the ulimit. At the command line, type:
ulimit -v unlimited
Statistics Monitoring Command
To collect statistical information about the garbage collections behavior in ZVM, use the Zing -gpgc
option with Oracle's JVM statistics monitoring tool (jstat). Use the jstat distributed with Zing, not
the jstat distributed with Oracle's JVM.
Usage Syntax
jstat -gpgc [-t == show timestamps] pid [msec between samples [#
samples]]
Samples
Sample -gpgc, -t, samples, #samples options
jstat -gpgc -t 6549 10 5
Timestamp
NGU
OGU
PGU
JHMX
NGC
NGCT
OGC
OGCT
172.0 419840.0 2048.0 6144.0 1036288.0 276
265.268
170.689 123 94.579
172.1 419840.0 2048.0 6144.0 1036288.0 276
265.268
170.689 123 94.579
172.1 419840.0 2048.0 6144.0 1036288.0 276
265.268
170.689 123 94.579
172.1 419840.0 2048.0 6144.0 1036288.0 276
265.268
170.689 123 94.579
172.1 419840.0 2048.0 6144.0 1036288.0 276
265.268
170.689 123 94.579
GCT
Sample -gpgc option
jstat -gpgc 44265
NGU
OGCT
GCT
OGU
36864.0
147.621
73728.0
334.481
PGU
JHMX
36864.0
1036288.0
NGC
742
NGCT
186.860
OGC
221
Sample -class option
jstat -class 44265
Loaded
3063
Bytes
7777.3
Unloaded
1
Bytes
Time
0.0
1.14
Sample -gc option
jstat -gc 44265
Azul Systems
Confidential and Proprietary
72
Zing Installation and Configuration
NGU
OGCT
GCT
OGU
36864.0
147.621
73728.0
334.481
PGU
JHMX
NGC
36864.0
1036288.0
NGU
PGU
NGCT
742
OGC
186.860
221
Sample -gccause option
jstat -gccause 44265
JavaHeapPercentUsed
LGCC
GCC
OGU
14.23 36864.0 73728.0
147.621 No GC No GC
36864.0
JHMX
NGC
1036288.0
NGCT
742
OGC
OGCT
186.860
221
Sample -gcnew option
jstat -gcnew 44265
NGU
JHMX
NGC
OGC
NGCT
36864.0
1036288.0
742
221
186.860
Sample -gcold option
jstat -gcold 44265
PGU
OGU
JHMX
NGC
36864.0
73728.0
1036288.0
OGC
742
OGCT
221
GCT
147.621
334.481
Sample -gcutil option
jstat -gcutil 44265
JavaHeapPercentUsed
GCT
JHMX
14.23
1036288.0
NGC
742
NGCT
OGC
OGCT
186.860
221
147.621
334.481
Sample -stats option
jstat -stats 44265
Loaded
classInitTime classLinkedTime classVerifyTime
sun.cls.time applicationTime safepointSyncTime safepointTime
vmOperationTime NGC
NGCT OGC
OGCT
3063
0.759357
0.121911
0.250850
1.140906
1996.780026 0.450701
1.511731
1.663066
742
186.860000
221 147.621000
Output Header Descriptions
Header
Description
applicationTime
Time called
Bytes
Bytes consumed
Azul Systems
Confidential and Proprietary
73
Zing Installation and Administration Guide
Header
Description
classInitTime
Time called
classLinkedTime
Time called
classVerifyTime
Time called
GCC
GC cause
GCT
Both generation collectors total GC time
JavaHeapPercentUsed
Percent of memory used by Java heap
JHMX
Java heap Xmx value
Loaded
Processes loaded
LGCC
Last GC cause
NGC
New generation GC count
NGCT
New generation GC time (concurrent time the collector is
running)
OGC
Old generation GC count (at that instant)
OGCT
Old generation GC time (concurrent time the collector is
running)
NGU
New generation use (at that instant)
OGU
Old generation use (at that instant)
PGU
Permanent generation use
safepointSyncTime
Time called
safepointTime
Time called
sun.cls.time
Time called
Time
Elapsed time
Unloaded
Processes unloaded
vmOperationTime
Time called
Azul Systems
Confidential and Proprietary
74
Zing Installation and Configuration
ZVM Mini-Core File Option
There is an option, -XX:+DumpMiniCore, that creates significantly smaller Zing core files. This
option is specified through the Java application launch command and applied to the runtime Java
application. It is not applied to the ZVM host machine. When you use this option:
l
Generated Zing core files do not include application objects stored in the Java heap.
l
Time required to produce a Zing core file or core file bundle is reduced.
ZVM Mini-Core File Requirements
The mini-core file option requires ZST 5.7.5 or later and ZVM 5.10.x or later.
If the option is specified and either the ZST version or ZVM version is not compatible, a message is
issued.
l
If the ZST version supports the -XX:+DumpMiniCore option, but the ZVM version does not, an
Unrecognized VM option warning is printed to STDERR. For example:
/home/buildmaster/nightly/ZVM/5.x-zvm/released/zvm-5.9.0.07/sandbox/azlinux/jdk6/x86_64/product/bin/java -XX:+DumpMiniCore version
Zing 64-Bit Tiered VM error: Unrecognized VM option '+DumpMiniCore'
Could not create the Java virtual machine.
l
If the ZVM version supports the -XX:+DumpMiniCore option, but the ZST version does not, a
warning message is issued. For example:
/bin/java -jar -XX:+DumpMiniCore -version
Zing VM Warning: -XX:+DumpMiniCore is not supported by this ZST (found
API version 0x5e, requires API version >= 0x5f)
java version "1.6.0-internal-zing_99.99.99.99.dev"
Zing Runtime Environment for Java Applications (build 1.6.0-internalzing_99.99.99.99.dev-b25)
Zing 64-Bit Tiered VM (build 1.6.0-zing_99.99.99.99.dev-b501-productazlinuxM-X86_64, mixed mode)
Setting the ZVM Mini-Core File Option
Include the option -XX:+DumpMiniCore with your Java launch command.
Some failures cannot be effectively diagnosed with a mini-core file. In this case, Azul support may
request that you try to reproduce the failure and produce a full-sized core file, by removing XX:+DumpMiniCore from your Java launch command.
l
When -XX:+DumpMiniCore option is not specified, a full core file, including the application objects
stored in the Java heap, is created if Zing crashes.
l
When -XX:+DumpMiniCore option is specified, a core file, that does not include the application
objects stored in the Java heap, is created if Zing crashes.
Azul Systems
Confidential and Proprietary
75
Zing Installation and Administration Guide
Run a Java Application
To test ZVM installation, use the following procedure to run java -version in ZVM without
additional command line arguments.
1. Complete the installation instructions for ZST, ZVM, and the Zing License. This includes verifying
the license.
See Installing and Configuring Zing System Tools, Using the Zing Virtual Machine, and
Installing Zing Standalone Licenses or Installing and Using Pool Licensing.
2. Run a simple Java command, for example type:
$ <Zing_JVM_Directory>/bin/java -version
where <Zing_JVM_Directory> is the directory where the Zing /bin/java is located. If
you accept the ZVM installation defaults, this path is, for example:
/opt/zing/zing-jdk<version>-<zing_version>/
3. Look for the ZVM reference in the system response, for example:
java version "1.6.0-zing_5.7.0.0"
Zing Runtime Environment for Java Applications (build 1.6.0-zing_
5.7.0.0-b8)
Zing 64-Bit Tiered VM (build 1.6.0-zing_5.7.0.0-b8-productazlinuxM-X86_64, mixed mode)
See Troubleshooting Zing or run man zing-installation to view common installation
errors.
Native Applications with Zing
A native application is any application that is written in a language other than Java and calls JNI_
CreateJavaVM to create the VM and makes calls to Java code.This is usually written in C/C++ and
contains the “main” function to start execution.
For Information on known issues on native launch with Zing see Known Issues Running Native
Applications on Zing in the Troubleshooting Zing section of this guide.
Invoking Native Applications with Zing
If Native (C/C++) applications invoke ZVM, consider these issues before you execute your code.
l
Native application -- Identify how the native app creates the VM to find possible collisions with
areas used by or allocated by the ZVM.
l
Consider known limitations when running native apps on Zing. Identify the issues by the failure
messages.
l
Invoking the ZVM -- check for differences between a stock build and a Zing build.
l
Native apps should also know how to run Zing specific features such as the Tick Profiler
mechanism and C-Heap Leak detection.
Azul Systems
Confidential and Proprietary
76
Zing Installation and Configuration
Consult the cases listed below to determine your best course of action.
Invoking the ZVM in Native Applications
There are two primary ways of invoking the ZVM in native applications. Key sections of code are
highlighted.
Case 1: Native application dlopens libjvm.so and uses dlsym to find 'JNI_CreateJavaVM’.
Sample source:
……
JavaVMInitArgs vm_args;
JavaVMOption options[1];
options.optionString = "-Djava.class.path=./";
vm_args.version = JNI_VERSION_1_6;
vm_args.options = options;
vm_args.nOptions = 1;
/* Create the Java VM */
void* libjvm_handle;
jint (*createVM_handle) (JavaVM **pvm, void **penv, void *args);
libjvm_handle = dlopen("libjvm.so", RTLD_LOCAL | RTLD_LAZY);
if (!libjvm_handle) {
fprintf(stderr, "Can't load libjvm.so with error %s\n",dlerror());
exit(1);
}
createVM_handle = dlsym(libjvm_handle, "JNI_CreateJavaVM");
res = createVM_handle(&jvm, (void**)&env, &vm_args);
if (res < 0) {
fprintf(stderr, "Can't create Java VM\n");
exit(1);
}
……
Sample build/compile line:
gcc -fPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux –o
hello_world hello_world.c
Sample run:
LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/amd64/server:$LD_LIBRARY_PATH
./hello_world
Azul Systems
Confidential and Proprietary
77
Zing Installation and Administration Guide
Case 2: Native application directly calls JNI_CreateJavaVM by linking against libjvm.
Sample source:
……
JavaVMInitArgs args;
JavaVMOption options;
args.version = JNI_VERSION_1_6;
args.nOptions = 1;
options.optionString = "-Djava.class.path=./";
args.options = &options;
int rv;
rv = JNI_CreateJavaVM(jvm, (void**)&env, &args);
if (rv < 0 || !env)
printf("Unable to Launch JVM %d\n",rv);
else
printf("Launched JVM! \n");
…….
Sample build/compile line:
gcc -fPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux L${JAVA_HOME}/jre/lib/amd64/server –ljvm –o hello_world hello_
world.c
Sample run:
LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/amd64/server:$LD_LIBRARY_PATH
./hello_world
ZVM Instance Configuration Recommendations
Use the -Xmx command line to specify the Java heap size. The ZVM instance uses the specified
Java heap size to calculate the size of Reserved memory.
Note:
If -Xmx is less than 1 GB, Zing automatically increases it to 1 GB and sends a warning to
stderr.
Run the ZVM instance on the server running the Java processes.
RHEL Performance Tuning Options
Setting tuning options can be a complicated thing, so RedHat Enterprise Linux (RHEL) has an
installable daemon, tuned, that provides some tuning options, defined as profiles, to improve
performance. Tuned periodically collects data about hardware subsystems, such as disks, network
I/O, and switches. Then, based on the option selected, tuned dynamically adjusts system settings to
raise or lower power consumption modes for these devices on your system.
Azul Systems
Confidential and Proprietary
78
Zing Installation and Configuration
Note:
For Zing, lower power consumption modes are detrimental to performance because if
a core goes to sleep and the Garbage Collector or application has a thread that needs
to run, then the cost of 'warming' up the core is expensive in time as the cache gets
loaded and the pipeline is filled, etc.
Two tuned profiles that might be useful with your Zing installation:
l
throughput-performance
This is a server profile for typical throughput performance tuning. It disables tuned and
ktune power saving mechanisms, enables sysctl settings that improve the throughput
performance of your disk and network I/O, and switches to the deadline scheduler.
l
latency-performance
This is a server profile for typical low-latency performance tuning that can reduce RHEL6 jitter
caused by the OS. It disables tuned and ktune power saving mechanisms and enables
sysctl settings that improve the latency performance of your network I/O.
The latency-performance profile on RHEL 6 can improve the max response time,
depending upon the application running on Zing, by several (maybe 10s) of msec compared to
to the tuned default profile.
You can set and un-set these profiles with tuned-adm. The profiles are implemented with the tuned
daemon.
Installing the Tuned Package
Installing the tuned package sets up a sample configuration file at /etc/tuned.conf and activates
the default profile. The default power-saving profile has the lowest impact on power saving of the
available profiles. It only enables CPU and disk tuned plug-ins.
Installing tuned-utils adds following dependencies on a standard installation:
l
systemtap-runtime
l
kernel-devel
l
systemtap
To install tuned
1. Obtain the tuned installable package.
Refer to your RHEL distribution for the tuned package and documentation on using tuned. It
is available with several RHEL distributions, including RHEL 6, CentOS 6, and Fedora.
2. Install the tuned package and its associated systemtap scripts with the command:
# yum install tuned
Running Tuned
To use the tuned daemon:
Azul Systems
Confidential and Proprietary
79
Zing Installation and Administration Guide
1. Enable tuned. At the command prompt, type:
# chkconfig tuned on
2. Start tuned. At the command prompt, type:
# service tuned start
3. View the tuned profiles. At the command prompt, type:
# tuned-adm list
The system response is:
Available profiles:
- default
- desktop-powersave
- latency-performance
- laptop-ac-powersave
- server-powersave
- laptop-battery-powersave
- throughput-performance
- enterprise-storage
Current active profile: default
The profiles are implemented through the tuned daemon.
4. Enable the desired profile. At the command prompt, type:
# tuned-adm profile <profile_name>
For example:
# tuned-adm profile latency-performance
Calling '/etc/ktune.d/tunedadm.sh stop': [ OK ]
Stopping tuned: [ OK ]
Switching to profile 'latency-performance'
Applying ktune sysctl settings:
/etc/ktune.d/tunedadm.conf: [ OK ]
Calling '/etc/ktune.d/tunedadm.sh start': [ OK ]
Applying sysctl settings from /etc/sysctl.conf
Tuned Options
Tuned has additional options that you can use when you run it manually. The available options are:
l
-d, --daemon
Starts tuned as a daemon instead of in the foreground.
l
-c, --conffile
Uses a configuration file with the specified name and path, for example:
Azul Systems
Confidential and Proprietary
80
Zing Installation and Configuration
--conffile=/etc/tuned2.conf
The default is /etc/tuned.conf
l
-D, --debug
Uses the highest level of logging.
Automatically Starting Tuned
To start tuned every time the machine boots, at the command prompt, type:
# chkconfig tuned on
Disabling All Tuning
You can turn off the tuned profiles, use the tuned-adm command. At the command prompt, type:
# - tuned-adm off
This disables all tuned profiles.
Azul Systems
Confidential and Proprietary
81
Zing Installation and Administration Guide
Specific Use-Cases: Zing Installation
The key sections to review and complete to install and use your Zing implementation for specific use
cases are:
l
Using Zing through Amazon Web Services
l
Advanced Installation: Installing and Configuring Zing System Tools using DKMS
l
Installing and Configuring Zing Using Read-Only Images
Using Zing through Amazon Web Services
This section describes how to create an Amazon Elastic compute Cloud (EC2) instance for Zing.
Sign In to Amazon Web Services
The following directions are provided as a general reference for signing up and using Amazon EC2 with
Zing. Refer to the Amazon documentation for current and complete information about Amazon Web
Services (AWS).
1. In your web browser, enter http://aws.amazon.com/.
2. Click Sign Up.
3. In the Sign In or Create an AWS Account, enter the requested information.
Azul Systems
Confidential and Proprietary
82
Specific Use-Cases: Zing Installation
If you have an AWS account:
a. Click I am a returning user and my password is.
b. Enter your email address and password.
c. Click Sign in using our secure server.
If you do not have an Amazon Web Service (AWS) account:
a. Enter your email address.
b. Click I am a new user.
c. Click Sign in using our secure server.
d. Provide the requested information, as prompted. Required information includes your
identification, accepting the Amazon Web Services Customer Agreement, billing information,
verifying identify, and selecting a support plan.
l
An email address
If you have a personal Amazon account and use that email address, Amazon requires
that you attach the web services to your existing account.
l
A credit card
This card is billed for any time you are running one of the AWS servers. You are not
billed when the server is not running.
Azul Systems
Confidential and Proprietary
83
Zing Installation and Administration Guide
If needed, complete the Request to Increase Amazon EC2 Instance Limit form.
Contact your company's systems administrator or other authorized person to obtain
your AWS account information.
l
A phone number
Amazon calls the phone number for verification as part of the process for creating a
web services account. Use a phone number you can answer while viewing the online
forms because you are prompted to provide four-digit number displayed on the
computer screen.
Build an EC2 Server
Create the server to install Zing.
Note:
These directions create a cluster compute server with HVM based virtualization.
Currently this is the only Amazon Machine Image (AMI) with sufficient resources to
support Zing.
1. From the Amazon Web Services, aws.amazon.com, select My Account/Console > AWS
Management Console. See Sign In to Amazon Web Services.
2. From the AWS Management Console, https://console.aws.amazon.com/console/home, select EC2 in the Amazon Web Services > Compute & Networking section.
3. From your EC2 Management Console, select Region > US North (Virginia) in the upper right
corner of the Navigation section. At this time, this is the only AWS region that has servers with
Azul Systems
Confidential and Proprietary
84
Specific Use-Cases: Zing Installation
sufficient resources to support Zing. The default Region Oregon does not have a suitable image
available.
4. Click Launch Instance in the Amazon EC2 Console Dashboard > Create Instance section.
5. Select an Amazon Machine Image (AMI) from the Choose an Amazon Machine Image (AMI)
> Quick Start. See "Operating System Requirements" in Zing System Requirements for a list of
supported AMIs.
6. Select an Instance Type. Choose a compute optimized, cc2.8xlarge or larger instance.
7. Review the Instance choices. Click the numbered steps at the top and modify as needed.
l
l
l
l
Configure Instance – Specify number of instances, purchasing options, network settings,
shutdown behavior, and other advanced details.
Add Storage – Specify storage device settings.
Tag Instance – Categorize your EC2 resources by assigning a tag name to them using a key
and value you specify.
Configure Security Group – Add firewall rules for your instance.
8. Click Review and Launch. Verify your settings and choices.
9. Click Launch.
The instance begins to launch.
Usage hours on the instance start immediately. Amazon charges in hour
Note: increments. Charges continue to accumulate until you Stop or Terminate the
instance. Stopping and restarting in the same hour does not reduce costs.
10. If you did not create a key pair, you are prompted to select an existing key pair or create a new
key pair.
a. Click Choose and exiting key pair > Create a new key pair.
b. Enter a key pair name.
c. Click Download Key Pair.
A key pair file <key_pair_name>.pem is placed in your computer's default
download directory.
d. Click Launch Instances.
11. Click Close.
12. Verify your instance is running.
Refresh your ECS Management Console page. Check Amazon EC2 Console Dashboard >
Resources > Running Instance. The value should increment to include the new instance.
13. View instance information.
a. Click the Events tab under EC2 Dashboard left bar menu.
b. Click an instance check box in the Instances table.
An instance detail panel is displayed.
Azul Systems
Confidential and Proprietary
85
Zing Installation and Administration Guide
Stop EC2 Instance
Amazon charges apply the entire time your instance is running. If you are not actively using the
instance, turn it off.
1. From the EC2 Management Console > My Instances section, click the checkbox corresponding
to the instance to stop.
2. Select Instance Actions > Stop.
3. Click Yes to confirm starting the selected instance.
The state for your instance changes from running to stopping then to stopped when the stop
instance process is complete. Charges for your instance stop accumulating.
Start EC2 Instance
Once created you can return to Amazon Web Services to manage your instances. To start an instance:
1. From the EC2 Management Console > My Instances section, click the checkbox corresponding
to the instance to start.
2. Select Instance Actions > Start.
3. Click Yes to confirm starting the selected instance.
The state for your instance changes from stopped to pending then to running when the start
instance process is complete. Charges for your instance start accumulating.
Prepare AWS EC2 Instance for Zing
To install Zing onto your EC2 instance:
Azul Systems
Confidential and Proprietary
86
Specific Use-Cases: Zing Installation
l
Prepare Required Files
l
Start your AWS Instance
l
Login Remotely to your AWS Instance
l
Create a Non-Root User
l
Copy the Zing Installation Files to the AWS Instance
l
Install Zing Components
Prepare Required Files
1. Log into the local machine you used to create the AWS instance.
2. On your local machine, make a Zing directory. For example: <local_
directory>/Zing/install_files/
3. Download the Zing files.
l
Download the Zing Virtual Machine (ZVM) component.
l
Download the Zing System Tools (ZST) component.
l
Optionally, download the Zing License Server.
l
Download the Zing documentation bundle.
4. Move the <name>.pem file to the same directory where your Zing installer files are located.
This file was placed in your default download directory by AWS when you created your
instance.
Start your AWS Instance
Log into Amazon Web Services and click through to view your instances in the ECS Management
Console.
1. From a browser, go to aws.amazon.com. Select My Account/Console > My Account. Log in.
2. Select Developers > AWS Management Console. Click Sign in to the AWS Console. Click
EC2.
3. View the status of your created instances. Click Instances in the Navigation section.
4. Start the instance for the Zing installation. See Start EC2 Instance.
a. Click the checkbox corresponding to the instance to start.
b. Select Instance Actions > Start.
c. Click Yes to confirm starting the selected instance.
5. After the instance is started, click the checkbox again for your running instance.
6. Locate and copy the Public DNS. For example, ec2-107-22-31-225.compute1.amazonaws.com.
Azul Systems
Confidential and Proprietary
87
Zing Installation and Administration Guide
Login Remotely to your AWS Instance
On your local machine, start a command shell and open an SSH session to the AWS DNS address.
For example:
1. Start Cygwin.
2. CD to the directory with the .pem file. For example:
$ cd <local_directory>/Zing/install_files/
3. SSH to the AWS instance, using the instance Public DNS address.
$ ssh -i <key_pair_name>.pem root@<public_dns>
4. Confirm connection, if prompted.
Create a Non-Root User
From your shell logged into the AWS instance, create a non-root user. This is so the Zing installation is
not at the root directory.
For general example, in the Cygwin shell prompt, ip-<address>:~#
Azul Systems
Confidential and Proprietary
88
Specific Use-Cases: Zing Installation
ip-<address>:~# yast2 users add username=<new_user> password=<user_
password>
Copy the Zing Installation Files to the AWS Instance
1. Open a second command shell.
2. Change to the local directory where you have your Zing installation files. For example:
$ cd <local_directory>/Zing/install_files/
3. Set up a file transfer connection to the AWS instance as the new non-root user.
General example:
$ sftp <new_user>@<public_dns>
Password: <user_password>
Connected to <public_dns>
Literal example:
$ sftp new_user@ ec2-23-22-126-229.compute-1.amazonaws.com
Password: user_password
Connected to ec2-23-22-126-229.compute-1.amazonaws.com
4. Upload the Zing installation files to the AWS instance. If you are using a .sh package, ensure you
use secure FTP in binary mode.
l
Zing System Tools
sftp> put zing-zst-5c.3.0.13-5.2.2.0.8.sles11.sp2.x86_64.rpm
l
Zing Virtual Machine and license
sftp> put zingLX-jdk1.6.0-5.2.1.0-3.x86_64.rpm
sftp> put license
5. Logout from secure FTP.
sftp> quit
Install Zing Components
1. Open the command shell.
2. Log in as root.
3. Change to the directory where the Zing installation files are located. For example, using the <new_
user> directory created in Copy the Zing Installation Files to the AWS Instance:
$ cd <new_user>/Zing/install_files/
4. Follow the directions in the Zing installation guides.
l
Installing and Configuring Zing System Tools
Azul Systems
Confidential and Proprietary
89
Zing Installation and Administration Guide
This includes installing and configuring ZST. This must be completed prior to installing ZVM.
l
Installation – The ZST installation package contains a kernel loadable module and
supporting scripts and tools.
l
Configuration – Zing requires that a portion of host system memory is set aside and
managed independently from Linux. This is configured using the ZST system-
configzing-memory command.
l
Installing Zing Standalone Licenses
Zing licensing is required to allow Java runtime applications on instances of ZVM processes.
Installing the Zing Virtual Machine
This describes how to install the Zing Virtual Machine (ZVM) for Zing so it can be used to run
Java applications.
5. Stop the AWS instance, as needed. Start the AWS instance whenever you need to use Zing for
your runtime Java applications.
Installing Zing System Tools using DKMS
This section describes how to install ZST using the Dynamic Kernel Module Support (DKMS)
framework to automatically build the kernel module.
This guide is intended for advanced users only.
Note:
While this feature is tested and validated for a selected set of operating system
versions, there are always risks. Test thoroughly in your staging environment
before going into production.
If you are installing on standard RHEL 5, RHEL 6, or RHEL 7 kernels, use the
standard ZST installation packages.
l
Prerequisites – Ensure your system meets the prerequisites prior to installing ZST using DKMS
l
Installation – The ZST installation package contains a kernel loadable module and supporting
scripts and tools. This includes:
l
l
Zing Memory
l
Zing license daemon
l
Zing tools, including zing-ps
Configuration –
l
Zing requires that a portion of host system memory is set aside and managed independently
from Linux. This is configured using the system-config-zing-memory command.
Azul Systems
Confidential and Proprietary
90
Specific Use-Cases: Zing Installation
Installing and Configuring Zing System Tools
To install and configure Zing System Tools perform the steps in the following sections:
Complete Prerequisites
Install Zing System Tools
Configure Zing Memory
Complete Prerequisites
Prior to installing ZST, complete the following steps to ensure your system can support ZST.
Note
ZST must be installed prior to installing ZVM.
1. Ensure your environment meets the system requirements.
See Zing System Requirements, for a complete list of Zing requirements, including: supported
CPUs, memory requirements, and operating system versions.
2. Prepare the kernel and DKMS package.
Note
Ensure that your kernel header versions match your DKMS versions. Install the
kernel version matching the kernel you are running.
a. Backup your system kernels.
b. Locate and install the kernel headers and the DKMS package for the kernel version that will
be running the ZST. Run the commands as root or use sudo.
System
Commands to Install Packages
RHEL or CentOS
# sudo yum install dkms kernel-devel-$(uname r)
SLES
# sudo zypper install dkms kernel-defaultdevel-$(uname -r)
Ubuntu
# sudo apt-get install linux-headers-$(uname r) dkms
Azul Systems
Confidential and Proprietary
91
Zing Installation and Administration Guide
3. Check that the kernel headers match the kernel the installed OS kernel.
System
Commands to Install Kernel Headers and DKMS
RHEL or CentOS
# rpm -qa|grep kernel-devel-$(uname -r)
SLES
# rpm -qa|grep kernel-default-devel-$(uname -r)
Ubuntu or Debian
# dpkg -l|grep linux-headers-$(uname -r)
4. Ensure the required packages are installed.
System
RHEL, CentOS,
supported Oracle Linux
6
Commands to Install Packages
# yum localinstall --nogpgcheck
libssl<version>binutils lsof curl
RHEL 5.x, CentOS 5.x, # yum localinstall --nogpgcheck
supported Oracle Linux libssl<version> binutils lsof curl
5
# yum groupinstall 'development Tools'
RHEL 7
# yum localinstall --nogpgcheck
libssl<version> binutils lsof curl
# yum install perl-Sys-Syslog.x86_64
SLES
# zypper install libssl<version> binutils
lsof curl
Ubuntu
# apt-get install libssl<version> binutils
lsof curl
Depending upon the operating system the required packages include:
l
OpenSSL 0.9.8 or later
l
Development tools – Download the package from the operating system website.
l
binutils – Are required to ensure that any core files, generated when a ZVM
instance fails abnormally, include the shared libraries that were in use at the time.
4. If your systems are using power efficiency chips, such as the Nehalem chip set, disable the Intel
idle driver. See Disabling the Intel Idle Driver.
5. To ensure that OS settings are appropriate for performance sensitive applications, apply the
following configuration settings.
Azul Systems
Confidential and Proprietary
92
Specific Use-Cases: Zing Installation
l
SWAP – Turn this off, either by removing swap or by setting swappiness to 0. Best
practice removes swap.
l
vm.min_free – Set this to 1 GB or more. Best practice assigns more than 1 GB.
l
Transparent Huge Pages (THP) – Turn this off.
See Appendix A - Zing Installation Prerequisites Details for information on performing these tasks.
Install Zing System Tools
The ZST installation package contains a kernel loadable module and supporting scripts and tools.
To install ZST:
1. Ensure your system is configured to support ZST, complete the steps in Complete Prerequisites.
Note
Ensure that your kernel header versions match your DKMS versions. Install the
kernel version matching the kernel you are running.
2. Login to your system as root administrator or use sudo.
3. Download ZST installation package to your system <zst_install> directory.
The zing-zst package contains the kernel module and various tools. Only one version of
zing-zst may be installed at a time.
The ZST installation package is specific to the operating system version, service pack, and/or
kernel on the installation machine.
Note
If you are installing on standard RHEL 5, RHEL 6, or RHEL 7 kernels, use the
standard ZST installation packages.
System
ZST Installation Package Format
zing-zst-<dkms_package>.<kernel_version>.<zst_
version>.<platform>.rpm
RHEL
For example:
zing-zst-6a.dkms.3.10.0-5.7.7.0.10.el7.x86_64.rp
zing-zst-<dkms_package>.<kernel_version>.<zst_
version>.<platform>.rpm
SLES
For example:
zing-zst-6a.dkms.2.6.32-5.7.7.0.10.sles11.86_64.rpm
Ubuntu
or
Azul Systems
zing-zst_<dkms_package>.<kernel_version>-server-<zst_
version>_<platform>.deb
Confidential and Proprietary
93
Zing Installation and Administration Guide
System
Debian
ZST Installation Package Format
For example:
zing-zst_6a.dkms.3.2.0.x86.64-server-5.7.7.0.10_
amd64.deb
Where –
<kernel_version> is 5e.2.6.32 or 5c-3.2.0
<zst_number> is 5.7.2.0.10
<platform> is el6.x86_64, sles11.sp2.86_64, or amd64
4. Install ZST using the appropriate command for your system, type:
System
Commands to Install Packages
# rpm -ivh zing-zst-<zst-api-version>.dkms-<zst_
version>.<platform>.rpm
RHEL
For example
# sudo rpm -ivh zing-zst-6a.dkms.2.6.325.7.7.0.10..el6.x86_64.rpm
# zypper install <zst-api-version>.dkms-<zst_
version>.<platform>.rpm
For example
SLES
# sudo zypper install zing-zst-6a.dkms.2.6.325.7.7.0.10.sles11.sp2.86_64.rpm
# dpkg -i zing-zst_<zst-api-version>.dkms-<zst_
version>.<platform>.deb
Ubuntu or Debian
For example
# sudo dpkg -i zing-zst_6a.dkms.3.2.0.x86.64server-5.7.7.0.10_amd64.deb
The system responds.
Preparing...
########################################### [100%]
1:zing-zst
########################################### [100%]
Creating symlink /var/lib/dkms/zing_mm/5.7.7.0-12/source ->
/usr/src/zing_mm-5.7.7.0-12
DKMS: add completed.
Kernel preparation unnecessary for this kernel.
Skipping...
Building module:
cleaning build area...
Azul Systems
Confidential and Proprietary
94
Specific Use-Cases: Zing Installation
make KERNELRELEASE=2.6.32-71.el6.x86_64
KERNELDIR=/lib/modules/2.6.32-71.el6.x86_64/build DKMS=1 INTERNAL_
BUILD_NAME=zst-5.7.7.0 BUILD_SUFFIX= BUILD_NUMBER=12....
cleaning build area...
DKMS: build completed.
zing_mm:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/2.6.32-71.el6.x86_64/extra/
Adding any weak-modules
depmod...
DKMS: install completed.
You must configure Zing memory.
memory' now is recommended.
Running 'system-config-zing-
5. Add /usr/sbin to any Zing executable path. For example:
To your appropriate profile file, add:
export PATH=/usr/sbin:$PATH
6. Configure Zing memory allocation. See Configure Zing Memory.
Configure Zing Memory
After ZST is installed you must configure Zing memory allocation. Zing requires a portion of host
system memory to be set aside and managed independently from Linux. The system-configzing-memory wizard assists with this.
The system-config-zing-memory creates or replaces any existing version of the
pmem.conf file.
Note:
Running the system-config-zing-memory wizard is required for first time
installations.
This section describes creating a default configuration. To customize your Zing memory
configuration, see Modifying Zing Memory Configuration.
1. Complete the steps in Install Zing System Tools.
2. Configure Zing memory management using the system-config-zing-memory command.
Zing requires a portion of host system memory to be set aside and managed independently from
Linux. Use the system-config-zing-memory wizard for initial configuration.
From the command line, type:
# system-config-zing-memory
The system responds:
Azul Systems
Confidential and Proprietary
95
Zing Installation and Administration Guide
Welcome to the Zing memory configuration wizard by Azul Systems.
This wizard sets up the Zing memory configuration file
/etc/zing/pmem.conf.0 and initializes Zing memory. (Read the man
pages for zing, zing-zst, and zing-pmem-conf for more information
about this configuration file.)
By default, Azul recommends setting up your system with 25% Linux
memory and 75% Zing memory. Choose yes to accept this default, or no
to enter the wizard expert flow.
** accept default configuration
** (y)es or (n)o [default 'y']: Y
3. Accept default configuration settings. At the prompt, type:y.
** accept default configuration
** (y)es or (n)o [default 'y']:
Y
The system response lists the zing services that are started or restarted and memory
configuration information.
For example:
zing-memory: INFO: Restarting...
zing-memory: INFO: Stopping...
zing-memory: INFO: stop successful
zing-memory: INFO: Starting...
Info: azulPmemPages: 5840.
INFO: az_pmem_reserve_pages (num2mPages 5840) succeeded
INFO: az_pmem_fund_transfer (to 7, from 0, bytes 12247367680)
succeeded
INFO: az_pmem_fund_transfer (to 1, from 7, bytes 612368384)
succeeded
INFO: az_pmem_fund_transfer (to 3, from 7, bytes 612368384)
succeeded
INFO: az_pmem_fund_transfer (to 0, from 7, bytes 11022630912)
succeeded
Info: You can now run Java processes up to -Xmx10512m or -Xmx10g.
Info: Azul pmem initialized successfully.
zing-memory: INFO: start successful
zing-memory: INFO: restart successful.
You have completed ZST installation!
Zing installation is complete when you install the required Zing license file and ZVM. Modifying Zing
memory usage is available if you do not want to use the default settings.
Azul Systems
Confidential and Proprietary
96
Specific Use-Cases: Zing Installation
Completing Zing Installation
After you complete ZST installation, complete the following tasks to enable ZVM instances to run your
Java applications.
Install Zing License File
Install Zing Virtual Machine
Verify Zing Installation
Install Zing License File
After ZST is installed, install your Zing licensing.
A Zing license is required to start a Java application using a ZVM instance. Zing licenses are issued by
Azul. There are different Zing licensing options for getting the Zing license installed and ready for ZVM.
The option you use depends upon your contract with Azul.
l
Zing license (ZVM Host) – Standalone Zing licenses are installed on ZVM host machines.
These licenses are typically applied one license per ZVM host. All Zing installations require
the Zing license file. The Zing license daemon is installed with ZST.
See Installing Zing Standalone Licenses.
l
Zing Pool Server license – A Zing Pool server license allows you to use the Zing license
server to run an allocated number of Zing licenses concurrently among a set of ZVM hosts
that are configured to use Pool licenses.
See Installing and Using Pool Licensing .
Install Zing Virtual Machine
After ZST is installed and the Zing licensing is applied, install ZVM. See Installing the Zing Virtual
Machine for complete instructions.
Verify Zing Installation
After ZST is installed, configured, and started, and ZVM is installed, verify the completed installation.
1. Verify that your Zing license is installed.
Check /etc/zing/directory for your licensing authorization file, license.
l
If you are running ZVM instances on a standalone host, see Installing Zing
Standalone Licenses.
l
If you are configuring your ZVM host as a member of a Zing licensing pool, see
Installing and Using Pool Licensing .
2. Run a simple Java command, for example type:
Azul Systems
Confidential and Proprietary
97
Zing Installation and Administration Guide
$ <zing_java_directory>/bin/java -version
where <zing_java_directory> is the directory where the Zing /bin/java is
located. If you accept the ZVM installation defaults, this path is, for example:
$ /opt/zing/zing-<version>/bin/java -version
For quicker access, use the fully qualified path.
3. Look for the ZVM component reference in the system response, for example:
/opt/zing/zing-jdk1.8.0-14.09.0.0-33-x86_64/bin/java -version
java version "1.8.0-zing_14.09.0.0"
Zing Runtime Environment for Java Applications (build 1.8.0-zing_
14.09.0.0-b20)
Zing 64-Bit Tiered VM (build 1.8.0-zing_14.09.0.0-b33-productazlinuxM-X86_64, mixed mode)
See Troubleshooting Zing or run man zing-installation to view common
installation errors.
Modifying Zing Memory Configuration
If you completed all the steps in Installing and Configuring Zing System Tools Zing memory is
configured with default settings. Default configuration sets aside 75% of the physical memory of your
machine for use by ZVMs.
To customize the memory allocation, run the system-config-zing-memory command and do
not accept the default. Running this command automatically restarts the system.
When modifying the memory allocations for ZST, consider the following memory calculations:
/proc/meminfo.MemTotal = Linux Memory + Zing Memory
Zing Memory = Reservable + Contingency + Pause Prevention
Where –
l
Zing Memory – The ZVM uses Zing Memory to allocate the memory required for the Java
heap.
l
Reserved Memory – The amount of Reservable memory initially allocated to a specific ZVM
instance when the instance starts.
l
Contingency Memory – A backup reserve that Zing uses to temporarily allocate additional
memory to any ZVM instance running a Java application.
l
Pause Prevention Memory – A percentage of the Zing Memory set aside as part of Zing's
Generational Pauseless Garbage Collection (GPGC).
See Understanding Zing Memory Use for additional information about memory use. The following
shows an overview.
Azul Systems
Confidential and Proprietary
98
Specific Use-Cases: Zing Installation
To modifying Zing memory allocation complete the steps in the listed sections:
1. Start the process.
Modify Zing Memory Allocation
2. Choose one of the following two allocation methods:
l
Use System Method to Allocate Zing Memory
If you use the System method, choose one of the following options:
l
l
Use Percentage of System Memory for Zing Memory
l
Use Exact Amount of System Memory for Zing Memory
Use Java Method to Allocate Zing Memory
3. Complete the process.
Modify Zing Memory Allocation
To modify Zing memory configuration using the wizard:
Note
The system-config-zing-memory creates or replaces any existing version of the
pmem.conf file.
1. Login to your RHEL system as root.
2. Ensure there are no running processes using Zing memory, type:
$ zing-ps
See “Using the zing-ps Tool” in Using Zing System Tools.
3. Run the Zing memory configuration wizard.
$ system-config-zing-memory
Azul Systems
Confidential and Proprietary
99
Zing Installation and Administration Guide
The system responds.
Welcome to the Zing memory configuration wizard by Azul Systems.
This wizard sets up the memory driver configuration file
/etc/zing/pmem.conf.0
and initializes the Zing memory. (Read the man pages for zing, zingzst, and zing-pmem-conf for more information about this
configuration file.)
By default, Azul recommends setting up your system with 25% Linux
memory and 75% Zing memory. Choose yes to accept this default, or no
to enter the wizard expert flow.
4. Do not accept the default configuration, type: N
** accept default configuration
** (y)es or (n)o [default 'y']: n
The system responds.
[ Current task: Sizing Zing memory / Choosing sizing method ]
Zing requires you to partition memory up front for exclusive use by
Java. (This is analogous to Linux hugepages, although Zing pages are
not interchangeable with hugepages.)
Would you like to decide how much memory to allocate to Zing based
on the total size of your system, or based on the total size of the
Java instances you expect to run?
** Enter (s)ystem or (j)ava heap size [default 's']:
5. Select a method for allocating Zing memory:
l
System – system sizing allocates memory as a percentage of the available host
system memory. The default value if 75% for Zing Fund memory.
To use this method, continue to Use System Method to Allocate Zing Memory.
l
Java – Java sizing allocates memory as a fixed value in MB based on the estimated
sum of all Xmx values that might be run concurrently.
To use this method, continue to Use Java Method to Allocate Zing Memory.
Use System Method to Allocate Zing Memory
To select the System method for allocating Zing Fund memory.
1. From the system-config-zing-memory wizard, specify System method, type: S
** Enter (s)ystem or (j)ava heap size [default 's']: s
The system responds.
[ Current task: Sizing Zing memory / Choosing system sizing method ]
Do you want to allocate a percentage of your total host system
memory to Zing, or would you prefer to specify an exact amount?
** Enter (p)ercentage or (e)xact [default 'p']:
Azul Systems
Confidential and Proprietary
100
Specific Use-Cases: Zing Installation
2. Select a memory allocation method:
l
Percentage – allocates a percentage of the total host system memory.
To use this method, continue to Use Percentage of System Memory for Zing Memory.
l
Exact – allocates a specific value in MB of memory. This is based on the estimated maximum
Xmx values running concurrently.
To use this method, continue to Use Exact Amount of System Memory for Zing Memory.
Use Percentage of System Memory for Zing Memory
To specify the allocated amount as a percentage of the total host system memory.
1. From the system-config-zing-memory wizard, specify the allocation method, type P
** Enter (p)ercentage or (e)xact [default 'p']: p
The system responds with the next configuration prompt.
2. Specify the percentage value to use, type a percentage value. The default is %75.
** Enter percentage of total memory to dedicate to Zing [default
'75']:
The system responds with the next configuration prompt.
3. Continue to Specify Contingency Memory Pool.
Use Exact Amount of System Memory for Zing Memory
To specify allocation amount as an exact value:
1. From the system-config-zing-memory wizard, specify the exact method, type: e
** Enter (p)ercentage or (e)xact [default 'p']: e
The system responds.
[ Current task:
Sizing Zing memory / Choosing specific size ]
Please specify the amount of memory for Zing to use. (Note:
system has a total of 15g.)
examples:
your
16384m, 16g
** Enter memory to dedicate to Zing:
2. Specify the exact MB value to allocate to Zing memory.
For example:
** Enter memory to dedicate to Zing: 12g
The system responds with the next configuration prompt.
3. Continue to Specify Contingency Memory Pool.
Use Java Method to Allocate Zing Memory
To select the Java method for allocating Zing memory.
Azul Systems
Confidential and Proprietary
101
Zing Installation and Administration Guide
1. From the system-config-zing-memory wizard, specify the exact method, type: J
** Enter (p)ercentage or (e)xact [default 'p']: j
The system responds.
[[ Current task: Sizing Zing memory / Deriving size from Xmx ]
What is the sum of the Xmx values of all the Java processes you plan
to run concurrently?
** Enter sum of Xmx:
For example:
** Enter sum of Xmx: 2g
The system responds with the next configuration prompt.
3. Continue to Specify Contingency Memory Pool.
Specify Contingency Memory Pool
To specify the memory allocation for the Zing Contingency memory (also known as elastic memory)
pool:
1. From the system-config-zing-memory wizard, type the desired percentage. For example:
75. See Understanding Zing Memory Use for information about Contingency memory.
[ Current task: Sizing Zing memory / Sizing Contingency memory pool
]
Part of Zing memory is set aside in a common contingency memory pool
for all Azul Java processes to share. The contingency memory pool
exists as an insurance policy to allow a JVM instance to temporarily
avoid OOM behavior and grow beyond -Xmx.
What percentage of Zing memory would you like to dedicate to the
contingency memory pool?
** Enter percentage of Zing memory to be used for contingency memory
[default '5']:
2. Verify Zing Memory is restarted. View the system return from the last step to locate the following
lines. If you do not see them, see Starting or Stopping the Zing System Tools Services.
[ Current task:
driver ]
Saving configuration and initializing Zing memory
zing-memory: INFO: Restarting...
zing-memory: INFO: Stopping...
zing-memory: INFO: stop successful
zing-memory: INFO: Starting...
Info: azulPmemPages: 54454.
INFO: az_pmem_reserve_pages (num2mPages 54454) succeeded
INFO: az_pmem_fund_transfer (to 7, from 0, bytes 114198315008)
succeeded
Azul Systems
Confidential and Proprietary
102
Specific Use-Cases: Zing Installation
INFO: az_pmem_fund_transfer (to 1, from 7, bytes 5708447744)
succeeded
INFO: az_pmem_fund_transfer (to 3, from 7, bytes 5708447744)
succeeded
INFO: az_pmem_fund_transfer (to 0, from 7, bytes 102781419520)
succeeded
Info: You can now run Java processes up to -Xmx98020m or -Xmx95g.
Info: Azul pmem initialized successfully.
zing-memory: INFO: start successful
zing-memory: INFO: restart successful
Installing and Configuring Zing Using Read-Only Images
This section describes how to install and configure Zing using read-only images of ZST and ZVM for
use in an Enterprise File System (EFS). See openefs.org for additional information on EFS.
Note:
l
ZST with a read-only image is supported on RHEL/CentOS 5.2 or later, and
RHEL/CentOS 6.x. systems only.
Installation – The ZST installation package contains a kernel loadable module and supporting
scripts and tools. This includes:
l
l
Zing Memory
l
Zing license daemon
l
Zing tools, including zing-ps
Configuration –
l
Zing requires that a portion of host system memory is set aside and managed independently
from Linux. This is configured using the system-config-zing-memory command.
l
Usage –
l
To launch ZVM instances, the Zing Memory must be configured and running, and the
license daemon must be running.
Installing Zing with Read Only Images Overview
ZST includes scripts to install, start, and manage ZST on multiple nodes. The basic process includes:
l
Complete Prerequisites on the Zing server and all the ZST nodes.
l
Install Zing System Tools on the Zing server that is read only accessible by the ZST nodes.
l
Prepare the Zing System Tools Server for multiple node access.
l
Install Zing System Tools on the ZST Nodes.
l
Configure Zing Memory on the ZST Nodes.
Azul Systems
Confidential and Proprietary
103
Zing Installation and Administration Guide
l
Install Zing License File on the ZST Nodes.
l
Install Zing Virtual Machine on the ZST Nodes.
l
Verify Zing Installation on the ZST Nodes.
Complete Prerequisites
Prior to installing ZST, complete the following steps to ensure your system can support ZST.
Note
ZST must be installed prior to installing ZVM.
1. Ensure your environment meets the system requirements.
See Zing System Requirements, for a complete list of Zing requirements, including:
supported CPUs, memory requirements, operating system versions, supported
browsers, and listening ports.
2. Login to your system as root administrator.
3. Ensure the following packages are installed.
System
RHEL, CentOS,
supported Oracle Linux
6
Commands to Install Packages
# yum localinstall --nogpgcheck
libssl<version>binutils lsof curl
RHEL 5.x, CentOS 5.x, # yum localinstall --nogpgcheck
supported Oracle Linux libssl<version> binutils lsof curl
5
# yum groupinstall 'development Tools'
RHEL 7
# yum localinstall --nogpgcheck
libssl<version> binutils lsof curl
# yum install perl-Sys-Syslog.x86_64
SLES
# zypper install libssl<version> binutils
lsof curl
Ubuntu
# apt-get install libssl<version> binutils
lsof curl
Depending upon the operating system the required packages include:
Azul Systems
l
OpenSSL 0.9.8 or later
l
Development tools – Download the package from the operating system website.
Confidential and Proprietary
104
Specific Use-Cases: Zing Installation
l
binutils – Are required to ensure that any core files, generated when a ZVM
instance fails abnormally, include the shared libraries that were in use at the time.
4. If your systems are using power efficiency chips, such as the Nehalem chip set, disable the Intel
idle driver. See Disabling the Intel Idle Driver.
5. To ensure that OS settings are appropriate for performance sensitive applications, apply the
following configuration settings
l
SWAP – Turn this off, either by removing swap or by setting swappiness to 0.
Best practice removes swap.
l
vm.min_free – Set this to 1 GB or more. Best practice assigns more than 1 GB.
l
Transparent Huge Pages (THP) – Turn this off.
See for information on performing these tasks.
Install Zing System Tools on the Zing Server
Complete a standard full ZST installation on the Zing server. The ZST nodes access this server as
source for ZST installation and configuration.
The ZST installation package contains a kernel loadable module and supporting scripts and tools.
To install ZST:
1. Ensure your system is configured to support ZST, complete the steps in Prerequisites Prior to
Installing Zing System Tools.
2. Login to your system as root administrator or use sudo.
3. Download ZST installation package to your system <zst_install> directory.
zing-zst-<kernel_version>.<zst_version>.<platform>.rpm
For example:
zing-zst-5e.2.6.32-5.7.2.0.10.el6.x86_64.rpm
Where –
<kernel_version> is 5e.2.6.32
<zst_number> is 5.7.2.0.10
<platform> is el6.x86_64
The zing-zst package contains the kernel module and various tools. Only one version of
zing-zst may be installed at a time.
The ZST installation package is specific to the operating system version, service pack, and/or
kernel on the installation machine.
4. Install ZST using the following command, type:
# rpm --prefix=<zing_server_dir> -ivh <download_dir>/zing-zst<kernel_version>.<zst_version>.<platform>.rpm
Where –
Azul Systems
Confidential and Proprietary
105
Zing Installation and Administration Guide
<zing_server_dir> is the path that all ZST nodes use to access the Zing server installation.
Using the --prefix option creates the specified directory, in this example, /azul/zing_
server/zst.
<download_dir> is the location on the server where you downloaded the ZST package. In
this example, /azul.
For example:
# rpm --prefix=/azul/zing_server/zst -ivh /azul/zing-zst-5e.2.6.185.7.2.0.10.el5.x86_64.rpm
The system responds.
Preparing... ########################################### [100%]
1:zing-zst
########################################### [100%]
Zing ZST is installed at /azul/zing_server/zst
Run /azul/zing_server/zst/scripts/zing-zst.startup to start Zing
services
5. Add /usr/sbin to any Zing executable path. For example:
To your appropriate profile file, add:
export PATH=/usr/sbin:$PATH
Prepare the Zing System Tools Server
The steps in this section are typically performed by a network administrator.
The ZST read-only directory must be available to all ZST nodes.
1. On the Zing server, export the directory, /azul/zing_server/zst, to make it read-only visible to all
other ZST nodes.
For example:
# cat /etc/exports
The system responds:
/azul/zing_server/zst *(ro,fsid=0,sync)
2. Restart the network file system to apply the export.
For example:
# service nfs restart
The system responds.
Shutting down NFS mountd:
[ OK ]
Shutting down NFS daemon:
[ OK ]
Shutting down NFS quotas:
[ OK ]
Shutting down NFS services:
[ OK ]
Starting NFS services:
[ OK ]
Starting NFS quotas:
[ OK ]
Starting NFS daemon:
[ OK ]
Azul Systems
Confidential and Proprietary
106
Specific Use-Cases: Zing Installation
Starting NFS mountd:
[ OK ]
Install Zing System Tools on the ZST Nodes
Note
Install ZST on the Zing server before you install ZST on any ZST node.
The ZST installation package contains a kernel loadable module and supporting scripts and tools. This
includes:
l
Zing Memory
l
Zing license daemon
l
Zing tools, including zing-ps
To install ZST:
1. On each ZST node, login to your system as root administrator.
2. Create a ZST directory.
# mkdir /azul/zing_node/zst
3. Mount the Zing server read-only directory to a local ZST node directory.
# mount <ZST_Server_IP>:<zing_server_dir> <zst_node_dir>
For example:
# mount 10.10.163.113:/azul/zing_server/zst /azul/zing_node/zst
This command creates the local ZST node directories, as needed.
4. Change to the /script directory.
# cd /azul/zing_node/zst/scripts/
5. Install ZST using the zing-zst.startup command.
# ./zing-zst.startup
The system responds:
Installing ZST ...
Checking ZST package dependencies...
Dependency check complete...
zing-licensed: INFO: start successful [ OK ]
zing-memory: INFO: Starting...
Warning: Zing Virtual Machine support is disabled.
Warning: Run system-config-zing-memory to enable.
Warning: Try 'man zing-zst' for more information.
Warning: Azul pmem configuration disabled.
zing-memory: INFO: start successful
Installation complete!
Azul Systems
Confidential and Proprietary
107
Zing Installation and Administration Guide
You must configure Zing memory. Running '/azul/zing_
node/zst/usr/sbin/system-config-zing-memory' now is recommended.
The zing-zst.startup command has the following options:
Option
Description
--h
Displays help text.
-p, --pmem <pmem_filename>
References a pmem.conf file that
contains ZST memory configuration
information.
-l, --license <license_filename>
References a Zing license file.
For example, including the optional -l and -p options:
# /zing/57210/scripts/zing-zst.startup -l /tmp/license -p
/tmp/pmem.conf
Installing ZST ...
Checking ZST package dependencies...
Dependency check complete...
Installed: '/tmp/license'
Installed: '/tmp/pmem.conf'
zing-licensed: INFO: start successful
[
OK
]
zing-memory: INFO: Starting...
Info:
azulPmemPages: 5888.
INFO: az_pmem_reserve_pages (num2mPages 5888) succeeded
INFO: az_pmem_fund_transfer (to 7, from 0, bytes 12348030976)
succeeded
INFO: az_pmem_fund_transfer (to 1, from 7, bytes 616562688)
succeeded
INFO: az_pmem_fund_transfer (to 3, from 7, bytes 616562688)
succeeded
INFO: az_pmem_fund_transfer (to 0, from 7, bytes 11114905600)
succeeded
Info:
You can now run Java processes up to -Xmx10600m or -Xmx10g.
Info:
Azul pmem initialized successfully.
zing-memory: INFO: start successful
Installation complete!
In this example, the comment to run system-config-zing-memory is not included because
the memory configuration file was provided with the zing-zst.startup command.
Azul Systems
Confidential and Proprietary
108
Specific Use-Cases: Zing Installation
6. Configure Zing memory allocation. See Configure Zing Memory.
7. Optionally, enable zing-core-pattern for automatic ZVM core bundling. See Troubleshooting
Zing.
8. Repeat the Step 1 through Step 7 for each ZST Node.
Configure Zing Memory on the ZST Nodes
After ZST is installed you must configure Zing memory allocation. Zing requires a portion of host
system memory to be set aside and managed independently from Linux. The system-configzing-memory wizard assists with this.
The system-config-zing-memory creates or replaces any existing version of the
pmem.conf file.
Note:
Running the system-config-zing-memory wizard is required for first time
installations.
This section describes creating a default configuration. To customize your Zing memory
configuration, see Modifying Zing Memory Configuration.
1. Complete the steps in Install Zing System Tools on the ZST Nodes.
2. Configure Zing memory management using the system-config-zing-memory command.
Zing requires a portion of host system memory to be set aside and managed independently from
Linux. Use the system-config-zing-memory wizard for initial configuration.
From the command line, type:
# /azul/zing_node/zst/usr/sbin/system-config-zing-memory
The system responds:
Welcome to the Zing memory configuration wizard by Azul Systems.
This wizard sets up the Zing memory configuration file
/etc/zing/pmem.conf.0 and initializes Zing memory. (Read the man
pages for zing, zing-zst, and zing-pmem-conf for more information
about this configuration file.)
By default, Azul recommends setting up your system with 25% Linux
memory and 75% Zing memory. Choose yes to accept this default, or no
to enter the wizard expert flow.
** accept default configuration
** (y)es or (n)o [default 'y']: Y
3. Accept default configuration settings. At the prompt, type: y.
** accept default configuration
** (y)es or (n)o [default 'y']:
Azul Systems
Y
Confidential and Proprietary
109
Zing Installation and Administration Guide
The system response lists the zing services that are started or restarted and memory
configuration information.
For example:
zing-memory: INFO: Restarting...
zing-memory: INFO: Stopping...
zing-memory: INFO: stop successful
zing-memory: INFO: Starting...
Info: azulPmemPages: 54454.
INFO: az_pmem_reserve_pages (num2mPages 54454) succeeded
INFO: az_pmem_fund_transfer (to 7, from 0, bytes 114198315008)
succeeded
INFO: az_pmem_fund_transfer (to 1, from 7, bytes 5708447744)
succeeded
INFO: az_pmem_fund_transfer (to 3, from 7, bytes 5708447744)
succeeded
INFO: az_pmem_fund_transfer (to 0, from 7, bytes 102781419520)
succeeded
Info: You can now run Java processes up to -Xmx98020m or -Xmx95g.
Info: Azul pmem initialized successfully.
zing-memory: INFO: start successful
zing-memory: INFO: restart successful.
You have completed ZST installation!
Install Zing License File on the ZST Nodes
After ZST is installed, install your Zing license.
A Zing license is required to start a Java application using a ZVM instance. Zing licenses are issued by
Azul. There are different Zing licensing options for getting the Zing license installed and ready. The
option you use depends upon your contract with Azul.
l
Zing license (ZVM Host) – Standalone Zing licenses are installed on ZVM host machines.
These licenses are typically applied one license per ZVM host. All Zing installations require the
Zing license file. The Zing license daemon is installed with ZST. See Installing Zing
Standalone Licenses.
l
Zing Pool Server license – A Zing Pool server license allows you to use the Zing license server
to run an allocated number of Zing licenses concurrently among a set of ZVM hosts that are
configured to use Pool licenses. See Installing and Using Pool Licensing.
Azul Systems
Confidential and Proprietary
110
Specific Use-Cases: Zing Installation
Install Zing Virtual Machine on the ZST Nodes
After ZST is installed and the Zing licensing is applied, install ZVM. See the Zing Virtual Machine
Installation guide for complete instructions. The following is an overview of the ZVM installation when
you are using ZST with a read-only image.
1. On the Zing server, download ZVM.
The installer package uses the following naming format depending on the Java version
supported: zing-jdk<version>-<zvm_version>.<platform>.rpm
For example:
zing-jdk1.6.0-5.8.0.0-13.x86_64.rpm
zing-jdk1.7.0-5.8.0.0-13.x86_64.rpm
Where –
JDK <version> is 1.6.0 or 1.7.0
ZVM <version> is 5.8.0.0-13
platform <version> is x86_64
2. Login as root.
a. Enter the root shell.
b. Type the su command.
c. Enter the super-user password when prompted.
3. Install ZVM.
# rpm -ivh --prefix=<zing_server_dir> -ivh <download_dir>/zingjdk<version>-<zvm_version>.<platform>.rpm
Where –
<zing_server_dir> is the path that all ZVM nodes use to access the Zing server
installation. Using the --prefix option creates the specified directory, in this example,
/azul/zing_server/zvm.
<download_dir> is the location on the server where you downloaded the ZST package. In
this example, /azul.
For example:
# rpm -ivh --prefix=/azul/zing_server/zvm
5.8.0.0-13.x86_64.rpm
/azul/zing-jdk1.6.0-
Preparing...
########################################### [100%]
1:zing-jdk1.6.0
########################################### [100%]
4. Export the read-only directory, /azul/zing_server/zvm.
# more /etc/exports
The system responds:
/azul/zing_server/zvm
*(ro,fsid=0,sync)
5. Restart NFS.
Azul Systems
Confidential and Proprietary
111
Zing Installation and Administration Guide
# service nfs restart
Shutting down NFS daemon:
[
OK
]
Shutting down NFS mountd:
[
OK
]
Shutting down NFS quotas:
[
OK
]
Shutting down NFS services:
[
OK
]
Starting NFS services:
[
OK
]
Starting NFS quotas:
[
OK
]
Starting NFS mountd:
[
OK
]
Stopping RPC idmapd:
[
OK
]
Starting RPC idmapd:
[
OK
]
Starting NFS daemon:
[
OK
]
6. On each ZST node, mount the ZVM installed directory.
For example:
# mkdir /azul/zing_node/zvm
# mount 10.10.163.192:/azul/zing_server/zvm
/azul/zing_node/zvm
Verify Zing Installation on the ZST Nodes
After ZST is installed, configured, and started, and ZVM is installed, verify the completed installation.
1. Verify that your Zing license is installed.
Check /etc/zing/directory for your licensing authorization file, license.
l
If you are running ZVM instances on a standalone host, see Installing Zing Standalone
Licenses.
l
If you are configuring your ZVM host as a member of a Zing licensing pool, see Installing
and Using Pool Licensing .
2. Run a simple Java command, for example type:
$ <zing_java_directory>/bin/java -version
where <zing_java_directory> is the directory where the Zing /bin/java is
located. If you accept the ZVM installation defaults, this path is, for example:
$ /opt/zing/zing-<version>/bin/java -version
For quicker access, use the fully qualified path.
3. Look for the ZVM component reference in the system response, for example:
java version "1.8.0-zing_14.09.0.0"
Zing Runtime Environment for Java Applications (build 1.8.0-zing_
14.09.0.0-b20)
Azul Systems
Confidential and Proprietary
112
Specific Use-Cases: Zing Installation
Zing 64-Bit Tiered VM (build 1.8.0-zing_14.09.0.0-b33-productazlinuxM-X86_64, mixed mode)
See Troubleshooting Zing or run man zing-installation to view common
installation errors.
Modifying Zing Memory Configuration
If you completed all the steps in Installing and Configuring Zing System Tools Zing memory is
configured with default settings. Default configuration sets aside 75% of the physical memory of your
machine for use by ZVMs.
To customize the memory allocation, run the system-config-zing-memory command and do
not accept the default. Running this command automatically restarts the system.
When modifying the memory allocations for ZST, consider the following memory calculations:
/proc/meminfo.MemTotal = Linux Memory + Zing Memory
Zing Memory = Reservable + Contingency + Pause Prevention
Where –
l
Zing Memory – The ZVM uses Zing Memory to allocate the memory required for the Java
heap.
l
Reserved Memory – The amount of Reservable memory initially allocated to a specific ZVM
instance when the instance starts.
l
Contingency Memory – A backup reserve that Zing uses to temporarily allocate additional
memory to any ZVM instance running a Java application.
l
Pause Prevention Memory – A percentage of the Zing Memory set aside as part of Zing's
Generational Pauseless Garbage Collection (GPGC).
See Understanding Zing Memory Use for additional information about memory use. The following
shows an overview.
Azul Systems
Confidential and Proprietary
113
Zing Installation and Administration Guide
To modifying Zing memory allocation complete the steps in the listed sections:
1. Start the process.
Modify Zing Memory Allocation
2. Choose one of the following two allocation methods:
l
Use System Method to Allocate Zing Memory
If you use the System method, choose one of the following options:
l
l
Use Percentage of System Memory for Zing Memory
l
Use Exact Amount of System Memory for Zing Memory
Use Java Method to Allocate Zing Memory
3. Complete the process.
Modify Zing Memory Allocation
To modify Zing memory configuration using the wizard:
Note
The system-config-zing-memory creates or replaces any existing version of the
pmem.conf file.
1. Login to your RHEL system as root.
2. Ensure there are no running processes using Zing memory, type:
$ zing-ps
See “Using the zing-ps Tool” in Using Zing System Tools.
3. Run the Zing memory configuration wizard.
$ system-config-zing-memory
Azul Systems
Confidential and Proprietary
114
Specific Use-Cases: Zing Installation
The system responds.
Welcome to the Zing memory configuration wizard by Azul Systems.
This wizard sets up the memory driver configuration file
/etc/zing/pmem.conf.0
and initializes the Zing memory. (Read the man pages for zing, zingzst, and zing-pmem-conf for more information about this
configuration file.)
By default, Azul recommends setting up your system with 25% Linux
memory and 75% Zing memory. Choose yes to accept this default, or no
to enter the wizard expert flow.
4. Do not accept the default configuration, type: N
** accept default configuration
** (y)es or (n)o [default 'y']: n
The system responds.
[ Current task: Sizing Zing memory / Choosing sizing method ]
Zing requires you to partition memory up front for exclusive use by
Java. (This is analogous to Linux hugepages, although Zing pages are
not interchangeable with hugepages.)
Would you like to decide how much memory to allocate to Zing based
on the total size of your system, or based on the total size of the
Java instances you expect to run?
** Enter (s)ystem or (j)ava heap size [default 's']:
5. Select a method for allocating Zing memory:
l
System – system sizing allocates memory as a percentage of the available host
system memory. The default value if 75% for Zing Fund memory.
To use this method, continue to Use System Method to Allocate Zing Memory.
l
Java – Java sizing allocates memory as a fixed value in MB based on the estimated
sum of all Xmx values that might be run concurrently.
To use this method, continue to Use Java Method to Allocate Zing Memory.
Use System Method to Allocate Zing Memory
To select the System method for allocating Zing Fund memory.
1. From the system-config-zing-memory wizard, specify System method, type: S
** Enter (s)ystem or (j)ava heap size [default 's']: s
The system responds.
[ Current task: Sizing Zing memory / Choosing system sizing method ]
Do you want to allocate a percentage of your total host system
memory to Zing, or would you prefer to specify an exact amount?
** Enter (p)ercentage or (e)xact [default 'p']:
Azul Systems
Confidential and Proprietary
115
Zing Installation and Administration Guide
2. Select a memory allocation method:
l
Percentage – allocates a percentage of the total host system memory.
To use this method, continue to Use Percentage of System Memory for Zing Memory.
l
Exact – allocates a specific value in MB of memory. This is based on the estimated maximum
Xmx values running concurrently.
To use this method, continue to Use Exact Amount of System Memory for Zing Memory.
Use Percentage of System Memory for Zing Memory
To specify the allocated amount as a percentage of the total host system memory.
1. From the system-config-zing-memory wizard, specify the allocation method, type P
** Enter (p)ercentage or (e)xact [default 'p']: p
The system responds with the next configuration prompt.
2. Specify the percentage value to use, type a percentage value. The default is %75.
** Enter percentage of total memory to dedicate to Zing [default
'75']:
The system responds with the next configuration prompt.
3. Continue to Specify Contingency Memory Pool.
Use Exact Amount of System Memory for Zing Memory
To specify allocation amount as an exact value:
1. From the system-config-zing-memory wizard, specify the exact method, type: e
** Enter (p)ercentage or (e)xact [default 'p']: e
The system responds.
[ Current task:
Sizing Zing memory / Choosing specific size ]
Please specify the amount of memory for Zing to use. (Note:
system has a total of 15g.)
examples:
your
16384m, 16g
** Enter memory to dedicate to Zing:
2. Specify the exact MB value to allocate to Zing memory.
For example:
** Enter memory to dedicate to Zing: 12g
The system responds with the next configuration prompt.
3. Continue to Specify Contingency Memory Pool.
Use Java Method to Allocate Zing Memory
To select the Java method for allocating Zing memory.
Azul Systems
Confidential and Proprietary
116
Specific Use-Cases: Zing Installation
1. From the system-config-zing-memory wizard, specify the exact method, type: J
** Enter (p)ercentage or (e)xact [default 'p']: j
The system responds.
[[ Current task: Sizing Zing memory / Deriving size from Xmx ]
What is the sum of the Xmx values of all the Java processes you plan
to run concurrently?
** Enter sum of Xmx:
For example:
** Enter sum of Xmx: 2g
The system responds with the next configuration prompt.
3. Continue to Specify Contingency Memory Pool.
Specify Contingency Memory Pool
To specify the memory allocation for the Zing Contingency memory (also known as elastic memory)
pool:
1. From the system-config-zing-memory wizard, type the desired percentage. For example:
75. See Understanding Zing Memory Use for information about Contingency memory.
[ Current task: Sizing Zing memory / Sizing Contingency memory pool
]
Part of Zing memory is set aside in a common contingency memory pool
for all Azul Java processes to share. The contingency memory pool
exists as an insurance policy to allow a JVM instance to temporarily
avoid OOM behavior and grow beyond -Xmx.
What percentage of Zing memory would you like to dedicate to the
contingency memory pool?
** Enter percentage of Zing memory to be used for contingency memory
[default '5']:
2. Verify Zing Memory is restarted. View the system return from the last step to locate the following
lines. If you do not see them, see Starting or Stopping the Zing System Tools Services.
[ Current task:
driver ]
Saving configuration and initializing Zing memory
zing-memory: INFO: Restarting...
zing-memory: INFO: Stopping...
zing-memory: INFO: stop successful
zing-memory: INFO: Starting...
Info: azulPmemPages: 54454.
INFO: az_pmem_reserve_pages (num2mPages 54454) succeeded
INFO: az_pmem_fund_transfer (to 7, from 0, bytes 114198315008)
succeeded
Azul Systems
Confidential and Proprietary
117
Zing Installation and Administration Guide
INFO: az_pmem_fund_transfer (to 1, from 7, bytes 5708447744)
succeeded
INFO: az_pmem_fund_transfer (to 3, from 7, bytes 5708447744)
succeeded
INFO: az_pmem_fund_transfer (to 0, from 7, bytes 102781419520)
succeeded
Info: You can now run Java processes up to -Xmx98020m or -Xmx95g.
Info: Azul pmem initialized successfully.
zing-memory: INFO: start successful
zing-memory: INFO: restart successful
Upgrading Zing System Tools in Read Only Environments
There is no direct upgrade path for ZST using read only ZST images. You must uninstall the existing
ZST read only image and install and configure the new ZST read only image.
Uninstalling the Zing System Tools from a ZST Node
Uninstalling ZST removes the ZST elements from the ZST node.
To uninstall Zing System Tools:
1. Login to your system as root.
2. Shutdown all the Zing java processes.
3. Ensure there are no running processes using Zing memory, type:
$ zing-ps
See Using Zing System Tools.
4. Run the shutdown script, zing-zst.shutdown, and confirm at the prompt.
For example, including the optional -r option.
$ /azul/zing_node/zst/scripts/zing-zst.shutdown -r
The system responds:
Uninstalling ZST from the system...
Do you want to continue? (yes or no) y
Restoring core pattern
Removing zing-licensed
zing-licensed: INFO: Stopping...26109
zing-licensed: INFO: stop successful
Removing zing-memory
zing-httpd: INFO: Stopping...
zing-httpd: INFO: stop successful
zing-certd: INFO: Stopping...
zing-certd: INFO: stop successful
Azul Systems
Confidential and Proprietary
118
Specific Use-Cases: Zing Installation
zing-memory: INFO: Stopping...
zing-memory: INFO: stop successful
Removing directories
Keeping /var/log/zing-httpd, directory is not empty
Removing ZST Kernel Object
Removing symlinks
Removing user and groups created for ZST
Removing /etc/zing
Uninstallation complete!
If you had enabled zing-core-pattern, the zing-zst.shutdown command restores your
original core pattern.
The zing-zst.shutdown command has the following options:
-h
Displays help text.
-r, --remove-etc-zing-folder
Removes the /etc/zing folder.
5. Unmount the Zing server read-only directory from the local ZST node.
# umount -l <zst_node_dir>
For example:
# umount -l /azul/zing_node/zst
This command unmounts the local ZST node directory.
6. Optionally, remove the Zing log file directory.
The /var/log/zing-httpd directory contains log files. If you want to remove those files as
well, remove the directory manually.
Uninstalling the Zing System Tools from the Zing Server
Uninstalling ZST removes all the ZST elements, this includes the following:
l
Zing Memory
l
zing-ps
l
Zing license daemon
Before you can uninstall the ZST component, you must uninstall the ZVM component. Follow
Note: the steps below for the supported sequence.
To uninstall Zing System Tools:
1. Uninstall ZST from all the ZST nodes. See Uninstalling the Zing System Tools from a ZST Node.
2. Login to your Zing server as root.
Azul Systems
Confidential and Proprietary
119
Zing Installation and Administration Guide
3. Ensure there are no running processes using Zing memory, type:
$ zing-ps
See the Using Zing System Tools guide.
4. Uninstall the ZVM component before you uninstall ZST. Run the remove command.
See the Installing the Zing Virtual Machine guide for description of how to uninstall the ZVM software.
$ yum remove zing-jdk<version>-<zvm_version>.<platform>
5. Uninstall ZST from the Zing server. Run the remove command.
$ yum remove zing-zst-<version>
This completes the ZST uninstallation.
6. To uninstall the remaining Zing components:
l
Delete the Zing license file, see the Installing Zing Standalone Licenses guide.
l
Uninstall the Zing Pool license server, see the Installing and Using Pool Licensing guide.
Installing and Using Pool Licensing
This section describes how to install and use the Zing license server to manage Zing licenses for a pool
of ZVM hosts.
Zing Licensing Overview
A Zing license is required to start a Java application using ZVM. Zing licenses are issued by Azul.
There are different Zing licensing options for getting the Zing license installed and ready for ZVM. The
option you use depend upon your contract with Azul.
A Pool license allows you to use the Zing license server to lease an allocated number of Zing licenses
concurrently among a set of ZVM hosts that are configured to work with a Pool license server.
Pool Licensing Components
The Pool licensing method requires the following licensing components:
l
Zing license server, zing-license-pool-server-<version>.sh – The Zing license
server authenticates, issues, and renews Zing licenses on the ZVM hosts. Additional functions
include: ZVM host license lease details, host management, server license management, audit
log, license reservation, user management, role management, notifications, and email
configuration.
See Zing System Requirements for a complete list of Zing requirements, including: supported
CPUs, memory requirements, operating system versions, browser, and listening port
requirements.
Azul Systems
Confidential and Proprietary
120
Specific Use-Cases: Zing Installation
l
Pool license file, <your_company>-pool.zip – This license authorizes you to use the
license server. You need at least one Pool license file, per license server.
l
Zing license file, license – Required on all ZVM hosts. It allows ZVM to run Java runtime
applications on instances of ZVM processes. It is issued to the ZVM host by the license server.
l
Zing license daemon,This is installed with ZST. It contains elements for the licensing
processes, including the elements to configure a ZVM host to get Zing licenses from the license
server. See Installing and Configuring Zing System Tools.
Zing License Locking
Licenses are issued with a set of conditions that define selected limitations of the license, referred to as
locks. The license server issues Zing licenses to ZVM hosts with the following locks:
l
Time – Zing license files issued by the license server include a license expiration timeframe
also known as the lease interval. The default lease interval is 24 hours. The lease interval is
configurable, see Modify Zing License Lease Interval.
l
Amazon Instance ID – This lock is used if the authorized ZVM host machine is an Amazon
Elastic Compute Cloud (EC2) instance. Each time the host machine instance boots in the EC2
environment it can be assigned a different IP address. Fortunately, its Amazon Instance ID
remains the same. So, for Zing licenses in EC2 environments, an Amazon Instance ID is used
as the ZVM host identifier. Using the Amazon Instance ID must be configured, see Use an
Amazon ID for ZVM Host ID.
Pool Licensing Process Overview
The basic Pool licensing process is as follows:
1. Azul issues a Pool license. Each Pool license supports a specific number of Zing licenses.
2. Install a Zing license server. See Install the License Server and Connect to Zing License Server.
3. Add the Pool license to the license server. See Store the Pool License Zip File and Add a Pool
License.
4. Install ZST and ZVM on the ZVM hosts to be included in the Zing license pool. Installing ZST
automatically installs the pool license daemon. See Installing and Configuring Zing System
Tools and Installing the Zing Virtual Machine.
5. Configure each ZVM host to use a Zing license issued by the license server. See Configuring
ZVM Hosts for Zing Pool Licensing.
Every ZVM host connects to the license server through the license server's IP address or DNS
resolvable hostname.
6. Each configured ZVM host machine requests a Zing license from the license server.
Azul Systems
Confidential and Proprietary
121
Zing Installation and Administration Guide
l
If the license server has a Zing license available:
l
The ZVM host is issued the Zing license.
l
Having a Zing license authorizes the ZVM host to use ZVM to start Java runtime
applications on ZVM instances.
l
l
The ZVM host holds the Zing license for the duration of the license lease.
l
Periodically, the ZVM host submits Zing license renewal requests.
If the license server does not have a Zing license available:
l
The ZVM host is denied a Zing license.
l
The denied ZVM host continues to request a Zing license every 5 minutes, until it receives
one.
l
Losing a Zing license means that ZVM cannot start new Java application instances on that
ZVM host. Java instances that are already running, continue to run.
7. As needed, manage the license server, Zing licenses, and ZVM hosts. See Managing the Zing
Licensing Server, Managing Zing Licenses, and Managing License Server Users.
Installing and Initializing the Zing License Server
This section describes how to install, configure, and prepare the Zing license server for issuing Zing
licenses to ZVM hosts. See the following sections:
l
Install the License Server
l
Connect to Zing License Server
l
Store the Pool License Zip File
l
Add a Pool License
Install the License Server
To install the license server:
1. Prepare the machine where you are installing the license server.
The license server is Java software and requires that Java be available before it can run. The
server must be a standalone machine, separate from the ZVM host machines that will be in its
license pool. See Zing System Requirements.
a. On a 64 bit Linux machine, install Java 1.6 or higher, for example HotSpot.
b. Set the JAVA_HOME variable to point to your Java installation directory.
c. Make a directory for the license server.
<zing_server_path>
d. From the Azul website, download the license server package:
Azul Systems
Confidential and Proprietary
122
Specific Use-Cases: Zing Installation
zing-license-pool-server-<version>.sh
2. Run the license server package.
$ <zing_server_path>/zing-license-pool-server-<version>.sh
The license server software is installed in the directory where the command is executed. The
installer package creates a folder:
zing-license-pool/
The installer responds:
Installing Pool License Server...
Checking java 1.6 or higher runtime.
Enter Installation directory [<zing_server_path>]:
Installation directory : <zing_server_path>/zing-license-pool
Checking available disk space.
Checking ports required.
Extracting Pool License Server files...
Pool License Server installed in the folder zing-license-pool
l
If a previous version of the license server exists, the following is displayed.
The Pool License Server is already installed.
Ports used by Pool License Server : 2443 9999 4447 27017
Do you wish to shutdown Pool License Server and upgrade? y)es/
(n)o: y
Note
If you shutdown the license server now, it has no effect on ZVM hosts that already
have Zing licenses. The length of time to shutdown, upgrade, and restart the
license server does not exceed the typical ZVM host Zing license lease.
l
If you want to upgrade, type y and proceed to Upgrade the Pool License Server.
l
If you do not want to upgrade, type n, and the installation wizard exits.
l
If the ports required for the license server are already in use:
a. To continue the installation, type y.
The port <port_number> required by the Pool License Server is
in use [ tcp 0 0 0.0.0.0:<port_number> 0.0.0.0:* LISTEN ]
The ports can be reconfigured using 'zing-licensepool/bin/configureports' after install
Do you wish to continue install? (y)es/(n)o : y
If you type y, installation continues and the ports might be changed as part the
installation process.
Azul Systems
Confidential and Proprietary
123
Zing Installation and Administration Guide
This prompt is displayed for each required port that is already in use. The license server
requires four ports: 2443, 9999, 4447, and 27017.
b. To continue the installation, type y.
Extracting Pool License Server files...
Pool License Server installed in the folder zing-license-pool
Do you wish to configure Pool License Server ports? (y)es/(n)
o : y
Configuring ports for the Pool License Server...
Pool License Server Web port [8443]:
7443
Pool License Server Management port [9999]:
Pool License Server Remoting port [4447]:
Pool License Server Database port [27017]:
7999
3447
17017
The updated Pool License Server port configuration:
Web port
: 7443
Management port : 7999
Remoting port
: 3447
Database port
: 17017
c. To apply the port changes, type y.
Do you wish to apply the port changes ? (y)es/(n)o : y
Port configuration. Done
To change the port number in the configuration file later, see Change the Listening
Ports.
3. Select whether to start the license server now. At the prompt type y.
Do you wish to start Pool License Server ? (y)es/(n)o : y
The wizard continues with the installation process.
Checking ports required for the Pool License Server
Database is not running. Starting database...
Checking ports required for the Pool License Server database
...
Started Pool License Server database successfully
Starting Pool License Server...
Checking Pool License Server status...
===================================================================
======
JBoss Bootstrap Environment
...
Azul Systems
Confidential and Proprietary
124
Specific Use-Cases: Zing Installation
===================================================================
======
When the installation completes, the following message is displayed:
Started Pool License Server successfully
The license server starts automatically.
4. While logged onto the license server machine, make note of the license server IP address or DNS
resolvable hostname.
You need this identifier to access the license server Web interface and to configure your ZVM
host machines.
Connect to a Zing License Server
Access to the Zing license server is through a Web browser.
To launch the license server interface:
1. Open a Web browser.
2. Enter the URL for the license server and the listening port. For example:
https://<license_server_ip_address>:8443
3. Enter your login credentials and click Login.
The default credentials are:
l
Username: admin
l
Password: admin
4. Change the password for the admin user and create at least one additional user with a password.
See Managing License Server Users.
Store the Pool License Zip File
The Pool license authorizes you to use the license server to manage your Zing licenses. This is
different than the Zing license that allows ZVM to start Java applications to run on ZVM instances.
Once you receive the Pool license, copy it to a location that is accessible to the license server.
1. Obtain the Azul email with the license zip file, <your_company>-pool.zip.
2. Store the zip file on the license server machine.
Azul Systems
Confidential and Proprietary
125
Zing Installation and Administration Guide
Note
Do not expand or open the zip file.
3. Note location where you store the zip file, <zing_server_path>.
Add a Pool License
Before the license server can issue Zing licenses to ZVM hosts, at least one Pool license has to be
added to the license server.
To add your Pool license:
1. From the Zing license server, click Server license.
2. Click the Add button.
3. Locate your Pool license zip file. Click Choose File and browse to the file.
See Store the Pool License Zip File.
4. Optionally, add a description of the license.
5. Click Add.
The Pool license information is added to the Server license page.
The following table describes the Server license page fields.
Field
Description
Status
Current status of the Pool license.
License ID
The Azul issued Pool license.
Description
Text you entered in the Add Azul license dialog.
Azul Systems
Confidential and Proprietary
126
Specific Use-Cases: Zing Installation
Field
Description
Issue Date
Date Pool license was issued to you.
Expiry Date
Date the Pool license expires. Contact Azul to renew your server
license.
Hard Stop Date
Pool licenses are issued with a grace period. The hard stop date
indicates the end of your grace period.
Count
Per your license request and as included by Azul in your license file,
the number of licenses this server is allowed to lease out to ZVM
hosts.
Extra Count
Used
Depending upon your Azul license, this column lists the number of additional Zing licenses available for use.
The number of licenses currently leased to ZVM hosts.
Configuring ZVM Hosts for Zing Pool Licensing
ZVM hosts must be configured to request Zing licenses from a Zing license server.
Note
Installing ZST automatically installs the license daemon required on each ZVM host
to use the Zing Pool license server.
1. Install ZST on the ZVM host machine. See Installing and Configuring Zing System Tools.
2. Install ZVM on the ZVM host machine. See Installing the Zing Virtual Machine.
Locate the license server IP address or hostname. See Install the License Server.
3. Log into each ZVM host machine, as root.
Execute the license configuration command, type:
# zing-licensed –-configure
For Amazon instances, use:
# zing-licensed –-configure –-amazonId
If the ZVM host is already configured, answer the prompt:
# zing-licensed --configure
Pool license configuration or Zing license exists on system
Configuring License Manager will overwrite existing
configuration and Zing license
Do you want to proceed ? Y/N:
n ignores the current attempt to configure and retains the existing configuration.
Azul Systems
Confidential and Proprietary
127
Zing Installation and Administration Guide
y overrides the existing configuration.
The system responds:
Configuring Zing license server
Alternatively, you can specify the server and port in the single command. For example:
# zing-licensed --configure --server zst1 --port 7443
# zing-licensed --c --amazonId --server 10.148.229.124 --port 8443
4. Enter the license server IP address.
Enter IP Address of license server:
Enter either the IP address or a hostname. We recommend using a hostname if you are using
DHCP for assigning IP addresses.
Alternatively, you can specify this in the configuration command string. Add --server
<server_ip>.
5. Enter the license server listening port.
Enter Port Number of license server:
Press return to accept the default port 8443 or enter the port you specified in the pool server
configuration step. See Install the License Server.
Alternatively, you can specify this in the configuration command string. Add --port <port_
no>.
6. If the Authentication Required option is on in the license server, then at the prompt, enter the login
credentials for the license server and press Return.
See Require ZVM Host Authentication. The default login credentials are:
Enter Username: admin
Enter Password: admin
Note:
Create your own user for the license server so you are not using the default
credentials. If you have already created a new administrative user, enter that
user's credentials here. See Add User.
7. Check the configuration response messages to verify configuration is successful.
Configuring Pool License Manager
Successfully configured Pool license server <server_ip> on port
<port_no>
Trying to fetch Pool license for the host…
Successfully installed Pool license '/etc/zing/license'
8. Repeat Step 1 through Step 7 on each ZVM host.
This completes the ZVM host configuration.
Once configured, the ZVM host requests a Zing license from the license server. It sends a
request every 5 minutes until it is issued a Zing license or until it is Revoked or Unconfigured
through the license server.
Azul Systems
Confidential and Proprietary
128
Specific Use-Cases: Zing Installation
zing-licensed Command Options
The zing-licensed command provides configuration options on the ZVM host. Some ZVM host
configuration options can be modified through the license server Web interface. See the listed sections
for additional information.
The zing-licensed command syntax is:
# zing-licensed –help
The response is:
version: 5.5.2.0.-1
usage: zing-licensed options ...
--configure [--amazonId] [--overwrite] [--server <ip address>]
[--port <port number>] [--user <username>] [--password <password>]
[--reserve]
--delete
--disable
--disable_core
--display
--display_core_info
--display_system_info [--amazonId]
--enable
--enable_core
--getlicense
--install <file path>
--unconfigure [--force]
--verify [<file path>] [<jar file path>]
--help
The command options perform as follows:
--configure
Configures the license server. Configuration command options include:
--amazonId
Set this ZVM host to provide an Amazon ID for host identification. See Use an Amazon
ID for ZVM Host ID.
--overwrite
Replace the existing configuration file. This command proceeds without a confirmation.
--server <ip address>
Specifies the IP address or DNS resolvable hostname of the license server.
--port <port number>
Azul Systems
Confidential and Proprietary
129
Zing Installation and Administration Guide
Specifies a listening port of the license server during ZVM host configuration. See
Change the Listening Port.
--user <username>
Specifies a user that exists on the license server. Used to authenticate registration.
Include the --password option when this option is used.. See Add User.
--password <password>
Specifies the password for the user listed in the --user option. The --user option is
required when this option is used. See Add User.
--reserve
Marks this host as a Reserved-Host in the license server. See Reserving Zing Licenses.
--delete
Deletes the default license file at /etc/zing/license. If a ZVM instanceis running and it is
using this license, the command fails.
--disable
Deletes the license file, but retains the server configuration. If a ZVM instance is running, the
command fails. This option disables the host from fetching a license from the license server.
See Disable a ZVM Host.
--disable_core
Disables core dump for zing-licensed process. Restart zing-licensed after issuing the disablecore command.
1. Issue disable_core command zing-licensed --disable_core
2. Restart zing-licensed service: service zing-licensed restart
--display
Lists the content of the license file /etc/zing/license.
--display_core_info
Lists if core dump is enabled or disabled for zing-licensed process.
--display_system_info [--amazonId]
Displays the system parameters set to lock a license file.
--amazonId
Display the Amazon ID of the ZVM host. See Use an Amazon ID for ZVM Host ID.
--enable
Enables the host to start fetching licenses from the license server. See Enable a ZVM Host.
--enable_core
Enables core dump for zing-licensed process. Restart zing-licensed after issuing the
enable_core command.
1. Issue enable_core command zing-licensed --enable_core
2. Restart zing-licensed service: service zing-licensed restart
Azul Systems
Confidential and Proprietary
130
Specific Use-Cases: Zing Installation
Core files are stored at:
l
For RHEL or SLES, /var/crash/zing-licensed and /var/crash/zing-
licensem.
l
For Ubuntu, /var/crash/zing-licensed.
--getlicense
Requests a Zing license from license server.
--install <file path>
Given a license file, verifies the license and then install the license to /etc/zing/license.
--unconfigure [--force]
Removes the ability of the ZVM host to request a Zing license from the license server and delete
the license server configuration. See Unconfigure a ZVM Host.
--force
Unconfigure the ZVM host even if the license server is non-responsive.
--verify [<file path>] [<jar file path>]
Verifies the license file <file path>.
When a <jar file path> is provided, verify the application identified by the <jar file
path>, against the application in the application locked license specified in the <file path>.
--help
Displays the zing-licensed command options and the zing-licensed package version.
Managing the Zing Licensing Server
Managing Zing licensing server topics include:
l
Start the License Server
l
Stop the License Server
l
Change the Listening Ports
l
Delete a Pool License from License Server
l
Backup the License Server
l
Restore the License Server
l
Configure Email Server
l
Configure Notifications
Change the Listening Ports
Note
Azul Systems
If you change the listening port and you have ZVM hosts configured to connect to the
license server through the existing listening port, be sure to update the ZVM hosts to
connect to the current license server listening port.
Confidential and Proprietary
131
Zing Installation and Administration Guide
To change the listening port:
1. From the command line where the license server is installed, run:
$ <zing_server_path>/bin/configureports
Where <zing_server_path> is the license server installation directory. For example:
$ ./bin/configureports
Configuring ports for the Pool License Server...
2. Confirm shutting down the license server.
Do you wish to shutdown Pool License Server and configure ports?
(y)es/(n)o : y
Stopping Pool License Server database...
killing process with pid: 10871
Stopped Pool License Server database successfully
Stopping Pool License Server...
Stopped Pool License Server successfully
Database is not running.
3. At the prompts, enter a new portor accept the listed number, press Return.
Pool License Server Web port [8443]:
<port_number>
Pool License Server Management port [9999]:
Pool License Server Remoting port [4447]:
Pool License Server Database port [27017]:
<port_number>
<port_number>
<port_number>
The updated Pool License Server port configuration:
Web port
: 8443
Management port : 9999
Remoting port
: 4447
Database port
: 27017
4. Confirm to apply the port number changes.
Do you wish to apply the port changes ? (y)es/(n)o : y
Port configuration. Done
5. Confirm to restart the license server.
Do you wish to start Pool License Server ? (y)es/(n)o : y
Checking ports required for the Pool License Server
Database is not running. Starting database...
Checking ports required for the Pool License Server database
Starting Pool License Server database....
...
Started Pool License Server database successfully
Starting Pool License Server...
Checking Pool License Server status...
Azul Systems
Confidential and Proprietary
132
Specific Use-Cases: Zing Installation
JAVA_OPTS already set in environment; overriding default settings
with values: ...
===================================================================
======
JBoss Bootstrap Environment
...
===================================================================
======
Started Pool License Server successfully
Delete a Pool License from License Server
To remove a Pool license:
1. From the Zing license server, click Server license.
2. Ensure that no ZVM hosts are using the Pool license you plan to delete.
If the selected Pool License is a valid license then, ensure that no ZVM hosts have a license
leased by this server, before attempting to delete it. See View ZVM Hosts with Active Zing
Licenses.
3. Select the Pool license to delete. Click anywhere in the line of the Pool license.
4. Click Delete.
5. Click OK to confirm deleting the Pool license.
The Pool license is removed from the list of available Pool licenses in the license server.
Backup the License Server
Use the backupserver command to create a backup of the license server. This includes backing up
the database and configuration files.
1. From the command line where the license server is installed, run:
$ <zing_server_path>/bin/backupserver <backup_directory>
Where –
<zing_server_path> – the license server installation directory.
<backup_directory> – an optionally specified backup directory. The default directory is
<zing_server_path>/backup/server.
For example:
$ ./bin/backupserver
Azul Systems
Confidential and Proprietary
133
Zing Installation and Administration Guide
The system responds:
Date 2013-05-02_13h36m
Back up folder: /home/user1/dev/work/zing-license-dev/test/zinglicense-pool/bin/../backup/server file : zing-license-pooldbbackup-2013-05-02_13h36m
Starting Pool License Server backup...
...
Compressing Pool License Server backup file
Pool License Server backup done.
The location where the backup is stored is:
<zing_server_path>/backup/server
Where <zing_server_path> is the Zing license server installation path.
The backup filename is:
zing-license-pool-dbbackup<timestamp>.tar.gz
Where <timestamp> is in the form: yyyy-mm-dd_##h##m
Restore the License Server
Use the restoreserver command to restore the license server. The restored server is placed in the
directory you specify in the command line.
1. From the command line where the license server is installed, run:
$ <zing_server_path>/bin/restoreserver <backup_filename>
Where –
<zing_server_path> is the license server installation directory.
<backup_filename> is the filename of the backup file.
For example:
$ ./bin/restoreserver ../backup/server/zing-license-pool-dbbackup2013-05-02_13h36m.tar.gz
The system responds:
Starting Pool License Server restore...
Processing backup file ../backup/server/zing-license-pool-dbbackup2013-05-02_13h36m.tar.gz
Processing files in directory /home/user1/dev/work/zing-licensedev/test/zing-license-pool/bin/../backup/server/zing-license-pooldbbackup-2013-05-02_13h36m
...
Pool License Server restore done. Please check messages for any
error.
Azul Systems
Confidential and Proprietary
134
Specific Use-Cases: Zing Installation
Configure Email Server
The Zing license server provides facilities to send email notifications on important events detected by
the server. To configure your email settings:
1. From the Zing license server, click Configuration > Email server.
2. Enter your email server information:
l
SMTP Server – your company's SMTP server. Enter an IP address or hostname.
l
SMTP Port – the communication port used by your email server
l
From Email Address – the address the license server uses to identify itself to your
recipient. Use for example, zing-license-no-reply@your_company.com.
l
Optionally, select a security method. Click the checkbox.
l
Use SMTP Authentication
Enter a User name and Password.
l
Use SSL
3. Click Save.
The license server validates the settings.
Configure Notifications
To receive email notification of pre-defined alerts, select from the options on the Notifications tab.
1. From the Zing license server, click Configuration > Notifications.
Azul Systems
Confidential and Proprietary
135
Zing Installation and Administration Guide
2. Enter email addresses in the Email IDs field.
Use valid email addresses. Separate multiple addresses with a comma.
3. Select the notifications to send. Click the notification checkbox and enter the values, as needed.
The options are:
l
ZVM Host unable to reach license server for
This notification is generated if the ZVM host does not contact the license
server within the specified time.
Minutes – If a ZVM host cannot reach the license server within the
number of minutes specified, a notification is sent.
l
License not renewed on ZVM host
This notification is generated when the license for a ZVM host has expired. The server
expected the ZVM host to renew the license and it did not happen. The notification
includes ZVM host identification.
l
Number of available licenses is less than or equal to
This notification is generated when the number of free licenses in the
Pool fall below a configured threshold.
Count – When the number of available ZVM hosts licenses left reaches
this count, a notification is sent.
l
Pool server license expired
The Pool server can have more than one license installed on it. An email is sent out
when a Pool server license reaches its warning date.
Azul Systems
Confidential and Proprietary
136
Specific Use-Cases: Zing Installation
4. Select the notification severity. The severity is included in the notification message. The severity
options are:
l
Information
l
Critical
5. Click Save.
Managing Zing Licenses
Options for viewing and managing Zing licenses and ZVM hosts that are in Pool license server, include:
l
Viewing Zing License Status and Activity
l
Modifying Zing License Settings
l
Reserving Zing Licenses
l
Removing, Resetting, Revoking Zing Licenses
Each item (tab or node) in left panel of the license server displays the corresponding panel of current
information about the selected tab.
Viewing Zing License Status and Activity
Options for viewing the status of the license server, ZVM hosts, and Zing licenses, include:
l
View Active Server Licenses
l
View Audit Log of Licensing Activity
Azul Systems
Confidential and Proprietary
137
Zing Installation and Administration Guide
View Active Server Licenses
The Server license tab displays the Pool licenses that have been added to the license server and their
current availability for use by the license server.
1. From the Zing license server, click Server license. The following table describes the fields.
Field
Description
Status
Current status of the Pool license.
License ID
The Azul issued Pool license.
Description
Text you entered in the Add Azul license dialog.
Issue Date
Date Pool license was issued to you.
Expiry Date
Date the Pool license expires. Contact Azul when you need to renew
your server license.
Hard Stop Date
Pool licenses are issued with a grace period. The hard stop date
indicates the end of your grace period.
Count
Per your license request and as included by Azul in your license file,
the number of licenses this server is allowed to lease out to ZVM
hosts.
Extra Count
Depending upon your Azul license, this column lists the number of
additional Zing licenses available for use.
Used
The number of licenses currently leased to ZVM hosts.
2. Select activities from this tab, as needed:
Add – adds a Pool license to the license server. When a Pool license is added to the server, the
pool license also specifies the number (count) of Zing licenses that can be leased out to ZVM
hosts. The total number of Zing licenses that can be leased out from the license server is equal
to the sum of all the counts from all the Pool licenses installed on this server. See Add a Pool
License.
Azul Systems
Confidential and Proprietary
138
Specific Use-Cases: Zing Installation
Delete – removes a Pool license from the license server. Deleting a Pool license reduces the
number available Zing licenses for lease by the number (count) specified in the Pool license.
See Delete a Pool License from License Server.
View Audit Log of Licensing Activity
To see log messages between the license server and the ZVM hosts:
1. From the Zing license server, click Audit log.
When you select it, initially it is empty.
2. Set the filter for the list of items to be displayed.
Click through the status and filters fields to select the data to be displayed. This includes the
following filtering options:
l
With status as: All, License issued, License validation failed, License renewed, License
not available, License Revoked, License Denied, License Expired, License reset, Host
license renewed, Host deleted, Host registered, Host re-registered, Host unregistered,
Host enabled, Host disabled
l
in: Last 1 hour, Last 24 hours, Last 7 days, Last 30 days, Last 60 days, Custom
l
From/To: calendar dates (click in field to see calendar)
l
Filter: All, Status, Host, Date
l
Column: Contains, Matches, Starts with
3. Click Generate Report to display the list.
The following table describes the fields.
Field
Status
Description
Host or license status. Options include:
l
Azul Systems
License issued
Confidential and Proprietary
139
Zing Installation and Administration Guide
Field
Description
l
License validation failed
l
License renewed
l
License not available
l
License Revoke
l
License Denied
l
License Expired
l
License reset
l
Host license renewed
l
Host deleted
l
Host registered
l
Host re-registered
l
Host unregistered
l
Host enabled
l
Host disabled
Host
Name of the ZVM host.
Date
Timestamp for status message.
Modifying Zing License Settings
Options for modifying the Zing licenses that are issued to a ZVM host, include:
l
Use an Amazon ID for ZVM Host ID
l
Require ZVM Host Authentication
l
Modify Zing License Lease Interval
Note:
Options set through the Settings tab apply to all ZVM hosts in the license server
pool.
All the Zing license settings options are configured through the Configuration > Settings tab.
Azul Systems
Confidential and Proprietary
140
Specific Use-Cases: Zing Installation
Use an Amazon ID for ZVM Host ID
If the ZVM hosts are in the Amazon cloud, the Host IDs change each time the Amazon instance is
started. To provide a lock for the Zing license, use the Amazon ID instead of the Host ID. The default is
not to use an Amazon ID.
To have all ZVM hosts use an Amazon ID for the Host ID value:
1. From the Zing license server, click Configuration > Settings.
2. Click the check box Support Amazon ID.
3. Click Save.
Require ZVM Host Authentication
The default configuration for Pooled ZVM hosts is to request a Zing license and not require ZVM host
login credentials.
To have the ZVM hosts provide authorized user login credentials:
1. From the Zing license server, click Configuration > Settings.
2. Click the check box Authentication Required.
3. Click Save.
When a ZVM host is being configured, the license server prompts for and accepts the user login
credentials.
4. On each ZVM host, run the ZVM host configuration script and specify the user login credentials.
See Configuring ZVM Hosts for Zing Pool Licensing.
Modify Zing License Lease Interval
The license server issues Zing licenses to ZVM hosts for specified periods of time, that is a leased
period. The default is to lease Zing licenses for 24 hours.
The ZVM host requests a license renewal for its Zing license every 1/10 of the lease interval. For
example, if the lease is 10 hours, a renewal is requested every hour.
To change the Zing license expiration interval:
1. From the Zing license server, click Configuration > Settings.
2. Select the desired interval in the Lease Interval option. The options are:
Azul Systems
Confidential and Proprietary
141
Zing Installation and Administration Guide
l
0 to 30 days and/or 0 to 23 hours, in one hour increments.
l
Maximum time available to the Pool license. Selecting this option sets the Zing
license to expire when the Pool license expires.
3. Click Save.
These changes apply to all ZVM hosts in the license server pool. The Zing license expiration
interval changes at the next renewal.
Reserving Zing Licenses
To ensure that a ZVM host has access to a Zing license, set up a reservation. Complete the steps in
the following sections:
l
Reserve Zing Licenses from the Pool
l
Add a ZVM Host Reservation
To remove a ZVM host reservation, see Remove a ZVM Host Reservation.
All Reservation activity is performed on the Reservation tab.
Reserve Zing Licenses from the Pool
The number of reservations cannot exceed the number of licenses available in the pool.
1. From the Zing license server, click Reservation.
2. Reserve a number of Zing licenses. Click Reserve.
3. Enter the number of Zing licenses from your pool you want to set aside for specific ZVM hosts. Click
Save.
Add a ZVM Host Reservation
The license server allows licenses to be reserved for identified ZVM hosts.
Azul Systems
Confidential and Proprietary
142
Specific Use-Cases: Zing Installation
1. Configure the Reservation count prior to assigning specific ZVM hosts. See Reserve Zing Licenses
from the Pool.
2. From the Zing license server, click Reservation.
3. Assign a ZVM host a reserved license. Click Add.
4. Click the host name from the list of configured ZVM hosts. Click Save.
The host is added to the list of hosts displayed in the Reservation table.
Remove a ZVM Host Reservation
1. From the Zing license server, click Reservation.
2. Select the ZVM host table entry. Click anywhere in the host row to select the host.
3. Click Delete.
A confirmation message box appears.
4. Confirm removing the Zing license reservation. Click OK.
When a host reservation is removed, the host is not affected. If it has a current lease - it
continues to use the leased license. When the license expires and it requests to renew the
license, it might not receive a license if the pool is full and a license has not been reserved for it.
Removing, Resetting, or Revoking Zing Licenses
The ZVM host license tab displays all ZVM hosts with active Zing licenses. This is not a list of all
ZVM hosts that are able to run a Zing license, only those that are currently consuming a Zing license.
Options for viewing and stopping Zing license use, include:
l
View ZVM Hosts with Active Zing Licenses
l
Reset All ZVM Host Zing Licenses
l
Remove Expired Zing Licenses
l
Revoke Zing License on a ZVM Host
View ZVM Hosts with Active Zing Licenses
1. From the Zing license server, click ZVM host license.
Azul Systems
Confidential and Proprietary
143
Zing Installation and Administration Guide
The ZVM host license tab displays the ZVM hosts that are actively using Zing licenses issued
through this license server.
The following table describes the fields.
Field
Description
Current status of the Zing license on the ZVM host. Options include:
Status
Active with validation failed – The system clock is more than 24
hours out of sync. Zing license cannot be verified and is considered
invalid.
Pending Revoke – Revoke issued, waiting for a running ZVM to stop.
Active – Currently consuming Zing license.
Reserved
Indicates if the applied Zing license is reserved for this ZVM host.
Host
Name of the ZVM host.
Time Left
Remaining time on the current lease of the Zing license.
Issue Date
Date the Zing license was issued by this server.
Expiration Date
Date on which the Zing License issued by this server expires.
Hard Stop Date
Pool licenses are issued with a grace period. The hard stop date
indicates the end of your grace period.
License ID
Zing License identifier for the license issued to this host.
Reset All ZVM Host Zing Licenses
The license server can be forced to clean up all the currently leased licenses by using the Reset pool
licenses button. When this is selected all the ZVM hosts are asked to renew their licenses again. This
causes the server to re-synchronize the license state with all the registered ZVM hosts in the pool.
1. From the Zing license server, click ZVM host license.
2. Click Reset pool licenses.
A confirmation message box appears.
3. Confirm resetting all the active ZVM host Zing licenses. Click OK.
Azul Systems
Confidential and Proprietary
144
Specific Use-Cases: Zing Installation
The active Zing license count is reset to zero. The license server tells all ZVM hosts to request
new Zing licenses now. The ZVM host status changes to Renew License. This does not stop
any running ZVM instances.
Remove Expired Zing Licenses
To remove expired Zing licenses from the listing of ZVM host licenses, use the Remove expired
license button. This does not remove any active ZVM host licenses or license listings.
To remove expired Zing license listings:
1. From the Zing license server, click ZVM host license.
This page displays all ZVM hosts that have been assigned a Zing license from the license
server. This includes ZVM hosts with currently active licenses and ZVM hosts with expired
licenses.
2. Select the row of the expired Zing license. Click anywhere in the row.
3. Click Remove expired license.
4. Click OK to confirm.
Since the Zing license was already expired, this has no affect on the status of available Zing
licenses.
Revoke Zing License on a ZVM Host
To have the license server submit a request to the ZVM host to relinquish its Zing license, use the
Revoke button.
l
If the selected host is not running any ZVM instances the license is released and the license
becomes available for use by other ZVM hosts.
l
If the selected host is running a ZVM instance, the license remains assigned until all ZVM
instances on that host stop. However, the ZVM host no longer requests a license renewal.
Revoking a license is temporary, after relinquishing its license and after the standard requesting
interval passes, the ZVM host requests a new license. Revoking a license does not remove the ZVM
host from the list of ZVM hosts known to the license server. See Managing ZVM Hosts.
To revoke the Zing license on a ZVM host:
1. From the Zing license server, click ZVM host license.
2. Select the ZVM host you want to release.
3. Click Revoke.
4. Click OK to confirm.
The Zing license is canceled on the selected ZVM host.
l
If no ZVM intances are currently running on the ZVM host, then the Zing license is released
for another ZVM host to use.
l
If a ZVM instance is running, the Zing license remains active and the status is changed to
Pending Revoke. ZVM instances are allowed to start until the Zing license is released.
Azul Systems
Confidential and Proprietary
145
Zing Installation and Administration Guide
When all running ZVM instances stop, the Zing license is released for another ZVM host to
use.
Managing ZVM Hosts
The Hosts tab displays an inventory of all ZVM hosts configured to be able to run a Zing license issued
from the license server. ZVM hosts on this list can be granted a Zing license, but might not be actively
consuming a Zing license. Options for viewing and managing pooled ZVM hosts, include:
l
View ZVM Hosts in the License Server Pool
l
Disable a ZVM Host
l
Enable a ZVM Host
l
Delete a ZVM Host
l
Unconfigure a ZVM Host
View ZVM Hosts in the License Server Pool
1. From the Zing license server, click Hosts.
The following table describes the fields.
Field
Description
Current status of the Zing license on the ZVM host. Options include:
Active with license – Currently consuming Zing license.
Status
Active with validation failed – The system clock is out of sync by
more than the maximum number of leased hours. Zing license cannot
be verified and is considered invalid.
Enabled – license server will issue a Zing license to this ZVM host.
Disabled – license server will not issue a Zing license to this ZVM
host.
Azul Systems
Confidential and Proprietary
146
Specific Use-Cases: Zing Installation
Field
Description
Pending disable – User action to disable this ZVM host is pending
confirmation from ZVM host.
Pending unconfigure – User action to unconfigure this ZVM host is
pending confirmation from ZVM host.
Pending renew – When the Zing licenses have been reset, all the
ZVM hosts need to renew their Zing licenses.
License not available – The host requested a Zing license but no
licenses are available.
Reserved
Indicates if the ZVM host has a Zing license reserved for its use.
Host
Name of the ZVM host.
Version
Zing license package version installed on the ZVM host.
Registered from
Date the ZVM host was configured as a member of the license server.
Status check in
Date and time when the zing-license daemon checks its status
with the Zing license server.
Registration ID
Identification assigned to the host when it was added to the license
server.
Host lock type
Lock used to secure the Zing license. See Zing License Locking.
Host lock
Literal lock value for the Zing license. For example, the ZVM host
MAC address. See Zing License Locking.
Disable a ZVM Host
When you disable a ZVM host, the next time the ZVM host requests a Zing license, the license server
denies the request and does not issue a Zing license. If the ZVM host is running a ZVM instance, the
Zing license remains in effect until the ZVM instance stops.
Disabling a ZVM host does not remove the authenticated configuration of the ZVM host from the
license server.
To disable the Zing license on a ZVM host:
1. From the Zing license server, click Hosts.
2. Select the ZVM host you want to disable. Click anywhere in the host row to select the host.
Azul Systems
Confidential and Proprietary
147
Zing Installation and Administration Guide
3. Click Enable/Disable.
4. Click OK to confirm.
l
If there are no running ZVM instances, the host status changes to Disabled.
l
If there are running ZVM instances, the host status changes to Pending Disabled.
Enable a ZVM Host
Enabling a ZVM host allows the license server to issue a Zing license to the ZVM host, when
requested.
To enable the Zing license on a ZVM host:
1. From the Zing license server, click Hosts.
2. Select the ZVM host you want to enable. Click anywhere in the host row to select the host.
3. Click Enable/Disable.
4. Click OK to confirm.
Delete a ZVM Host
The Delete host button forcefully removes a ZVM host from the license server pool. This option is used
when the ZVM host is no longer physically available. When a ZVM host is deleted, the license on the
ZVM host is not touched.
To forcefully remove a ZVM host from the license server pool:
1. From the Zing license server, click Hosts.
2. Select the ZVM host you want to remove from the license server pool. Click anywhere in the host
row to select the host.
3. Click Delete host.
4. Click OK to confirm.
Unconfigure a ZVM Host
The Unconfigure button permanently removes a ZVM host from the license server pool and removes
the Pool license configuration from the ZVM host.
To unconfigure a ZVM host and remove it from the license server pool:
1. From the Zing license server, click Hosts.
2. Select the ZVM host you want to remove from the license server pool. Click anywhere in the host
row to select the host.
3. Click Unconfigure.
4. Click OK to confirm.
Azul Systems
Confidential and Proprietary
148
Specific Use-Cases: Zing Installation
Managing License Server Users
For best practice, create additional users for managing the license server. The default user and role for
the license server is Admin user with Administrator role. The Administrator role has permission to
view and manage all functions in all the license server.
To manage users:
1. Define custom roles.
A custom role can have any name and any assortment of access privileges. Access is granted
at tab level. All the options that are available from a tab are available to the role with that tab
selected. The Admin role cannot be edited.
2. Create users and assign them a role.
A user has a name and a login and is assigned a single role. With a role assigned the user has
access to all the tabs granted to the role. Once a new login name is created, that name cannot
be edited, but it can be deleted. The admin user can be edited.
To create users with limited permission:
1. Create a new role with limited permissions.
2. Create a new user and apply the new role.
User management activities include:
l
Add a User Role
l
Edit a User Role
l
Delete a User Role
l
Add a User
l
Change User Passwords
l
Edit User Definitions
l
Delete a User
Add a User Role
To add a Role:
1. From the Zing license server, click Configuration > Role.
Azul Systems
Confidential and Proprietary
149
Zing Installation and Administration Guide
All the roles defined for access to the license server are listed.
2. Click Add.
3. Enter a Name and optionally, a Description for the Role.
4. Select the new role privileges. Click Custom, then click the checkboxes for the tabs users with this
role can have access to.
Allows user access to <tabname> tab, where the <tabname> options are:
l
ZVM host license – Displays all ZVM hosts that have had a Zing license assigned to them
from the license server.
l
Hosts – Displays all the ZVM hosts in the license server pool.
l
Server license – Displays all the Pool licenses active with the license server.
l
Audit Log – Displays the Audit Log of messages between the hosts and license server.
l
User – Displays the users defined for the license server.
l
Role – Displays the roles defined for the license server.
l
Settings – Displays the configurable settings for ZVM hosts.
Azul Systems
Confidential and Proprietary
150
Specific Use-Cases: Zing Installation
l
Notifications – Displays the notification messages that can be sent to specified email
addresses.
A user assigned this role has permission to view and manage only the selected license server
tabs.
5. Click Save.
The new role is listed in the Role tab.
Edit a User Role
To edit a role:
1. From the Zing license server, click Configuration > Role.
2. Select the role to edit. Click Edit.
The default Admin role cannot be edited.
3. Edit the fields as needed. Click Save.
Delete a User Role
To delete a role:
1. From the license server, click Configuration > Role.
2. Select the role to delete. Click Delete.
3. Confirm to delete the selected user. Click OK.
Add a User
To add a new user:
1. From the license server, click Configuration > User.
Azul Systems
Confidential and Proprietary
151
Zing Installation and Administration Guide
All the users allowed access to the license server are listed.
2. Click Add.
3. Enter the new user information.
l
Full name – This name can be edited later.
l
Login name – This name cannot be edited, once created. Though it can be deleted.
l
Email – Must be in valid email format, including the @.
4. From the menu, select a Role for this user.
5. Enter a Password for this user.
6. Click Save.
Change User Passwords
To change a user's password:
1. From the license server, click Configuration > User.
2. Select the user to be edited. Click Change Password.
3. Enter the new password. Click Save.
Delete a User
To delete a user:
1. From the license server, click Configuration > User.
2. Select the user to delete. Click Delete.
Azul Systems
Confidential and Proprietary
152
Specific Use-Cases: Zing Installation
3. Confirm to delete the selected user. Click OK.
Uninstalling the Zing Licensing Components
To completely uninstall your Zing licensing components:
l
Remove the License Server
l
Remove your Pool License
Remove the License Server
1. Login to the license server machine using the same user ID that was used when the license server
was installed. Or login as root user.
2. Locate the license server files. Per the directions in Install the License Server, locate the
installation directory. For example:
/zingserver/zing-license-pool/
3. Stop the license server. From the command line where the license server is installed, type:
$ <path>/zing-license-pool/bin/stopserver
Where path is the license server installation directory. For example:
$ /zingserver/zing-license-pool/bin/stopserver
4. Delete the directory and all its contents.
$ cd /zingserver/zing-license-pool/
$ rm -rf zing-license-pool-server<version>
Remove your Pool License
1. Login to the license server machine using the same user ID that was used when the license server
was installed. Or login as root user.
2. Locate your Azul license server license.
This is the file Azul emailed you, <your_company>-pool.zip. Per the directions in Store
the Pool License Zip File, locate the installation directory, <zing_server_path>. For
example:
/zingtool/
3. Delete the directory and all its contents.
$ cd /zingtool/
$ rm <your_company>-pool.zip
Upgrading the Zing Licensing Components
The Zing licensing components include:
For the ZVM host:
Azul Systems
Confidential and Proprietary
153
Zing Installation and Administration Guide
l
Zing license file – The Zing license file is not upgraded. Current Zing licenses are issued to
the ZVM hosts by the Zing license server.
l
Zing license daemon – The Zing license package that is installed on every ZVM host with
ZST. Upgrading this requires that you run the ZST upgrade command appropriate to your ZVM
host operating system. See Installing and Configuring Zing System Tools.
For the license server:
l
Pool license – The Pool license file is not upgraded. If you receive a new Pool license, simply
add the new Pool license to the existing set of Pool license files. See Store the Pool License
Zip File.
l
Zing license server – Upgrading the license server is a function of the license server
installation package. To upgrade your Zing license server, follow the installation directions and
confirm the upgrade option. See Upgrade the Pool License Server.
Upgrade the Pool License Server
To upgrade the license server:
1. Prepare to upgrade.
a. Login to the machine with the license server to be upgraded.
b. Shutdown all license server processes.
c. Change to the license server directory.
<zing_server_path>
d. From the Azul website, download the license server upgrade package:
zing-license-pool-server-<version>.sh
2. Run the license server package.
$ <zing_server_path>/zing-license-pool-server-<version>.sh
The installer responds:
Installing Pool License Server...
Checking java 1.6 or higher runtime.
Enter Installation directory [</current_location>]:
Installation directory : <zing_server_path>/zing-license-pool
The Pool License Server is already installed
Ports used by Pool License Server : 8443 9999 4447 27017
If a previous version of the license server exists, prompts to upgrade are displayed.
3. Confirm to continue the upgrade.
Do you wish to shutdown Pool License Server and upgrade? (y)es/(n)o
: y
Azul Systems
Confidential and Proprietary
154
Specific Use-Cases: Zing Installation
Updating Pool License Server files...
Comparing new and installed Pool License Server version...
Installed version (5.5.1.0) is earlier than new version
(5.5.2.0.beta). Upgrading...
Stopping Pool License Server ...
Stopping Pool License Server database...
Fri Mar
8 12:53:27 BackgroundJob starting: DataFileSync
killing process with pid: 24696
Stopped Pool License Server database successfully
Stopping Pool License Server...
l
If the license server ports are busy, the upgrade is cancelled.
Another Server instance is running with Pool License Server
configured ports
Pool License Server is not running.
The port 8443 required by Pool License Server is still in use.
Upgrade canceled.
To configure ports use command 'zing-licensepool/bin/configureports'
To change the port number in the configuration file later, see Connect to License Server.
4. Confirm to start the license server.
Stopped Pool License Server successfully
Database is not running.
...
Updating zing-license-pool/...
Do you wish to start Pool License Server ? (y)es/(n)o : y
Checking ports required for the Pool License Server
...
Started Pool License Server database successfully
Starting Pool License Server...
Checking Pool License Server status...
==============================================================
JBoss Bootstrap Environment
JBOSS_HOME: <zing_server_path>/zing-license-pool/bin/../jboss
JAVA: <java_path>/bin/java
JAVA_OPTS:...
...
==============================================================
Started Pool License Server successfully
Azul Systems
Confidential and Proprietary
155
Zing Installation and Administration Guide
Your upgrade is complete.
Zing Pilot Assist Kit
The Azul Systems® Zing™ platform uses the Zing Virtual Machine (ZVM) to run Java™ technologybased applications. In the Zing product, the Zing System Tools (ZST) component, installed on each
ZVM host system, manages the elastic and highly scalable shared memory resources.
This guide is part of Azul's Zing Pilot Assist Kit (Zing PAK). It provides steps and information to help
you install Zing for evaluation, pilot, and testing purposes.
The Zing Pilot Assist Kit is designed to ensure your trial period functions smoothly. Using theZing Pilot
Assist Kit ensures a successful Zing installation, system configuration, and ZVM launch by:
l
l
Ensuring you are installing a version of Zing that is compatible with your environment.
Ensuring Zing component compatibility -- that the ZVM component version is compatible
with the ZST component version.
l
Validating the host system can support Zing.
l
Checking for required operating system settings.
l
Providing a list of settings that might need to be modified.
l
Providing a means to determine the best set of command line options to launch the ZVM
process without changing any of your pre-existing scripts.
Zing Pilot Assist Kit prepares a recipe to help system administrators configure the host system to use
the ZVM to run your Java applications.
Zing Pilot Assist Kit Quick Start
To use the Zing Pilot Assist Kit:
1. Visit the Azul pilot download website.
2. Complete the forms to order your temporary Zing license.
A temporary evaluation Zing license will be emailed to you.
3. Select a Zing bundle and download it to a <temp_directory>.
Choose the bundle that matches your Java version. You can install a version of Zing for each
Java version you wish to use. The supported Java versions are:
l
Java SE 6.0
l
Java SE 7.0
l
Java SE 8.0
See "Selecting and Validating Zing PAK Download Packages" on page 158 for a list of the Zing
Pilot Assist Kit download files.
Azul Systems
Confidential and Proprietary
156
Specific Use-Cases: Zing Installation
See "Zing Pilot Assist Kit Operating System Requirements" on page 167 for a list of supported
operating systems. Note: DKMS packages and Debian are not supported with the Zing Pilot
Assist Kit at this time.
4. Run the downloaded self-extracting Zing Pilot Assist Kit shell script to analyze your system and
validate it to ensure the ZVM can run your applications.
The script extracts installation files applicable to the operating system used and performs a
number of tests to ensure that the host system is properly configured. If needed, the script
creates a text file that contains instructions for optimally configuring your system.
a. Run the command.
$ zing-pilotkit-<version>.sh
b. Choose the profile that is most applicable to your application’s execution
requirements, low-latency or high-performance.
Use the name of this profile as the command line argument to the script you run to
validate your system.
View the Usage section that follows to help you decide which profile is most
appropriate for your application. For example:
$ ./zing-pilotkit8-XX.XX.sh
Usage:
zing-pilotkit8-XX.XX.sh --help|-h
zing-pilotkit8-XX.XX.sh [-o <output_path>] {high-performance
| low-latency}
Use the help option to view additional information
$ ./zing-pilotkit8-XX.XX.sh -h
Usage:
zing-pilotkit8-XX.XX.sh [-o <output_path>] {high-performance
| low-latency}
profile:
To obtain an application's desired performance objectives,
different sets of tuning options are recommended. Each set
of tuning options is called a profile. Choosing the profile
selects which set of tuning options to use. The recommended
value of each tuning option in the selected set is compared
with the value of that option on the machine where the Zing
VM will be run.
output_path:
When the value of an option on the machine is other than the
recommended value, this script notifies the user and
generates a file in the <output_path> directory with
instructions for fixing the problem.
A system administrator can follow the instructions in the
file to fix the problems found. If not already installed,
Azul Systems
Confidential and Proprietary
157
Zing Installation and Administration Guide
ZST and ZVM installation packages are also extracted to this
directory.
The current directory is used as <output_path> if the option
is not specified.
Important note:
Run this script as a user with the same credentials as the
user who will run the ZVM. The selected profile is copied to
the /home/<username>/.zing/profile directory.
5. Have your administrator install Zing.
a. Forward the extracted Zing installation files, the valid Zing Evaluation license, and
the generated system-administrator-todo-list.txt, to your system
administrator.
The profile files are installed in the /home/<username>/.zing/profile/
directory.
b. Have your system administrator install Zing and configure your system per the
directions in the system-administrator-todo-list.txt file.
See "Understanding the system-administrator-todo-list File" on page 159 for a sample systemadministrator-todo-list.txt file.
See "Appendix A – Zing Installation Prerequisites Details" on page 318 for directions to apply low
latency configuration settings.
6. Rerun the zing-pilotkit-<version>.sh script to ensure that all the configuration settings
are as expected.
7. Optionally, set the JAVA_HOME environment variable to point to the ZVM installation. The default
installation path is: /opt/zing/zing-jdk<version>/
8. Start your Java application using the newly installed ZVM.
Selecting and Validating Zing PAK Download Packages
1. Select the Zing Pilot Assist Kit download package that matches your Java version.
Only well-known standard kernels and operating system versions are supported with the Zing Pilot
Assist Kit. See the See "Zing Pilot Assist Kit Operating System Requirements" on page 167. DKMS
packages and Debian are not supported through the Zing Pilot Assist Kit.
The choices are:
l
Java SE 8.0
zing-pilotkit8-<version>.sh
Checksum (md5) xxxxxxxxxxxx
l
Java SE 7.0
zing-pilotkit7-<version>.sh
Checksum (md5) xxxxxxxxxxxx
l
Java SE 6.0
Azul Systems
Confidential and Proprietary
158
Specific Use-Cases: Zing Installation
zing-pilotkit6-<version>.sh
Checksum (md5) xxxxxxxxxxxx
2. Validate the checksum of your download package.
After downloading the Zing Pilot Assist Kit, at the command line, run the checksum command.
$ md5sum zing-pilotkit-<version>.sh
Sample response
xxxxxxxxxxxx zing-pilotkit-<version>.sh
3. Proceed to See "Zing Pilot Assist Kit Quick Start" on page 156 to install the Zing Pilot Assist Kit.
Understanding the system-administrator-todo-list File
When the zing-pilotkit-<version>.sh script runs, it performs an analysis on your system
settings to verify if they are compatible with Zing. It generates a system-administrator-todolist.txt file that lists any configuration changes required for Zing. The specific settings applied
depend upon the profile you selected: high-performance or low-latency. See "Appendix A – Zing
Installation Prerequisites Details" on page 318 for additional information on applying the recommended
configuration changes.
Sample system-administrator-todo-list.txt File
$ cat /tmp/pilot/system-administrator-todo-list.txt
#
# This is an auto-generated script based on <host> system validation
# results. It contains steps needed to be taken before the Zing
# installation can proceed. Please study the script carefully and follow
# the instructions provided.
#
# Hostname: <host>
# User: <username>
# Date: Wed Apr 1 10:52:23 PDT 2015
#
# OS: "CentOS release 6.4 (Final)"
# Installed memory: 129041 MB
# CPUs cores: 32
#
# *) Configure swappiness factor value
#
# It is recommended to set vm.swappiness factor value to 0 to minimise
# possible negative performance impact caused by processes swapping.
#
# Please add vm.swappiness=0 to /etc/sysctl.conf
Azul Systems
Confidential and Proprietary
159
Zing Installation and Administration Guide
#
# *) Swapping configuration
#
# Swap is enabled on the system. Make sure that it is not used when Zing
# VM is running as this could have serious performance impact.
#
# *) Increase vm.min_free_kbytes for better OOM resistance
#
# Zing requires vm.min_free_kbytes to be set to at least 1048576
#
# You can do it by adding line vm.min_free_kbytes=1048576 to
# /etc/sysctl.conf
#
# WARNING: Before changing vm.min_free_kbytes make sure that at least
# 2097152 Kb (2Gb) of free memory is available otherwise the server will
# hang.
# To display amount of free and used memory in the system use
# > free -k
#
# *) Configure processor.max_cstate kernel boot option
#
# For better performance ZVM expects processor.max_cstate to be set to 0
# Please add "processor.max_cstate=0" to the kernel boot options:
# Edit file /boot/grub/grub.conf
#
# *) Disable use of Transparent Huge Pages
#
# It is recommended that THP feature is turned off by default in Zing
# installation.
# To disable Transparent Huge Pages please add
# "transparent_hugepage=never" to the kernel boot options:
# Edit file /boot/grub/grub.conf
#
# *) Ensure your modifications of the /boot/grub/grub.conf are done
# correctly
#
# Boot arguments passed to your kernel should look like below:
#
Azul Systems
Confidential and Proprietary
160
Specific Use-Cases: Zing Installation
# kernel vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_<host>-lv_
root rd_LVM_LV=vg_<host>/lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_
LV=vg_<host>/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16
crashkernel=137M@0M KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
intel_idle.max_cstate=0 processor.max_cstate=0 transparent_hugepage=never
#
# *) Reboot your system
#
# *) Install ZST
#
# > yum -y —nogpgcheck install /tmp/pilot/zing-zst-6b
#
# *) Install ZVM
#
# > yum -y —nogpgcheck install /tmp/pilot/zing-jdk1.7.0-<version>.x86
# _64.rpm
#
# *) Configure ZST memory driver
#
# > /usr/sbin/system-config-zing-memory
#
a) Type N for the defaults
#
b) Type J to specify the total Zing JVM heap requirement, 20G
# (assuming we are running the 20G JVM app, otherwise 10G)
#
c) Take the remaining defaults
#
# Ask user (<username>) to rerun pilot script in /home/<username>/
# directory:
#
# > cd "/home/<username>/tmp" && bash /home/<username>/zing-pilotkit7# <version>.sh -o /tmp/pilot low-latency
#
Understanding the Validation Profile
The validation profile is created when you run the zing-pilotkit-<version>.sh shell script.
The validation profile is a text file that contains a list of configuration validation checks. During the
pilot evaluation period, these checks are made by the ZVM each time it is started.
This file helps to ensure that your system stays properly configured during the entire pilot evaluation
period. If you provide logs to Azul, it also allows Azul Support Team to better understand the
environment in which the ZVM is running.
Azul Systems
Confidential and Proprietary
161
Zing Installation and Administration Guide
If a validation check does not pass, a warning message is printed and logged in the GC log file. The
warning does not prevent the ZVM from running. This information is also used when the systemadministrator-todo-list.txt file is created.
Pilot validation and options profile files are used during a pilot evaluation period. They are not
intended for production use. See "Converting Zing from Evaluation to Production" on page 167.
Sample validation File
#!/bin/bash
#
# Copyright 2015 Azul Systems, Inc. All Rights Reserved.
#
# Please contact Azul Systems, Inc., 1173 Borregas Avenue, Sunnyvale, CA
# 94089 USA or visit www.azulsystems.com if you need additional
# information or have any questions.
#
# Validation script for low-latency profile
#
# Available validations:
#
# verify_intel_idle # ensures that intel idle driver is switched off
# verify_processor_cstate # ensures that processor.cstate is 1
# verify_thp # ensures that Transparent Huge Pages are disabled
# verify_swappiness # ensures that vm.swappiness factor is <= 10
# verify_swap_usage # ensures that swap is not in use
# verify_min_free # ensures that vm.min_free_kbytes is at least 1G
# verify_zone_reclaim # ensures that vm.zone_reclaim is 1
# verify_zings_memory # ensures that Zing memory service was configured
#
verify_zone_reclaim
verify_swappiness
verify_swap_usage
verify_min_free
verify_intel_idle
verify_processor_cstate
verify_thp
Sample validation Script Output
$ java -jar Test.jar
Azul Systems
Confidential and Proprietary
162
Specific Use-Cases: Zing Installation
Zing VM Warning: Processing options filtering file:
/home/<username>/.zing/profile/options
ARTA: Listening for HTTP connections on 0.0.0.0:54189.
Starting /home/<username>/.zing/profile/validation interpretation...
* intel_idle.max_cstate=0 kernel boot option specified (+) ok
* processor.max_cstate=0 kernel boot option not specified (-) todo
* transparent_hugepage=never kernel boot option not specified (-) todo
* vm.zone_reclaim_mode == 0 [ actual: 0 ] (+) ok
* vm.swappiness factor is >= 0 and <= 10 [ actual: 60 ] (-) todo
* swap usage == 0 [ actual: 1136964 KB ] (-) todo
* vm.min_free_kbytes >= 1048576 Kb [ actual: 135168kb ] (-) todo
Warning:
Your system did not pass qualification tests.
Warning:
system.
Please review the list of failed validations and configure your
Warning:
Warning:
Validations definition:
/home/<user>/.zing/profile/validation
Warning: Zing startup configuration file:
HOME>/etc/startup/startup.conf
<ZING_
ZVM Startup File <ZING_HOME>/etc/startup/startup.sh execution time: 621
ms.
Understanding the Options Profile
The options profile and the contents of its corresponding options file is based on the profile option
you select when you run the zing-pilotkit-<version>.sh script. There are two options:
l
High performance
l
Low latency
The options file contains rules for altering the set of options passed to the ZVM through the Java
launcher command line and/or environment variables.
Initially this file contains a set of rules defined for the profile option you selected when the zingpilotkit-<version>.sh script is run. This file is modifiable and can be changed later.
The options file is a text file with a simple format:
[section-name]
option
...
There are three sections in the options file.
l
l
[ignore] -- lists options to be removed from the list of command line options.
[prepend] -- lists options to be added to the front of the list of command line options after
the ignore processing.
Azul Systems
Confidential and Proprietary
163
Zing Installation and Administration Guide
l
[append] -- lists options to be added to the end of the list of command line options after the
prepend and ignore processing.
The ignore list filters are applied to the those options provided on the command-line and those
specified using environment variables (_JAVA_OPTIONS/JAVA_TOOL_OPTIONS). The prepend and
append section contains options to prepend and/or append, respectively, to the command line.
This file is a convenient and recommended method for fine-tuning options used to run your application
during a Zing pilot evaluation period. Using this options file removes the need to modify any launcher
scripts that are used in your environment.
Sample options Profile
#
# Copyright 2015 Azul Systems, Inc.
All Rights Reserved.
#
# Please contact Azul Systems, Inc., 1173 Borregas Avenue, Sunnyvale,
# CA 94089 USA or visit www.azulsystems.com if you need additional
# information or have any questions.
#
#
# prepend section: enumerates which ZVM options to add to the front of
# the list of options created from those on the command-line and those
# specified using environment variables
#
[prepend]
#
# ignore section: enumerates which ZVM options to remove from the list of
# options created from those on the command-line and those specified
# using environment variables
# options added in the [prepend] and [append] sections are never removed
# from the command line
#
[ignore]
-XX:
# Ignore all –XX options (except those specified in this file)
#
# append section: enumerates which ZVM options to add to the tail of the
# list of options created from those on the command-line and those
# specified using environment variables and previously processed to
# add/ignore those options specified in the prepend and ignore sections
#
[append]
Azul Systems
Confidential and Proprietary
164
Specific Use-Cases: Zing Installation
-Xloggc:verbose.%p.gc
# Print garbage collection information and direct output to the file
# %p expands to the PID of the Zing VM process
-XX:+PrintGCDateStamps
# Print date stamps on garbage collection log lines
-XX:+PrintGCDetails
# Print detailed collector information during garbage collection
-XX:GenPauselessNewThreads=2
# Number of threads used by New Gen Collector
-XX:GenPauselessOldThreads=1
# Number of threads used by Old Gen Collector
-XX:ARTAPort=any
# Specify ARTAPort opened by ZVM (used by ZVision/ZVRobot)
-XX:+KeepSafepointsInCountedLoops
# Counted loops keep safepoint checks in their back edges
-XX:+MinimizeJNICriticalLock
# Minimize JNI_Critical lock usage in the JDK
-XX:+ScanSystemDictionaryBeforeUnload
# Use concurrent System Dictionary scan to minimize chance of long pause
# for unload phase
#-XX:+UseTickProfiler
# Generate Tick Profiler ticks (code profiling available in
# ZVision/ZVRobot)
#-XX:+CollectPollingOps
# Collect Polling Opportunity information.
# This option requires - XX:+UseTickProfiler
#-XX:PollingOpsMinThresholdMicros=50
# Keep polling opportunities that take longer than N micros
Azul Systems
Confidential and Proprietary
165
Zing Installation and Administration Guide
Configuring the Zing Pilot Assist Kit
Typically, the Zing Pilot Assist Kit does not require any additional configuration, however you have the
option to:
l
Change the location where the ZVM looks for the options and validation files
l
Change when the validation check results are reported: always or only when there is an error
l
Prevent the ZVM from running if there are validation errors
To apply Zing Pilot Assist Kit configuration changes, modify the ${ZING_JAVA_HOME}
/etc/startup/startup.conf file.
Sample startup.conf File
#
# Copyright 2015 Azul Systems, Inc. All Rights Reserved.
#
# Please contact Azul Systems, Inc., 1173 Borregas Avenue, Sunnyvale,
# CA 94089 USA or visit www.azulsystems.com if you need additional
# information or have any questions.
#
#
# validation.search_path
#
# ':' - separated list of paths to validation scripts
# The first found script is executed on VM startup
#
# validation.search_path = ${HOME}/.zing/profile/validation
# validation.search_path =
#
validation.search_path = ${HOME}/.zing/profile/validation
#
# validation.output
#
# defines a way of reporting validation script's output to user
#
# validation.output = always
# validation.output = onerror
#
validation.output = onerror
#
Azul Systems
Confidential and Proprietary
166
Specific Use-Cases: Zing Installation
# validation.terminate_on_error
#
# defines either terminate VM execution in case of non-zero exit code
# or not
#
# validation.terminate_on_error = yes
# validation.terminate_on_error = no
#
validation.terminate_on_error = no
#
# options.search_path
#
# ':' - separated list of options-filtering files to apply on VM
# startup Only first found file is processed
#
# options.search_path = ${HOME}/.zing/profile/options
# options.search_path =
options.search_path = ${HOME}/.zing/profile/options
Converting Zing from Evaluation to Production
When you have completed your pilot evaluation and are transitioning to using Zing for production use,
you must make the following changes to your environment.
1. Order and install your production license.
Zing does not continue to run on Evaluation licenses in a production environment.
2. Apply the information identified during your pilot and modify your launcher scripts and the
command line options you pass to the ZVM. Use the pilot profile options file,
~/.zing/profile/options, as the resource to guide you.
3. Remove, or optionally, move, the pilot profile directory and its files, ~/.zing/profile/. This
includes both the options and validation files.
Running the ZVM with a production license while pilot profile files are present causes a warning
on ZVM startup.
Zing Pilot Assist Kit Operating System Requirements
The components ZVM and ZST can be installed on machines running the following operating systems
using .rpm or .deb installers, as appropriate.
Notes
l
Ensure that OpenSSL 0.9.8 or later is installed.
l
On RHEL 5.x or CentOS 5.x systems, also install the Development Tools Package.
Azul Systems
Confidential and Proprietary
167
Zing Installation and Administration Guide
l
l
l
l
All RHEL installations require a registered copy of RHEL and a valid Red Hat Network
(RHN) account user name and password.
Ensure that binutils are installed.
In virtual machine environments, paravirtualization is not supported. Only HVM
(Hardware-assisted Virtual Machine) cluster instances are supported.
The Zing Pilot Assist Kit does not support DKMS or Debian installation.
The following tables list the supported operating systems, kernel versions, and for Amazon EC2
Instances, the Amazon Machine Image (AMI) identification code. Where multiple kernel versions are
listed, any from the list are supported with the associated operating system.
RHEL or CentOS Operating
System
Kernel Version
Supported As Of ZST Version
RHEL/CentOS 7
3.10.0-123
v5.7.6
RHEL/CentOS 6.6
2.6.32-504
v5.7.8
RHEL/CentOS 6.5
2.6.32-431
v5.7.3
RHEL/CentOS 6.4
2.6.32-358
v5.7.0
RHEL/CentOS 6.3
2.6.32-279
v5.7.0
RHEL/CentOS 6.2
2.6.32-220
v5.7.0
RHEL/CentOS 6.1
2.6.32-131
v5.7.0
RHEL/CentOS 6.0
2.6.32-71
v5.7.0
RHEL/CentOS 5.10
2.6.18-371
v5.7.6
RHEL/CentOS 5.9
2.6.18-348
v5.7.0
RHEL/CentOS 5.8
2.6.18-308
v5.7.0
RHEL/CentOS5.7
2.6.18-274
v5.7.0
RHEL/CentOS 5.6
2.6.18-238
v5.7.0
Azul Systems
Confidential and Proprietary
168
Specific Use-Cases: Zing Installation
RHEL or CentOS Operating
System
Kernel Version
Supported As Of ZST Version
RHEL/CentOS 5.5
2.6.18-194
v5.7.0
RHEL/CentOS 5.4
2.6.18-164
v5.7.0
RHEL/CentOS 5.3
2.6.18-128
v5.7.0
RHEL/CentOS 5.2
2.6.18-92
v5.7.0
Oracle Linux Server Operating
System
Supported As Of
Kernel Version
ZST Version
Oracle Linux Server
2.6.39-400.214.3.el6uek.x86_64
v5.7.10
Oracle Linux Server
2.6.39-400.214.4.el6uek.x86_64
v5.7.10
Oracle Linux Server
2.6.39-400.246.2.el5uek.x86_64
v5.7.10
Oracle Linux Server
2.6.39-200.24.1.el6uek.x86_64
v5.7.9
Oracle Linux Server
2.6.32-300.39.2.el6uek.x86_64
v5.7.9
Oracle Linux Server
2.6.32-504.el6.x86_64.x86_64
v5.7.9
Red Hat or CentOS
Operating System
Kernel Version
Supported As Of ZST Version
Messaging Realtime Grid (MRG)
RHEL, RHEL MRG, CentOS
3.6.11.2-rt33.39.el6rt.x86_64 v5.7.3
RHEL, RHEL MRG, CentOS
3.0.36-rt57.66.el6rt.x86_64
Azul Systems
v5.7.3
Confidential and Proprietary
169
Zing Installation and Administration Guide
SLES Operating System
Kernel Version
Supported As Of ZST Version
SLES 11 SP3
3.0.101-0.15
v5.7.6
SLES 11 SP3
3.0.101-0.21
v5.7.5
SLES 11 SP3
3.0.93-0.8
v5.7.3
SLES 11 SP3
3.0.76-0.11
v5.7.0
SLES 11 SP2
3.0.101-0.7.17
v5.7.4
SLES 11 SP2
3.0.13-0.27
v5.7.0
SLES 11 SP1
2.6.32.59-0.7
v5.7.3
SLES11 SP1
2.6.32.12-0.7
v5.7.0
Ubuntu Operating System
Kernel Version
Supported As Of ZST Version
Ubuntu 12.04
3.5.0-34-generic
Ubuntu 12.04
3.2.0-23-generic, 3.2.0-31-generic v5.7.0
Ubuntu 11.04
2.6.38-15-generic
v5.7.0
Ubuntu 10.4
2.6.32-38, 2.6.32-38-generic
v5.7.0
Amazon EC2 Instances
Kernel Version
v5.7.1
AMI ID
Supported As Of ZST
Version
Amazon Linux
3.4.37-40.44
ami-a73758ce
v5.7.0
Amazon Linux
3.4.43-43.43
ami-a73758ce
v5.7.0
Azul Systems
Confidential and Proprietary
170
Specific Use-Cases: Zing Installation
Amazon EC2 Instances
Kernel Version
AMI ID
Supported As Of ZST
Version
Amazon Linux
3.4.48-45.46
ami-a73758ce
v5.7.0
Amazon Linux
3.4.57-48.42
ami-a73758ce
v5.7.0
RHEL 7.0 – Amazon Cloud
3.10.0-123
ami-785bae10
v5.7.6
RHEL 6.5 - Amazon Cloud
2.6.32-431
ami-63b6910a
v5.7.3
RHEL 6.4 - Amazon Cloud
2.6.32-358
ami-9d0b64f4
v5.7.0
3.0.101-0.8-default
ami-e572438c
v5.7.5
3.2.0-54-virtual
ami-b93264d0
v5.7.3
SLES 11 SP3 Amazon
Cloud
Ubuntu 12.04 Virtual
Amazon Cloud
Azul Systems
Confidential and Proprietary
171
Zing Installation and Administration Guide
Zing Advanced Tuning
Zing Advanced Tuning is for expert Java programmers and experienced Zing users.
Zing Advanced Tuning: ReadyNow!
This guide provides a description of Zing's advanced tuning option, ReadyNow! that provides a set of
flags and options to help your Java applications be ready to perform real transaction processing at
designated start times.
Caution:
The suggestions presented in this guide are intended for expert users.
Applying these suggestions inappropriately can have unintended
consequences on your Java application performance.
The ReadyNow! feature is not an automated tuning tool. You must use
discretion when applying the ReadyNow! flags and options. Contact your Azul
Field Consultant or Azul Customer Support for additional information.
ReadyNow! Overview
Java applications commonly use a warm-up period to ensure that hot methods are compiled before real
transaction processing begins.
Zing now includes an enhanced version of jstat that displays summary statistics related to profile
log application. By using a profile log with jstat, you can ensure and verify that the application is
warmed up on a running system.
Note:
If your Zing release is previous to Zing 15.05.0, you must use
ProfilePrintReportrather than the enhanced version with jstat.
Unfortunately, if a condition inside the application is used to determine if a transaction is stored to a
database or a message processing system (such as an exchange), critical pieces of persistence
related code might not be compiled before real transaction processing begins.
The Zing ReadyNow! feature provides the following commands, flags and options to ensure your Java
application is ready for transaction processing:
l
CompilationPolicyChoice – Provides two cold method compilation policies: stackwalking policy (default) and a non-stack walking policy.
l
DynamicBranchEliminationLevel– Reduces unreached deoptimizations. Provides
configurable dynamic branch elimination to reduce ill-timed deoptimizations, such as rarely
taken but time-critical business logic.
Azul Systems
Confidential and Proprietary
172
Zing Advanced Tuning
l
UseEarlyClassLoading – Reduces unloaded / uninitialized deoptimizations. Loads
required classes before performing a C2 compilation.
l
EagerInitializationDuringEarlyClassLoading – Immediately initializes classes
that do not have a static initializer, which is typically 80 percent or more classes.
l
ProfileLogOut/In – Helps train your Java application to incorporate late compilations into
the entire compilation process. ProfileLogOut uses information from a log of profile
information while system is running and ProfileLogIn instructs Zing to use information
from an existing log.
Run ReadyNow!
To use the ReadyNow! flags and options:
1. Run selected options to identify possible problem areas. For example:
l
PrintCompilation, to identify late compilations.
l
TraceDeoptimization, to identify the location and reasons for deoptimizations.
2. Select and apply the Zing flags and options to your Java application runtime.
ProfileLog Use Case
Priming Java code for speed at market open is a key goal and using ProfileLog information to tune
opening code helps to achieve that goal. The practice of running simulated data to warm up the system
every morning runs the risk that the simulated data might initiate an unintended trade.
ReadyNow! ProfileLog support allows a VM to be warmed up simply by loading and initializing classes,
which is preferable to running simulated trades through a production system. You can profile the
opening code to determine which classes and methods have dependencies that slow down the opening
processing by either being unloaded or uninitialized and tune the java code.
Azul Systems
Confidential and Proprietary
173
Zing Installation and Administration Guide
Pre-JIT ProfileLog Use Case
To provide an instantaneous benefit from the ProfileLog, Zing includes a pre-JIT feature that allows the
information from the Profile Log to be loaded and initiated before main is started. This allows most
methods to be JIT-ed before the system ClassLoader starts.
Pre-JIT automatically calls classes from the bootstrap and system ClassLoaders.Currently, using
jstat with the profile log is limited to the bootstrap and system ClassLoaders.
The additional class loading, initialization, and compilation to support pre-JIT is beneficial for most
systems, but the feature does cause Zing to take longer to start. If the start-up delay is not desirable,
this functionality can be disabled using -XX:-ProfilePreloadClasses.
Run a Profile Restoration
Run a profile restoration using the -XXProfileLogIn flag. Adding jstat reports on how well the
restoration of the classes is working through loading and initialization before running main. After the
classes are ready, profile restoration can wait for the compilations to finish before running main -effectively, providing precompilation for most methods. Currently this functionality is limited to classes
loaded by the bootstrap and system ClassLoaders.
Note:
If your Zing release is older than Zing 15.05.0, you must use
ProfilePrintReport The labeling conventions in jstat are different from
those in ProfilePrintReport.
Display Summary Statistics Using jstat
Running ProfileLogIn/Out with jstat -profile {pid} {optional refresh
interval} provides enhanced jstat support that displays summary statistics related to the
profilelog feature and enables a pre-compiled JIT feature.
Using jstat with profile helps ensure and verify that the application is warmed up. Here is an
example of the code:
jstat -profile {pid} {optional refresh interval}
Summary Statistics - Example Output A
From reading the statistics, you can determine if the profile log was effectively applied and the system
is warmed up.
The following statistical values indicate a healthy system:
l
MatchedLoads is almost equal to Classes.
l
UnmatchedLoads is small relative to Classes (<5%).
l
C1Compiled is almost equal to C1Eligible (>95%).
Azul Systems
Confidential and Proprietary
174
Zing Advanced Tuning
l
C2Compiled is almost equal to C2Eligible (>90%).
l
ProfApplied is almost equal to ProfAvailable (>90%).
l
ClassErrors and MethodErrors are almost zero.
A few different scenarios interfere with using the profile log. For example, a high value for
UnmatchedLoads, ClassErrors, or MethodErrors requires further investigation. To see a break
down by error type, use jstat -profileerrors.
Summary Statistics -- Example Output B
If CollidingClasses or RepeatMatchedClassLoads is high (relative to Classes above) then...
- the same version of a class is being loaded by different ClassLoaders
OR
- the same class is being unloaded and reloaded
If UnresolvedClasses, UnresolvedMethods, or CollidingMethods is high (>10) then the
profile log is corrupt.
If UnmatchedLoads is high relative to Classes (>5%) then:
l
The original profile run did capture a significant sample of the application
or
l
There are too many classes that have changed for the profile to be useful -- this might occur
because of a recent library or JDK upgrade
For a more detail breakdown of problems use ProfilePrintReport.
Monitoring ProfileLog Effectiveness
Additional profile log information is available if you're not conducting JIT precompilation, using the
jstat command. To understand how well the information from the profile log is applied, Zing includes
reporting tools to assess the overall effectiveness and provides a detailed list of areas for improvement.
Using ProfileLog Information
In applications with a warm-up phase that does not compile all the necessary methods, using
ProfileLog can help train your Java application to incorporate late compilations into the entire
compilation process. Use the ReadyNow! ProfileLog to learn the deoptimizations encountered from
the previous run of the VM. It waits until all the necessary related classes are initialized before
compiling a method in C2.
When a previously compiled class is initialized, all of the methods declared inside the class that were
C1 compiled in the prior run will be C1 compiled. When all classes on which a method depends and
their declaring class are initialized, a profiled method will be C2 compiled.
Azul Systems
Confidential and Proprietary
175
Zing Installation and Administration Guide
To utilize ProfileLog, run your Zing Java application with the following 3 command options:
l
-XX:ProfileLogOut={file} - Tells Zing to produce a log of profile information while its
running.
l
-XX:ProfileLogIn={file} - Instructs Zing to use information from an existing log.
l
-XX:+/-ProfilePrintReport - Directs Zing to print report about how well the profile log
was applied at VM exit.
Run ProfilePrintReport carefully in a virtual environment. The virtual machine's
Note: exit routines will not be run when a process is terminated with a 'kill -9'. Using 'kill' or 'kill
-2' CTRL-C will produce the output to stdout.
The ProfileLogOut and ProfileLogIn options may be used together and can also point to the
same file. The current file information will be read in its entirety - before Zing starts to create a new log.
The ProfileLogOut is a record of the previous compilation and the deoptimization decisions from
the previous run. ProfileLogIn allows Zing to base its decisions on the information from a previous
run.
Run ProfileLog carefully in a production environment because it does incur some logging
Note: overhead in the Java threads.
Analyzing the Report
If a large number of methods or a critical method appears in the "Dependencies" list of a class in the
profile report, you may wish to manually advance the profile restoration process by loading and
initializing the class in question.
After the desired classes are loaded, run with ProfilePrintReport again to make sure that the
desired methods are no longer in any "Dependencies" list.
A method may still appear in a dependency list if it depends on more than one class. The unresolved
count next to the method indicates how many class dependencies have been and need to be satisfied.
The ProfilePrintReport Summary report:
l
l
l
Is organized by class and indicates how well the profile was able to be used. The profile
system matches classes and expects an EXACT match of the contents of the
corresponding class file.
Indicates precisely which parts of the saved profile were able to be restored and, when part
of the profile is not restored, it clearly indicates which class needs to be initialized and
loaded.
Describes the numbers of classes loaded and the types of loads that occurred. It also shows
the numbers of c1 and c2 compilable methods that were successful out of the total number
possible, and also reports on the amount of profiled methods and errors.
The ProfilePrintReport Summary example below shows that:
Azul Systems
Confidential and Proprietary
176
Zing Advanced Tuning
l
The profile log contains information about 9852 classes
l
The classes contain information on 3546 methods.
l
1435 methods have detailed profiling information, but only 95 had profiles applied.
l
2922 are eligible for c1 compilation, but only 435 were c1 compiled.
l
770 are eligible for c2 compilation, but only 95 were c2 compiled.
The ProfilePrintReport details as seen in the example below indicate what did not work:
Tuning Opening Java Code
Improve runtime performance by running a performance test using ProfileLogIn and
ProfileLogOut and develop a ProfileLog report on typical market initialization processing.
Analyze the ProfileLog Summary to interpret which classes and methods had dependencies that
caused incomplete compilation. Determine which classes and methods can be revised to prevent
common compilation errors such as unreached, null_check, or unloaded.
Azul Systems
Confidential and Proprietary
177
Zing Installation and Administration Guide
Ensure That Critical Methods are Compiled
Use a combination of the following techniques that are available to ensure critical methods are
compiled in a timely fashion:
l
Compilation Policy
l
Compilation Thresholds
l
Compiler API
Compilation Policy
The Zing ReadyNow! flag, CompilationPolicyChoice, provides two separate compilation policies
that are typically applied as a flag to the Java command:
l
Stack Walking CompilationPolicy
CompilationPolicyChoice=1 (Default)
The stack walking policy favors throughput over creating a timely (immediately beneficial)
compilation. The policy does this by walking up the stack when a hot method is identified to
find the furthest caller (direct or indirect) that is able to keep the hot method inline.
l
Non-Stack Walking CompilationPolicy
CompilationPolicyChoice=0
This Zing ReadyNow! non-stack walking policy favors timely (immediately beneficial)
compilations over throughput.
The low impact on throughput makes this policy appropriate for applications where it is not
possible to warm-up all the methods before transaction processing, even if the application
has demanding throughput requirements.
Though this policy favors timeliness over throughput, the impact on throughput compared to
the stack walking policy is usually small (-3% to +2%).
The non-stack walking policy can also increase code cache usage.
To apply the Zing CompilationPolicyChoice option:
1. Use the information from the PrintCompilation log to:
l
Determine the timing of method compilations.
l
Check how deep the average compiler queue is during warm up.
2. Set the CompilerThreads to a value high enough to support the average compiler queue. For
example:
-XX:CodeCacheOopTableSize=64m -XX:KlassTableSize=32m
XX:CIMaxCompilerThreads=12
-
See the Compilation Thresholds section below for additional options to complete your compilation
policy.
Azul Systems
Confidential and Proprietary
178
Zing Advanced Tuning
Compilation Thresholds
After the Zing CompilationPolicyChoice option has been applied, reduce the compilation
threshold, using the following steps.
1. Select one of the CompilationThreshold:
l
If critical methods are not being compiled during warm-up, then reduce
C1CompilationThreshold.
l
If appropriate for your Java application, also reduce the C2CompilationThreshold.
2. If you reduce the CompilationThreshold to compile earlier, use the Zing non-stack walking
compilation policy option, CompilationPolicyChoice=0.
Compiler API
Zing includes two separate just-in-time (JIT) compilers, C1 and C2. Prior to Zing 5.10, the JITs
occurred automatically and were controlled by a combination of policy and C1 and C2 compile
thresholds. As of Zing 5.10, JITs continue to happen automatically but they can also be controlled
manually through the compiler API. Compiles can be manually triggered using the Compiler class. The
methods provide the additional ability to select which specific JIT to trigger, using Compiler.command
to define “(c1)” or “(c2)”. Zing also accepts “(compile)”, in which case Zing compiles both C1 and C2.
Examples:
The following examples produce both C1 and C2 compiles for all the methods of
java.util.String:
Compiler.compileClass(java.util.String.class);
Compiler.compileClasses("java.util.String");
Compiler.command("{java.util.String.*}(compile)")
The following examples use Compiler.command to create just C1 or C2 compiles:
Compiler.command("{java.util.String.*}(c1)")
Compiler.command("{java.util.String.*}(c2)")
Note:
When using Compiler.compileClasses and Compiler.command:
l
The matched classes must already be loaded – and will be initialized as a result of compiling.
l
The pattern may contain leading and/or trailing wild-cards (*), but may not include a wild-card in
the middle.
The compiler API initializes the classes being compiled, but you can use
UseEnhancedClassResolution, UseEarlyClassLoading, and
EagerInitializeDuringEarlyClassLoading if using the API causes an increase
in "unloaded" and "uninitialized" deoptimizations.
Azul Systems
Confidential and Proprietary
179
Zing Installation and Administration Guide
Reducing Deoptimizations
All Java Virtual Machines use optimistic optimization to try improve throughput. Deoptimization occurs
when these optimistic optimizations need to be undone. Unfortunately, deoptimization can be a
problem for latency sensitive applications.
Even during warmup, JIT compiled code is deoptimized with some regularity. deoptimization logs
indicate that common causes are:
l
Unreached – a path is never taken during warmup
l
Unloaded/uninitialized class – a class that has not been resolved in the calling context uses a
previously untaken path
Zing's ReadyNow! provides a set of flags and options to help reduce commonly occurring types of
deoptimizations. These include:
l
DynamicBranchEliminationLevel
l
ImplicitNullChecks
l
UseEarlyClassLoading
l
EagerInitializationDuringEarlyClassLoading
l
UseEnhancedClassResolution
To apply deoptimizations:
1. Verify that deoptimizations are a problem.
l
Identifying Deoptimizations with PrintCompilation
l
Identifying Deoptimizations with TraceDeoptimization
2. Apply the appropriate adjustments as either a flag to the Java command or as an option to the
identified method.
l
Reducing Unreached Deoptimizations
l
Reducing Null_Check Deoptimizations
l
Reducing Unloaded Deoptimizations
l
Reducing Uninitialized Deoptimizations
Identifying Deoptimizations with PrintCompilation
Using the PrintCompilation flag helps identify if deoptimization is a problem.
To identify deoptimizations:
1. Review the PrintCompilation log.
2. Count the number of times each C2 method and C1 method was compiled.
3. Ensure the count is accurate.
Azul Systems
Confidential and Proprietary
180
Zing Advanced Tuning
l
Exclude OSR compiles (lines containing %) in the count.
l
Check for overloaded methods.
In the compilation log, only the name of the method is shown not the full signature. If the
number of C1 compilations exceeds the number of C2 compilations, then the method is
probably overloaded.
4. Determine if deoptimization is occurring.
If the number of C2 compilations is higher than the C2 compilations, then deoptimization is
probably occurring.
Identifying Deoptimizations with TraceDeoptimization
Running the TraceDeoptimization flag with your Java application, provides information about the
location and reason for deoptimizations.
Below is a sample output from a TraceDeoptimization log.
As shown in the output for thread[27434], each optimization may result in two or more lines in the
console log.
The first line starts with the Uncommon trap that occurred when the compiled code encountered a
trap. This line includes the top-level method being deoptimized and the reason for deoptimization.
The following one or more DEOPT REPACK lines correspond to the interpreter frames created during the
machine frame during deoptimization. Multiple interpreter frames are created if the deoptimization
occurred inside an inlined method.
To identify deoptimization types:
1. Review the TraceDeoptimization log.
2. Search for Uncommon trap entries.
a. Count the number of times each method was deoptimized. In the sample output, the Top-Level Deopted Method is
java.lang.String::equalsIgnoreCase.
Azul Systems
Confidential and Proprietary
181
Zing Installation and Administration Guide
b. Count the number of times each deoptimization reason occurs.
In the sample output, the Deopt Reason is unreached.
3. Search for occurrences where the inlining assumption is violated due to class loading. For example:
4. Identify and apply a deoptimization remedy corresponding to the deoptimization type. See the
following sections:
l
Reducing Unreached Deoptimizations
l
Reducing Null_Check Deoptimizations
l
Reducing Unloaded Deoptimizations
l
Reducing Uninitialized Deoptimizations
In Zing 5.10, the deoptimization log content and layout have a timestamp at the beginning of each line
and a compile_id at the end of the line as shown in the example below. The compile_id references
the ID from the PrintCompilation log.
Azul Systems
Confidential and Proprietary
182
Zing Advanced Tuning
Reducing Unreached Deoptimizations
The most common type of deoptimization for most applications is unreached. This deoptimization type
usually accounts for more than 80% of all deoptimizations.
This deoptimization occurs when C2’s dynamic branch elimination decides to not compile a portion of
Java code that is used later. In most applications, the majority of the unreached deoptimizations occur
at start-up and are benign.
However, some applications have rarely taken, but time critical business logic. With these types of
applications, dynamic branch elimination can result in ill-timed deoptimizations. To combat this
problem, Zing provides theDynamicBranchEliminationLevel flag and option. The
DynamicBranchEliminationLevel supported levels are:
2, conservative – Untaken branches at pointer comparison sites are eliminated. This includes
unvisited sites.
3, heuristic – Not implemented.
4, aggressive – Untaken branches at all comparison sites are eliminated. This includes unvisited
sites.
Using DynamicBranchEliminationLevel as a Flag
Zing's DynamicBranchEliminationLevel default flag is level 4, aggressive, because aggressive
branch elimination yields a significant increase in throughput.
Note:
Use caution if you reduce the elimination level to 2, conservative, across the entire
application because it might decrease throughput, from a small (1-3%) to very large
(20%) amount.
Using DynamicBranchEliminationLevel as an Option
If your applications use rarely executed, but time critical business logic, reducing the
DynamicBranchEliminationLevel on a per method basis to control compiler choices, is
recommended.
To help avoid unreached deoptimizations in business logic:
l
Use the DynamicBranchEliminationLevel option at a per method level in the
CompileCommandFile. For example:
option package/SomeClass::topLevelMethod
DynamicBranchEliminationLevel=2
l
When the DynamicBranchEliminationLevel option is used, you must also specify the
top-level method being compiled in the file. Do this even if an inlined method triggered the
deoptimization.
Azul Systems
Confidential and Proprietary
183
Zing Installation and Administration Guide
Using UseOldBranchProfileAdjustmentAtDeopt as a Flag
If an application has repeated “unreached” deoptimizations at the same BCI setting the 5.10
UseOldBranchProfileAdjustmentAtDeopt to false may allow the application to stabilize
sooner.
Reducing Null_Check Deoptimizations
A common type of deoptimization for many applications is a null_check deoptimization. This
deoptimization usually occurs when an implicit null check fails and the null pointer is handled by the
SEGV handler.
Using ImplicitNullCheck as a Flag
Zing provides an ImplicitNullCheck flag that turns on and off the null_check deoptimization.
Note:
Use caution when turning this flag off for the entire application, because it might
decrease throughput considerably.
Fortunately in most applications, the majority of null_check deoptimizations occur during warm-up
and are benign.
Using ImplicitNullCheck as an Option
If a small number of methods are experiencing post warm-up deoptimizations caused by null_check,
then it is useful to disable ImplicitNullChecks for only those specific methods. this is done in the
CompileCommandFile.
To disable ImplicitNullChecks for null_check deoptimizations:
l
Set the ImplicitNullChecks option at a per method level in the
CompileCommandFile. For example:
option package/SomeClass::topLevelMethod -ImplicitNullChecks
l
When the ImplicitNullChecks option is used, you must also specify the top-level method
being compiled in the file. Do this even if an inlined method triggered the deoptimization.
Reducing Unloaded Deoptimizations
In some applications, unloaded deoptimizations are common. This problem typically occurs in
applications with a warm-up phase that does not compile all the necessary methods.
To reduce unloaded deoptimizations, Zing provides the flag, UseEarlyClassLoading. This flag
loads required classes before performing a C2 compilation.
Reducing unloaded deoptimizations by combining UseEarlyClassLoading and
EagerInitializationDuringEarlyClassLoading can eliminate the need for using the
warmup period to run placeholder activity through the application to ensure that common paths are
compiled just in time. See Reducing Uninitialized Deoptimizations
Azul Systems
Confidential and Proprietary
184
Zing Advanced Tuning
Using UseEarlyClassLoading as a Flag
In benchmarks, using UseEarlyClassLoading had no impact on throughput. However,
UseEarlyClassLoading can simultaneously load a large number of classes.
The additional class loading can simultaneously invalidate a large number of class hierarchy analysis
(CHA) inlining decisions, that in turn, can result in a deoptimization storm. If the deoptimized methods
are still hot, the deoptimization storm is followed by compilation and does impact throughput.
If and when a deoptimization storm is occurring, look for Safepoint for Deopt patching lines
in the TraceDeoptimization log that contains a long method list. If compiling a specific method is
causing the problem, a CompileCommandFile option can be applied to that method to disable the
feature.
To disable UseEarlyClassLoading for deoptimization storms:
l
Set the UseEarlyClassLoading option at a per method level in the
CompileCommandFile. For example:
option package/SomeClass::topLevelMethod -UseEarlyClassLoading
l
When the UseEarlyClassLoading option is used, you must also specify the top-level
method being compiled in the file. Do this even if an inlined method triggered the
deoptimization.
Using UseEarlyClassLoading as an Option
If and when a deoptimization storm is occurring, look for Safepoint for Deopt patching lines
in the TraceDeoptimization log that contains a long method list. If compiling a specific method is
causing the problem, a CompileCommandFile option can be applied to that method to disable the
feature.
To disable UseEarlyClassLoading for deoptimization storms:
l
Set the UseEarlyClassLoading option at a per method level in the
CompileCommandFile. For example:
option package/SomeClass::topLevelMethod -UseEarlyClassLoading
l
When the UseEarlyClassLoading option is used, you must also specify the top-level
method being compiled in the file. Do this even if an inlined method triggered the
deoptimization.
Reducing Uninitialized Deoptimizations
In some applications, uninitialized deoptimizations are common. This problem typically occurs in
applications with a warm-up phase that does not compile all the necessary methods. Resolving
dependencies in the Java thread as compilation is being scheduled is key. It removes many trapping
situations and by combining eager initialization with eager resolution, traps can often be eliminated
completely, even for new objects and static field and method access.
Azul Systems
Confidential and Proprietary
185
Zing Installation and Administration Guide
Using UseEnhancedClassResolution as a Flag
To reduce uninitialized deoptimizations, Zing provides the flag,
UseEnhancedClassResolution. This flag reduces uninitialized deoptimizations when the
class is already loaded and initialized, but has not been resolved within a particular class
This optimization only applies to allocation sites and might not help applications that are deliberated
design to avoid garbage collection.
Using UseEnhancedClassResolution as an Option
The UseEnhancedClassResolution option can be used on per method basis in the
CompileCommandFile, but given the low impact on throughput, this is usually unnecessary.
Using EagerInitializationDuringEarlyClassLoading as a Flag
If UseEarlyClassLoading is already being used and UseEnhancedClassResolution failed to
reduce uninitialized deoptimizations, using the flag
EagerInitializationDuringEarlyClassLoading may help.
Zing Advanced Tuning: @Contended
This guide provides a description of Zing's advanced tuning use of the @sun.misc.Contended
annotation to reduce cache contention across multiple threads.
The suggestions presented in this guide are intended for expert users. Applying
these suggestions inappropriately can have unintended consequences on your
Java application performance.
Caution:
You must use discretion when applying the @Contended annotation.
Contact your Azul Field Consultant or Azul Customer Support for additional
information.
@Contended Overview
The Java SE 8 platform introduced [0] a new annotation called @Contended [1] to reduce "False
Sharing" [2],[3],[4]. False sharing is a term to describe performance degradation when several threads
are modifying independent variable(s) sharing the same cache line.
@Contended is applied as a conventional Java language annotation to fields in a class. It specifies that
some field(s) in an object are probably highly contended across processor cores.
At runtime the VM optimizes field layout. At the VM's discretion, those fields annotated as contended
are given extra padding so they do not share cache lines with other fields that are likely to be
independently accessed. This helps to avoid cache contention across multiple threads.
Applying @Contended to a class, field, or group:
Note:
l
Azul Systems
Does not force the VM to add padding or optimize the field layout in a specific way.
Confidential and Proprietary
186
Zing Advanced Tuning
Can substantially increase the size of a given object.
l
Because the increase in size can be double or more, use @Contended sparingly.
Zing provides an implementation of this feature for JDK 7.
Using @Contended Annotation
To use the @Contended annotation:
1. In your Java application, add the @Contended annotation to denote the specific classes and/or their
instance fields that are eligible for padding to avoid cache contention. See the following sections for
examples.
Marking a static field with @Contended is a non-operational (noop) action.
2. Select and apply the Zing flags and options at your Java application runtime.
Marking a Class as Contended
To mark a class as contended, precede the class with @Contended. In this example, both field1
and field2 are padded from the both sides.
@Contended
public class ContendedClass {
private int field1;
private Object field2;
}
Marking an Instance Field as Contended
To mark an instance field as contended, precede the field with @Contended. In this example, the
padding is applied to field1 only.
public class ContendedField {
@Contended
private int field1;
private Object field2;
}
Marking Multiple Fields as Contended
To mark multiple fields as contended, precede each field with @Contended. In this example, both
fields have separate padding.
public class ContendedFields {
@Contended
private int field1;
Azul Systems
Confidential and Proprietary
187
Zing Installation and Administration Guide
@Contended
private Object field2;
}
Marking Groups as Contended
To mark a group as contended, include the optional @Contended parameter in the @Contended
annotation to describe the equivalence class for contention group. In this example, The
contendedField1 and contendedField2 fields are padded from everything else, but are still
densely packed with each other.
public class ContendedGroups {
@Contended("updater1")
private Object contendedField1;
@Contended("updater1")
private Object contendedField2;
@Contended("updater2")
private Object contendedField3;
private Object plainField5;
private Object plainField6;
}
Zing @Contended Options
After applying @Contended annotation to your Java application, include the Zing launch and
configuration options in your Java command. The Zing @Contended options and flags are:
l
To enable (disable) @Contended annotation support.
-XX:+EnableContended
[<--default]
-XX:-EnableContended
l
To restrict (not restrict) @Contended to trusted classes only.
This applies to classes loaded by bootstrap or extension classloaders.
-XX:+RestrictContended
[<--default]
-XX:-RestrictContended
l
To specify the number of bytes used to pad the fields/classes marked @Contended.
Default value is 128. The value must be in between 0 and 8192 (inclusive) and be a multiple of
8.
-XX:ContendedPaddingWidth=128
Azul Systems
[<--default]
Confidential and Proprietary
188
Zing Advanced Tuning
@Contended References
The following links provide additional information about the general use of @Contended.
[0] http://openjdk.java.net/jeps/142
[1] http://gee.cs.oswego.edu/dl/jsr166/src/dl/sun/misc/sun/misc/Contended.html
[2] http://en.wikipedia.org/wiki/False_sharing
[3] http://mechanical-sympathy.blogspot.ru/2011/07/false-sharing.html
[4] https://blogs.oracle.com/dave/entry/java_contented_annotation_to_help
[5] http://mail.openjdk.java.net/pipermail/hotspot-dev/2012-November/007309.html
[6] http://shipilev.net/talks/jvmls-July2013-contended.pdf
[7] http://robsjava.blogspot.ru/2014/03/what-is-false-sharing.html
Azul Systems
Confidential and Proprietary
189
Zing Installation and Administration Guide
Starting or Stopping the Zing Services
The ZST services start automatically after installation. After configuration all ZST services are
restarted automatically. This includes Zing Memory.
It is recommended that you configure Zing memory to start with startup scripts to ensure Zing memory
can reliably allocate the required memory.
Zing Memory holds memory even after reboot. If you intend to run non-zing JDK's exclusively or rerun a
baseline, you must disable Zing to release the memory allocated to Zing.
The tasks in this section apply to standard Zing, DKMS, and Read-Only installations.
See the following:
l
Starting Zing Memory
l
Stopping Zing Memory
l
Starting Zing License Daemon
l
Stopping Zing License Daemon
Starting Zing Memory
Note
Anytime you manually modify the pmem.conf file, you must restart Zing Memory. When
you run system-config-zing-memory, the Zing Memory is automatically restarted.
To start Zing Memory:
1. Login to your system as root.
2. Ensure there are no running processes using Zing memory, type:
$ zing-ps
See Using Zing System Tools.
3. On the ZVM system, at the system prompt or through scripts, as root, execute the command:
For RHEL, SLES, or Ubuntu:
# service zing-memory start
If you receive an error indicating the service does not exist, run the following command.
l
For RHEL, SLES:
# /etc/init.d/zing-memory start
l
For Ubuntu:
# initctl start zing-memory
Azul Systems
Confidential and Proprietary
190
Starting or Stopping the Zing Services
Stopping Zing Memory
Note
ZVMs do not run without the Zing Memory.
To stop Zing Memory:
1. Login to your system as root.
2. Ensure there are no running processes using Zing memory, type:
$ zing-ps
See Using Zing System Tools .
3. On the ZVM system, at the system prompt or through scripts, as root, execute the command:
For RHEL, SLES, or Ubuntu:
# service zing-memory stop
Starting Zing License Daemon
To start Zing licensed service:
1. On the ZVM system, at the system prompt or through scripts, as root, execute the command:
For RHEL, SLES, or Ubuntu:
# service zing-licensed start
If you receive an error indicating the service does not exist, run the following command, then
reissue the start command:
l
For RHEL, SLES
# /etc/init.d/zing-licensed start
l
For Ubuntu:
# initctl start zing-licensed
Stopping Zing License Daemon
Note:
ZVMs do not run without the licensed service.
To stop Zing licensed service:
1. On the ZVM system, at the system prompt or through scripts, as root, execute the command:
For RHEL, SLES, or Ubuntu:
# service zing-licensed stop
Azul Systems
Confidential and Proprietary
191
Zing Installation and Administration Guide
Start the License Server
The license server runs continuously once started. If you need to restart it, perform the following.
1. From the command line where the license server is installed, run:
$ <zing_server_path>/bin/startserver
Where <zing_server_path> is the license server installation directory. For example:
$ ./bin/startserver
Stop the License Server
The license server runs continuously once started. If you need to stop the license server, perform the
following:
1. From the command line where the license server is installed, run:
$ <zing_server_path>/bin/stopserver
Where <zing_server_path> is the license server installation directory. For example:
$ ./bin/stopserver
Azul Systems
Confidential and Proprietary
192
Upgrading or Uninstalling Zing Components
Upgrading or Uninstalling Zing Components
This section provides the steps to uninstall or upgrade Zing components.
The tasks in this section apply to standard Zing and DKMS installations.
l
Uninstalling Zing System Tools
l
Upgrading Zing System Tools
Upgrading Zing System Tools
To upgrade ZST use the Linux service upgrade command.
1. Login to your system as root.
2. Download the latest ZST .rpm or .deb file.
3. Ensure there are no running processes using Zing memory.
All currently-running ZVM instances must be terminated before attempting to upgrade ZST. If this
is not done, the upgrade and/or memory preallocation might fail or result in incorrect
configuration.
$ zing-ps
See Using the zing-ps Tool in Using Zing System Tools.
4. Identify the installed Zing packages.
l
For RHEL or SLES:
$ rpm -qa|grep zing
Sample response:
zing-zst-5e.2.6.32-5.7.0.0.28.el6.x86_64
l
For Ubuntu:
$ dpkg -l|grep zing
Sample response:
zing-zst_5e.3.2.0.x86.64-generic-5.7.0.0.28
5. Run the upgrade command on your Zing ZST package:
l
For RHEL:
$ rpm -Uvh <packagename>
l
For SLES:
$ zypper install <packagename>
Azul Systems
Confidential and Proprietary
193
Zing Installation and Administration Guide
l
For Ubuntu:
$ dpkg -i <package name>
Uninstalling the Zing System Tools
Uninstalling ZST removes all the ZST elements, this includes the following:
l
Zing Memory
l
zing-ps
l
Zing license daemon
Note:
Before you can uninstall ZST, you must uninstall ZVM. Follow the steps below for the
supported sequence.
To uninstall Zing System Tools:
1. Login to your system as root.
2. Ensure there are no running processes using Zing memory, type:
$ zing-ps
See Using Zing System Tools.
3. Identify the installed Zing packages, use
l
For RHEL or SLES:
$ rpm -qa|grep zing
l
For Ubuntu:
$ dpkg -l|grep zing
Sample response:
zng-zst-5e.2.6.32-5.7.2.0.10.el6.x86_64
zing-jdk1.6.0-5.8.0.0-13.x86_64
4. Uninstall ZVM before you uninstall ZST. Run the appropriate remove or delete command.
See Installing the Zing Virtual Machine for description of how to uninstall ZVM software.
l
For RHEL:
$ yum remove zing-jdk<version>
l
For SLES:
$ zypper remove zing-jdk<version>
l
For Ubuntu:
$ dpkg -P zing-jdk<version>
Azul Systems
Confidential and Proprietary
194
Upgrading or Uninstalling Zing Components
5. Uninstall ZST. Run the appropriate remove or delete command.
l
For RHEL:
$ yum remove zing-zst-<version>
l
For SLES:
$ zypper remove zing-zst-<version>
l
For Ubuntu:
$ dpkg -P zing-zst-<version>
This completes the ZST uninstallation.
6. To uninstall the remaining Zing components:
l
Delete the Zing license file.
l
Uninstall the Zing Pool license server.
Upgrading the Zing Virtual Machine
To upgrade ZVM, uninstall all the existing Zing components, then perform a fresh ZVM install.
1. Login to your RHEL system as root.
2. Download the latest ZVM software .rpm, .deb, or .sh file.
3. Ensure there are no running processes using Zing memory.
All currently-running ZVM instances must be terminated before attempting to upgrade. If this is
not done, the upgrade and/or memory preallocation might fail or result in incorrect configuration.
Type:
$ zing-ps
See Using Zing System Tools.
4. Identify the installed ZVM packages.
l
For RHEL or SLES:
$ rpm -qa|grep zing
l
For Ubuntu:
$ dpkg -l|grep zing
Sample response:
zing-zst-<version>
zing-jdk1.6.0-<version>
5. Uninstall ZVM. Run the appropriate remove or delete command.
l
For RHEL:
$ yum remove zing-jdk<version>-<zvm_version>.<platform>
Azul Systems
Confidential and Proprietary
195
Zing Installation and Administration Guide
l
For SLES:
$ zypper remove zing-jdk<version>-<zvm_version>.<platform>
l
For Ubuntu:
$ dpkg -P zing-jdk<version>-<zvm_version>.<platform>
Alternatively, delete the ZVM installation directory.
6. Uninstall ZST. See Installing and Configuring Zing System Tools.
7. Install a compatible version of ZST. See Installing and Configuring Zing System Tools and the
Zing Release Notes.
8. Install the downloaded ZVM installation file. Use the appropriate operating system installation
command:
l
For RHEL:
$ yum localinstall –-nogpgcheck ./zing-jdk<version>-<zvm_
version>.<platform>.rpm
The contents of the RPM package are installed into the /opt/zing directory.
To examine the contents of the RPM package prior to installation, execute the rpm
command using the -qpl option. For example:
$ rpm -qpl ./zing-jdk<version>-<zvm_version>.<platform>.rpm
l
For SLES:
$ zypper install ./zing-jdk<version>-<zvm_
version>.<platform>.rpm
l
For Ubuntu:
$ dpkg -i ./zing-jdk<version>_<zvm_version>_<platform>.deb
Uninstalling the Zing Virtual Machine
To uninstall ZVM:
1. Login to your RHEL system as root administrator. Change to the /root directory.
2. Ensure there are no running processes using Zing memory, type:
$ zing-ps
See Using Zing System Tools.
3. Identify the installed Zing packages, use
l
For RHEL or SLES:
$ rpm -qa|grep zing
l
For Ubuntu:
$ dpkg -l|grep zing
Azul Systems
Confidential and Proprietary
196
Upgrading or Uninstalling Zing Components
Sample response:
zing-zst-<version>
zing-jdk1.6.0-<version>
4. Uninstall ZVM before you uninstall ZST. Run the appropriate remove or delete command.
See Installing the Zing Virtual Machine for description of how to uninstall ZVM software.
l
For RHEL:
$ yum remove zing-jdk<version>-<zvm_version>.<platform>
l
For SLES:
$ zypper remove zing-jdk<version>-<zvm_version>.<platform>
l
For Ubuntu:
$ dpkg -P zing-jdk<version>_<zvm_version>_<platform>
5. See Installing Zing Standalone Licenses or Installing and Using Pool Licensing for information on
removing your Zing Licenses and ZST.
Uninstalling the Zing Standalone License
To uninstall the Zing license package and license file:
1. Login to your system as root.
2. Ensure there are no running processes using Zing memory, type:
$ zing-ps
See Using the zing-ps Tool in Using Zing System Tools.
3. Delete the Zing license file from /etc/zing/directory.
$ cd /etc/zing
$ rm license
Azul Systems
Confidential and Proprietary
197
Zing Installation and Administration Guide
Zing Tools Management
Understanding Memory Use
For the purposes of this document the term ZVM instance refers to a ZVM that is running a
Java application.
Note:
This section describes how the memory resource is used and assigned in a environment.
Understanding Memory Allocation
The Azul platform uses the ZVM to run Java applications, similar to a typical JVM running a Java
application. The significant difference is how memory is handled. uses the ZST for managing the
memory of three components: Contingency memory, Pause Prevention memory, and the memory used
for Generational Pauseless Garbage Collection (GPGC).
Using with GPGC and Contingency memory means that your Java application is no longer limited to
the maximum heap size specified on the Java command line when you started your Java application.
As an additional resource, GPGC might temporarily use Pause Prevention memory to prevent pauses
that are caused by lack of available clean pages.
The following graphic shows the distribution of memory among the subsystem components.
Memory Use on System Running ZVM Instances
See the following topics for descriptions of memory:
l
Host System Memory
Azul Systems
Confidential and Proprietary
198
Zing Tools Management
l
l
Linux Kernel Memory
l
Linux Process Memory
l
JNI Memory
l
JVM Internal Memory
l
Other Linux Processes Memory
Zing Memory
l
Pause Prevention Memory
l
Contingency Memory for Elasticity
l
Reservable and Reserved Memory
l
Java Heap Memory
l
Temporary Java Heap Memory
Host System Memory
A Linux system,where the ZVM and ZST components are installed, has a certain amount of physical
memory (RAM). The operating system’s virtual memory system manages the underlying RAM and
satisfies requests made for memory when a process is launched and, as necessary, when the process
is running. The host system memory is used for running all the processes on the machine. This
includes the Linux kernel, Linux processes, and the ZVM instances running Java applications.
To avoid page swapping of Linux memory, ensure the amount of the operating system's virtual memory
in use is less than or equal to the size of the RAM. Should swapping occur during a Java heap garbage
collection, potentially long delays can occur as pages are swapped.
Linux Memory
Linux memory is the portion of the host system memory allocated for the Linux kernel, related Linux
system processes, and user processes. Default ZST installation allocates 25% of the total physical
memory to Linux memory.
Linux Kernel Memory
Linux kernel memory is memory required to run the Linux operating system. Linux kernel memory is
allocated from Linux memory.
Linux Process Memory
Linux process memory is memory required by the Linux system to support all the applications running
on the system. This includes other Linux processes and ZVMs running Java applications. Linux
process memory is allocated from Linux memory.
Azul Systems
Confidential and Proprietary
199
Zing Installation and Administration Guide
JNI Memory
Java applications use the Java Native Interface (JNI) to access native code. If the Java application
uses JNI, any requests for non-Java heap memory from the native code allocates memory from the
Linux process memory.
There are two ways an application can allocate JNI memory. One is through JDK Java classes that call
JNI functions. The other is through user-defined application classes that call user-defined JNI
functions.
JVM Internal Memory
JVM Internal memory is the portion of the Linux process memory used to support the ZVM instances
running Java applications. JVM internal memory contains the ZVM executable code, thread stacks,
and data structures for Zing's Generational Pauseless Garbage Collection. The amount of memory
being consumed at any moment varies depending upon the ZVM instance and Java application’s
requirements.
Other Linux Processes Memory
If any other processes are running on the system, such as MySQL or Apache, these processes use
Linux process memory. These other Linux processes running on the system compete for memory and
reduce the amount of Linux memory available to the ZVMs running Java applications.
Zing Memory
The ZVM instance uses Zing memory to allocate the memory required for the Java heap. In addition,
Zing memory provides resiliency in the event of out-of-memory conditions that can occur when a ZVM
instance running a Java application temporarily requires more memory than it was initially allocated. An
example of this requirement might occur when a Java application’s workload spikes in an enterprise
environment. The Zing is distributed between three memory pools:
l
Reservable memory
Includes memory for each ZVM instance's Generational Pauseless Garbage Collection Java
heap
l
Contingency memory for elasticity
l
Pause Prevention memory
Contingency memory and Pause Prevention memory are each given a percentage of the total
Zing .
The total amount of Zing is the amount assigned during ZST configuration. This can be allocated in one
of two ways:
l
As a percentage of the total system memory. The default is 75%.
Azul Systems
Confidential and Proprietary
200
Zing Tools Management
l
As a specific amount of memory in MB, where the value is the sum of the Java heap sizes for
the Java instances you expect to run plus any additional Contingency and Pause Prevention
memory you would like to allocate.
Estimating Zing Memory Allocation Example
The percentages used in this example are based on the default values in the configuration file
generated by the system-config-zing-memory wizard. If you want to allocate different
percentages, you can edit and customize the values in the configuration file. The key relationship to
remember is that the amount of Reservable memory in the system must always be greater than or
equal to the sum of the –Xmx values of all concurrently running ZVMs on the system.
When estimating the amount of Zing to allocate:
l
Consider:
Zing = Reservable memory + Contingency memory + Pause Prevention memory
Reservable memory = Zing – (Contingency memory + Pause Prevention memory)
Note:
Reservable memory can be used for a single ZVM instance or multiple ZVM
instances.
Maximum ZVM instance heap memory (-Xmx) = Available Reservable memory
Available Reservable memory = Reservable memory – Sum of Java VM heap memory (Xmx) for all currently running ZVM instances
l
Generally:
To estimate the amount of Zing needed, for each ZVM instance that will be running
concurrently, add the amount of Java heap memory (-Xmx) required; then add the memory
required for Pause Prevention and Contingency memory (10% of total Zing ).
l
For example:
If you typically run 5 ZVM instances and each is allocated 20 GB of memory using the –
Xmx command line option then you need a minimum of 111 GB of Zing . 100 GB is used by all
the ZVM instances and 11 GB is used for the Pause Prevention and Contingency memory.
The following is an approximate breakdown of how the system's memory is used when there is a single
ZVM instance running.
100% host system memory is shared between:
25% to Linux memory
75% to Zing
100% Zing is shared between:
5% Pause Prevention memory for GPGC
Azul Systems
Confidential and Proprietary
201
Zing Installation and Administration Guide
5% Contingency memory
90% Reservable for ZVM instances which is shared between:
Every Java heap (–Xmx) allocation for each ZVM instance running a Java application
For example:
If total host system memory is 100 GB.
25 GB is allocated to Linux memory
75 GB is allocated to Zing
7.5 GB (10%) is allocated to Pause Prevention and Contingency memory
3.75 GB for Pause Prevention memory
3.75 GB for Contingency memory
67.5 GB is available as Reservable memory
Every ZVM instance running a Java application is allocated memory from Reservable
memory based on the value of the -Xmx command line option.
Pause Prevention Memory
For other JVMs, when object allocation rates suddenly increase, the garbage collector can have a
difficult time keeping up with the increased rate of object creation. The result is that the other JVMs
need to pause all work in the process to do a garbage collection. This causes an increase in Java
application pause times. A common work-around to minimize the length of garbage collection pauses is
to specify a small Java heap size – the theory being that a smaller Java heap requires less time to
collect. Unfortunately, when the rate of work goes up, more live objects are in the heap when the heap
fills up and the amount of time required for the garbage collection is proportional to the number of live
objects in the Java heap. The pauses are still long.
As part of Zing's Generational Pauseless Garbage Collection (GPGC), Zing sets aside a percentage of
the Zing for Pause Prevention memory. When there is a sudden increase in the ZVM instance can use
the Pause Prevention memory to efficiently keep up with and sustain the throughput during the heavy,
unexpected workloads. Using memory from Pause Prevention memory gives the ZVM instance's
GPGC additional time to adjust to and keep up with suddenly increased allocation rates. This ensures
that the garbage collector does not stop or pause a ZVM instance running a Java application.
Having Pause Prevention memory ensures that:
l
Zing delivers consistent response times even under sudden high loads.
l
Zing eliminates garbage collection pauses.
Note:
Azul Systems
Pause Prevention memory is used seamlessly by the Generational Pauseless
Garbage Collection algorithm. There are no settings you need to change or adjust.
Confidential and Proprietary
202
Zing Tools Management
Using Pause Prevention memory is not a warning or error condition, and is not
reported to or visible to you or the application.
Contingency Memory for Elasticity
The -Xmx command line option of the Java application launch command specifies the amount of Java
heap memory made available to a ZVM running a Java application. ZVM instances can require
additional Java heap memory for assorted reasons, including unplanned events and incremental
memory needs.
To help ensure that ZVM instances survive peak loads and to prevent out of memory errors, Zing sets
aside a percentage of the Zing for Contingency memory. Contingency memory is a backup reserve that
Zing uses to temporarily allocate additional memory to any ZVM instance running a Java application.
The ZVM instance uses Contingency memory to manage memory requests for space in the ZVM
instance’s Java heap.
Memory from Contingency memory is elastically allocated, growing and shrinking as the needs of ZVM
instances fluctuate:
l
Using Contingency memory allows ZVM instances to be launched without extensive, up-front
JVM or garbage collector tuning.
l
ZVM instances are allowed to grow or shrink based on actual needs.
l
If sufficient Contingency memory is available, ZVM instances are allocated extra memory,
allowing them to continue processing without triggering an out of memory failure.
l
The ZST tracks application memory usage and, as soon as the application decreases its live set
Java heap object requirements, the ZST returns unused memory back to Contingency memory.
l
Applications can run with larger heap sizes to improve application performance. The heap size
is no longer limited in an attempt to prevent potential garbage collection pauses.
l
For information purposes only, Zing Vision and ZVRobot provide visibility to the actual resource
usage.
Contingency Memory and Generational Pauseless Garbage Collection
The ZVM’s ability to temporarily increase the Java heap memory assigned to a process beyond the
originally specified -Xmx value is unique to the Zing Java platform. The Contingency memory is only
available with a ZVM instance that has Generational Pauseless Garbage Collection (GPGC) enabled
on a host running ZST. The only limits of Contingency memory use are:
l
How much unused memory remains in Contingency memory
When a ZVM instance running a Java application uses memory from Contingency memory,
the ZVM instance automatically increases the frequency of garbage collections to ensure
memory is available for object allocation. If a ZVM instance constantly uses Contingency
Azul Systems
Confidential and Proprietary
203
Zing Installation and Administration Guide
memory, adjust the heap size when you restart the ZVM instance. This adjustment can
prevent spending excessive time in garbage collection.
l
The ZVM instance’s maximum Java heap memory limit
Use the -XX:JavaMemMax command line option to specify the Java heap memory limit.
To prevent use of Contingency memory for a ZVM instance, set the -XX:JavaMemMax value
equal to the -Xmx value.
Sharing Contingency Memory and Memory Leaks
Contingency memory is a reserve memory of memory for use in temporary high load situations. Do not
depend on Contingency memory when calculating the -Xmx value for ZVM instances running Java
applications.
Contingency memory is shared among all Java processes on the system. It can only be effective in
preventing processes from terminating with an out of memory error if the increases in memory
requested by each of the ZVM instances are kept to a minimum.
Once a ZVM instance is using memory from Contingency memory, the application is at some risk
because there are no guarantees that additional Contingency memory will be available when needed.
Applications that experience memory leaks can eventually exhaust the Contingency memory,
potentially affecting other Java processes running on the same system that might also need
Contingency memory.
Reservable and Reserved Memory
The Reservable memory is the memory from which specific allotments are assigned to each ZVM
instance running a Java application. Allotments of Reservable memory are assigned to new ZVM
instances until the available Reservable memory is insufficient to start another ZVM instance.
Reservable memory comprises the bulk of the Zing .
Reserved memory is the amount of memory initially allocated to a specific ZVM instance when the
instance starts. This is the Java heap memory. The Reserved memory is reserved for each JVM
instance. It guarantees space to store a minimum live set for each ZVM instance plus the space to
support the object creation required to support the work done in the application. The live set is the set of
objects in the Java heap referenced by the Java application. The live set can also be described as the
amount of memory remaining in the heap after a simultaneous new and old generation garbage
collection.
Multiple ZVM instances can be started on a system, each being assigned its allocated amount of
Reservable memory. When a ZVM instance exits, its Reservable memory is released back to the
system’s Reservable memory and is available for other ZVM instances.
The amount of memory allocated to a ZVM instance when it starts is determined by the value of the –
Xmx Java heap size command line option.
Azul Systems
Confidential and Proprietary
204
Zing Tools Management
Estimating the Number of Possible Concurrent ZVM Instances
When estimating the number of ZVM instances running Java applications that can run concurrently on
a system, determine the amount of Zing available, subtract the percentage of Zing allocated to Pause
Prevention and Contingency memory, and then divide the remaining amount of Zing by the typical Java
heap (-Xmx) memory that would be set for your ZVM instances.
For example:
The allocated Zing is 100 GB. The memory allocated to the Pause Prevention and Contingency
memory is 10 GB. The remaining available Zing , the Reservable memory, is 90 GB.
Total the -Xmx values you will use for each of the Java applications you want to run.
Remember, in a Zing environment, the -Xmx value can be large because there is no concern for
garbage collection pauses.
So, for this example, in a Zing where you want to maximize your Java application performance,
set -Xmx to 20 GB for each ZVM instance. This enables running 4 concurrent ZVM instances
(4 ZVM instances x 20 GB in -Xmx = 80 GB consumed, with 10 GB left over from the 90
available).
Note:
In addition to the number of concurrent ZVM instances, account for the number of
available cores. Do not expect multiple busy ZVM instances to run well on a limited
number of cores. Distribute ZVM instances over the available host systems.
Java Heap Memory
Java heap memory is the amount of memory dynamically allocated to a ZVM instance running on the
system. Objects in Java heap can be shared between threads.
The Java heap is the working memory for the instance running the Java application and its size is
specified by the -Xmx command line option. It is the amount of memory the ZVM instance needs to
run the Java application, not includingnot including Pause Prevention and Contingency memory.
The -XX:JavaMemMax options allows you to set a maximum amount of memory usable for the Java
heap. If this option is not set, the maximum is unlimited.
When determining Java heap settings, consider the following:
l
l
A larger Java heap
l
Allows more objects to be created
l
Takes longer to fill
l
Allows the ZVM instance to run longer between garbage collection (GC) cycles
l
Consumes less CPU for garbage collection
A smaller Java heap
Azul Systems
Confidential and Proprietary
205
Zing Installation and Administration Guide
l
Holds fewer objects
l
Fills more quickly
l
Garbage is collected more frequently
l
May lead to out-of-memory errors
l
Consumes more CPU for garbage collection over time
Temporary Java Heap Memory
When needed to support the Java application, Zing temporarily allocates memory from Contingency
memory and/or Pause Prevention memory. See Contingency Memory for Elasticity and Pause
Prevention Memory.
Heap Memory in 32-Bit vs. 64-Bit Systems
Zing requires 64-bit systems. So, when determining the amount of Java heap memory to allocate, remember there is a difference in memory use in a 32-bit or 64-bit system.
Java heap memory requirements for 64-bit systems are generally 1.5 times greater than 32-bit
systems. Though primitives such as integers use 32-bit words on either a 32-bit or 64-bit system, Java
object headers and pointers use 32-bits on a 32-bit system and 64-bits on a 64-bit system. This applies
to all Java environments, whether they are running HotSpot JVMs or JVMs through a ZVM instance..
The result is that proportionally more memory is used to accommodate the same number of objects on
a 64-bit system. Increasing the efficiency of the garbage collector on a 64-bit system requires additional
space relative to a 32-bit system.
The drawing below shows the relative scale for the cost of 32-bit and 64-bit words in Java objects.
Notice, in the brown label area, how the same number of words consumes more memory for the 64-bit
system. If no additional Java heap memory is allocated when using a 64-bit system then the available
Java heap memory and the number of objects that can reside in the Java heap are reduced.
Azul Systems
Confidential and Proprietary
206
Zing Tools Management
Memory Word Consumption in 32-bit and 64-bit Systems
Setting Reservable Memory
When you are configuring your Zing platform to run your ZVM instances, you can use the default
options or modify memory allocation. The following is a list of considerations when you modify the
memory allocation from default values. See Installing and Configuring Zing System Tools for
information on how to change the default memory configuration.
Zing Allocation
Apart from Reservable memory for the ZVM instances, consider the memory required for Pause
Prevention and Contingency memory. These typically constitute 10% of the total memory available for
the Java heaps of ZVM instances; Java heaps. These percentages can be modified. Refer to Installing
and Configuring Zing System Tools for information on how to configure and modify these percentages.
Configuring -Xmx<val>
l
As described in the previous section, Heap Memory in 32-Bit vs. 64-Bit Systems, running Java
applications on 64-bit machines requires more Java heap.
l
Concurrent garbage collectors need larger heaps than stop-the-world garbage collectors
because concurrent garbage collectors allow application threads to actively allocate objects
while the garbage collector is reclaiming pages.
Azul Systems
Confidential and Proprietary
207
Zing Installation and Administration Guide
l
In general, specifying 2.5x the -Xmx value used with other garbage collectors is a good
starting point. Using Zing, you no longer need to worry about GC pauses that result from
garbage collecting very large Java heaps.
l
The ZVM component supports Java heap sizes up to 338 GB.
Configuring -XX:JavaMemMax=<val>
-XX:JavaMemMax controls the maximum amount of memory that can be allocated from Reservable
and Contingency memory. Allocation from Pause Prevention memory is not limited by this option.
As displayed by the command zing-ps –acct, the -XX:JavaMemMax sets the maximum for
account 2 (heap). Pause Prevention memory is allocated from account 3 (pause_prevention), which
has a different maximum. Setting the maximum for account 3 is not currently supported.
Note:
When -XX:JavaMemMax=<val> equals -Xmx<val>, then the ZVM instance is
not allowed to use any Contingency memory.
Refer to Using the Zing Virtual Machine for more information on using the command line options.
Using Zing Vision
Zing Vision (ZVision) and Zing Vision Robot (ZVRobot) provide ZVM process profiling and diagnostics.
This section describes configuring and using the Azul Systems Zing, Zing Vision (ZVision) profiling and
diagnostics tool for the Zing Virtual Machine (ZVM).
Note
The use of ZVision should be taken under careful consideration since access to
sensitive performance data should be restricted following company policy and
security recommendations.
See Using the Zing Virtual Machine for more information about running Java applications using the
ZVM.
Zing Vision Overview
ZVision provides programmers and deployment engineers with information about both a running
application and the underlying ZVM. It also helps users tune command line options and code to
optimize performance using the following capabilities:
l
Complete internal and environment settings inventory
l
Statistical, flat profiling of processor core usage from the thread level to run-time tasks down to
the method level
Azul Systems
Confidential and Proprietary
208
Zing Tools Management
Take two data samples within a period of time (for example, in a 20 sec. interval) to calculate
performance counter increments.
Azul Customer Support
If providing data for problem resolution for a case with Azul customer support, capture the requested
data in its entirety and send it by e-mail or FTP upload for analysis, including the timestamp (if
available).:
Statistical Tick Profiler
The statistical tick profiler displays how processor core time is spent between various software
execution units (for example, threads, methods, and run-time tasks). The Zing tick profiler differs from
other profilers as follows:
l
It is a statistical, flat (not tree-based) profiler. It does not capture every processor core cycle.
Instead, for every n processor core cycles, it records where in the ZVM the processor core was
running (this is the program counter). It then uses this data to build a flat, non-nested profile.
l
The captured data represents a specific time period.
l
It profiles both within and outside the Java code. Most Java profilers use byte code
instrumentation for Java code.
l
It does not profile when threads are blocked on locks. To retrieve information on monitors, go to
the Monitors window.
The statistical tick profiler is displayed in the Tick profile window accessed from the CPU tab (see
CPU Tab for detailed information about the Tick profile window).
Enable or Disable Tick Profiler
The Tick Profiler is enabled and disabled using the Java command line option, UseTickProfiler.
Default for UseTickProfiler is false, which means the Tick Profiler will not collect profiling
information.
l
To enable the Tick Profiler, use -XX:+UseTickProfiler. (set to true)
l
To disable the Tick Profiler, use -XX:-UseTickProfiler. (default, set to false)
Sorting Tables
Variable size tables can be sorted by column. Click the column head to sort in ascending order. Click
the column head again to resort in descending order. Fixed tables (for example, the GC Summary
Window) cannot be sorted.
Configuring ZVision
This section describes how to configure ZVision. Topics include:
Azul Systems
Confidential and Proprietary
209
Zing Installation and Administration Guide
l
ZVM Command Line Options
l
Configuring the ZVM Host Port
l
Configuring the ZVision Server
ZVM Command Line Options
The ZVM command line options listed in the table below are used to configure ZVision to provide
profiling and diagnostics information when running a Java application on a ZVM application host.
ZVM Configuration Command Line Options
Java Command Option
Description
Enables ZVision and allows the ZVision server to
listen on the specified port of the host where the ZVM
is running. Valid options include:
l
off – disables ZVision (default).
l
<port> – port number for ZVision to use on the
host.
-XX:ARTAPort=
{off|<port>|any}
l
any – ZVision uses any free port. This setting is
useful when starting multiple instances of ZVision
for multiple VMs.
Supply a port number or set this option to any to
enable ZVision.
The ARTA (Azul Run Time Analysis) port provides
internal API communication between ZVision and
ZVM.
-XX:PrintGCHistory=<number
of historical PGC cycle
reports>
Set the number of historical PGC cycle reports to
save for display in ZVision (default =50).
Set the number of historical PGC warnings to save
XX:GCWarningHistory=<number
for display in ZVision (default =50).
of historical PGC warnings>
Configuring the ZVM Host Port
To configure ZVision on a ZVM application host:
1. Log on to the ZVM application host where the Java workload will be run.
2. Add the following Java command line option to your Java application launch command:
-XX:ARTAPort=<port>
Azul Systems
Confidential and Proprietary
210
Zing Tools Management
where:
<port> is the port ZVision server use to connect on the ZVM.
The Azul Real Time Analysis port (ARTA port) provides internal API communication between
ZVision and ZVM.
See Zing Virtual Machine Options in Installing the Zing Virtual Machine for more information on ZVM
command line options.
Configuring the ZVision Server
The ZVision server is included with the ZVM software. The ZVision server does not need to be run on
the same host where the application is running, it only requires a network connection to the host where
the application is running.
To configure the ZVision server:
1. Log in to a host where the ZVision will run.
2. Set the JAVA_HOME variable (or equivalent) so that the Java call points to the parent directory of
the ZVM software. For example:
JAVA_HOME=<ZVM install location>/<ZVM top-level directory>
3. Type the following Java command line:
$JAVA_HOME/bin/zvision -p <port>
where:
<port> is port number that is used by a browser to connect to ZVision (default: 8088)
When the ZVision server starts successfully, the port number that is used by the browser to connect to
ZVision is displayed on the command line. For example:
ZVision server listening on port 8088
See Accessing ZVision for details about accessing ZVision from a browser session.
Note
See Advanced Configuration Options for more information about ZVision server command line options.
Accessing ZVision
Before you can use ZVision to view ZVM data:
l
Configure the ZVM ARTA port. See Configuring the ZVM Host Port
l
Configure the ZVision listening port. See Configuring the ZVision Server
To access ZVision:
1. Start a browser session and enter the URL of the ZVision server:
http://<ZVisionserver>:<port>
where:
Azul Systems
Confidential and Proprietary
211
Zing Installation and Administration Guide
l
<ZVision_server_IP_address> is the host name or IP address of the ZVision
server
l
<port> is the ZVision server port number that accepts connections from a Web
browser
For example: http://host123:8088
See Configuring the ZVision Server for detailed configuration information.
2. On successful connection to the ZVision server, the ZVision login window appears.
Enter the following information:
l
ARTA host – ZVM server host name or IP address
See Configuring the ZVision Server.
l
ARTA port – ZVM application host port specified with the -XX:ARTAPort command
line
See Configuring ZVision for a Host.
A ZVision session window is displayed.
ZVision Interface
The ZVision interface consists of a series of tabbed pages and corresponding windows. Select a tab to
access additional windows for a given component.
Azul Systems
Confidential and Proprietary
212
Zing Tools Management
The following table describes the organization of ZVision tabs. The rest of the section provides more
information about the windows that comprise each ZVision tab.
ZVision Tabs
Tab
Overview Tab
Azul Systems
Window
Summary
Configuration
Displays information for all process settings for the
ZVM.
Environment
Variables
Displays information for all environmental variables set
by the shell that launched the ZVM front end.
HotSpot Flags
Displays information for all of the HotSpot flags that
the ZVM uses.
Statistics
Displays information about running applications.
Settings
Displays configuration to enable GC logging, control
level of detail logged, and destination of the output.
Groups
This feature is not supported at this time
Login
is not supported at this time.
Features
Enables or disables user access to restricted ZVision
Confidential and Proprietary
213
Zing Installation and Administration Guide
ZVision Tabs
Tab
Window
Summary
features.
List
Displays all threads with links to detailed information
for each thread.
Stack Trace
Lists all threads with information whether each one is
executing or blocked.
Deadlocks
Lists detected deadlock cycles.
Contention
Displays statistics for each monitor (sorted by total
time held).
Tick Profile
Displays information that shows how percentage of
processor core time used for an interval of recorded
time.
Meta Ticks
Lists the time it takes to complete logical tasks.
Event Tracker
This feature is not supported at this time.
Summary
Displays a summary of total memory usage and
Contingency memory usage.
GC Summary
Displays a cumulative summary of recent GC cycle
history.
GC History
Displays a detailed summary of recent GC cycle
history (one row per cycle).
Browse Object
Displays information about object, instance, method,
or class.
Allocated
Objects
Displays information on allocated objects by object
type.
Live Objects
Displays information on class instances.
Compilers Tab
Tasks
Displays the status of Server and Client compiler
tasks.
Applications
Tab
Class List
Displays the application classes and Java class
libraries loaded in the ZVM.
Threads Tab
CPU Tab
Memory Tab
Azul Systems
Confidential and Proprietary
214
Zing Tools Management
Overview Tab
The Overview tab of ZVision contains the following windows:
l
Configuration
l
Environmental Variables
l
HotSpot Flags
l
Statistics
l
Settings
l
Groups
l
Login
l
Features
Configuration Window
The Configuration window provides a detailed view of all the process settings for the ZVM.
The following table describes the Configuration window elements.
Configuration Window Elements
Element
Description
Version
The ZVM version.
Command line
The list of classes and command line options used to launch a Java
Azul Systems
Confidential and Proprietary
215
Zing Installation and Administration Guide
Configuration Window Elements
Element
Description
application.
Java Home
The Java Home path.
Class path
The path to the class.
Boot class path
The path to the boot class.
Extensions
directories
The directories for extensions.
Endorsed directories
The directories for classes implementing newer versions of endorsed
standards.
Library path
The native library path.
Boot library path
The boot library path.
ARTA Version
The version of the instrumentation in the ZVM that provides data to
the ZVision server.
Open file descriptors
The limit in bytes for open file descriptors for the ZVM front end.
Core file size limit
The maximum size in bytes for a core dump file.
Environment Variables Window
The Environment Variables window provides a detailed view of all environmental variables set by the
shell that launched the ZVM. The Environment Variables window is displayed only if it is enabled in
the Features window (see Features Window for more information).
Azul Systems
Confidential and Proprietary
216
Zing Tools Management
The following table describes the Environment Variables window elements.
Environment Variables Window Elements
Element
Description
Name
Name of the environment variable.
Value
Current setting or value for the environment variable.
HotSpot Flags Window
The HotSpot Flags window displays all -XX flags that the ZVM uses, their description, and current
values. This screen is for advanced diagnostics and is not intended for beginning users. Azul customer
support may instruct users to look up flag values in this window.
Azul Systems
Confidential and Proprietary
217
Zing Installation and Administration Guide
The following table describes the HotSpot Flags window elements.
HotSpot Flags Window Elements
Element
Description
The type of flag. Possible values are:
Type
l
Boolean – the flag requires a Boolean value of true (+) or false (-).
l
Integer or Unsigned Integer – the flag requires an integer value.
l
String – the flag requires a string.
Name
The name of the flag.
Value
The value configured for the flag.
Description
The description of the flag.
Statistics Window
The Statistics window displays information about running applications.
Azul Systems
Confidential and Proprietary
218
Zing Tools Management
The following table describes the Statistics window elements
Element
Description
SystemDictionary Stats
Displays the number of Java classes loaded in the ZVM.
Thread Count Stats
Displays the number of running threads.
Settings Window
The Settings window provides controls for enabling GC logging, choosing the level of detail logged,
and whether the output is sent to standard out or saved to a new or existing file.
The following table describes the Settings window elements.
Settings Window Elements
Element
Description
Off
Disables GC logging for this ZVM instance. This is the default setting.
Print GC
Enables GC logging with summarized output. Output is equivalent to
using the command line option -XX:+PrintGC.
Print GC details
Enables GC logging with detailed output. Output is equivalent to using
the command line option -XX:+PrintGCDetails.
Azul Systems
Confidential and Proprietary
219
Zing Installation and Administration Guide
Settings Window Elements
Element
Options: File name
Description
Type a file name to send GC log output instead of sending it to
standard out. Select the check box and type an existing file name to
append the output to the end of an existing file.
Groups Window
This feature is not supported.
Login Window
This feature is not supported.
Features Window
The Features window is displayed to enable user access to certain ZVision features for the currently
running ZVM.
Warning
Enabling user access to any of these features may interfere with the ZVM,
cause system delays, or expose sensitive information.
The following table describes the Features window elements.
Azul Systems
Confidential and Proprietary
220
Zing Tools Management
Element
Description
Azul Support
Enables user access to Azul Customer Support Options. Use at
your risk, as some of these diagnostic features can interfere with
the proper functioning of the ZVM, or cause the system to crash.
Browse Instance
Enables users to browse a class instance. Turning this feature on
could expose sensitive data within the object.
Browse Class
Enables users to browse the static class data. Turning this feature
on could expose sensitive data within the object.
Browse Method
Enables users to browse a class method. Turning this feature on
could expose sensitive data within the object.
Environment variables
Enables users to view the Environment Variables. Turning this
feature on could expose sensitive data.
Stack trace
Enables users to use the Stack Trace window. Turning this feature
on could expose sensitive data.
MetaTicks
Enables users to view metaticks. Turning this feature on could
interfere with the proper functioning of the VM and cause the system
to crash. This tab should ONLY be enabled if advised by Azul
Support.
Polling Opportunities
Enables users to view the Polling Opportunities entries. Turning this
feature on could interfere with the proper functioning of the VM and
cause the system to crash. This tab should ONLY be enabled if
advised by Azul Support.
Weblogic Muxer
Enables users to use the Web Logic Muxer Application. Turning this
feature on could interfere with the proper functioning of the VM and
cause the system to crash. This tab should ONLY be enabled if
advised by Azul Support.
Threads Tab
The Threads tab contains the following windows:
l
Threads List Window
l
Stack Trace Window
l
Deadlocks window
l
Contention Window
l
Contention Details Window
Azul Systems
Confidential and Proprietary
221
Zing Installation and Administration Guide
Threads List Window
The Threads List window displays all threads, status of each thread, and links to detailed information
about a thread. View and action options include:
l
Refresh this window to view thread progress.
l
Click the Name and State column titles to sort the table.
l
Click the Details link item display the status of a thread and where it is blocked. Refer to Stack
Trace Window.
l
Set values in the Name, State, Group, and/or Per page fields to filter the displayed list
The following table describes the Threads List window elements.
Threads List Window Elements
Elements
Name
Description
Lists the name of the thread as assigned by the application.
The most common states for threads are:
l
running – the thread is executing on a processor core.
l
I/O wait – the thread is waiting for socket or file I/O.
l
waiting on monitor – the thread is blocked in java.lang.Object.wait
State
() awaiting notification.
l
low memory detection –
l
acquiring monitor – the thread is waiting to acquire a synchronization
monitor.
l
Azul Systems
acquiring and releasing monitor – the thread a requires and releases a
Confidential and Proprietary
222
Zing Tools Management
Threads List Window Elements
Elements
Description
synchronization monitor. This typically happens when the critical section of
the monitor is extremely small.
l
sleeping – the thread executed java.lang.Thread.sleep().
l
Other states, such as idle, semaphore wait, waiting on ZVM monitor
Threads_lock, or Waiting on Monitor SLT lock indicate threads that are
internal to the ZVM. These states are not normally useful for analysis of
application performance. Also, during start up, compiler threads may be
running. The time (in seconds) that the thread has spent since entering the
state is provided in parenthesis after the waiting state indicators.
Provides links to a stack trace, tick profile, and object profile for the selected
thread. These functions are the same as the regular tick and profile features,
except that only information on the selected thread displays. The following
links appear inline with threads listed in this window:
l
Details
Stack – displays a thread execution details window. Displays the page
Threads > Stack Trace.
l
Ticks – displays a per-thread profile. Displays the page CPU > Tick
Profiler.
l
System calls, RPC out, RPC in, FDC, and Transport are not supported at
this time.
Stack Trace Window
The Stack Trace window lists all threads and displays whether a thread is executing or is blocked. This
can help to determine changes to make in the application code.
To perform a search by thread name, type a string in the Name field to display all thread names that
include that text string (case sensitive).
Click the thread links in the Stack Trace window to display a thread execution details window. Use the
State drop-down menu to only display threads in a certain state (for example, running, I/O wait,
acquiring monitor, and so on). Use the Group drop-down menu to select whether to list system, nonsystem, or all group types. Use the Per Page drop-down menu to determine the number of items to
display on this page.
Toggle between low or high display of detailed information.
Azul Systems
Confidential and Proprietary
223
Zing Installation and Administration Guide
Refresh this screen to view the progress of the thread. Relevant information displays at the top of the
window:
l
Address
l
Priority
l
Object blocked
l
Object wait
l
CPU wait
l
I/O wait
The Stack Trace window is displayed only if it is enabled in the Features window (see Features
Window for more information).
Deadlocks Window
The Deadlocks window lists detected deadlock cycles. Threads involved for each cycle of locks are
listed with the monitor type the thread is trying to acquire and the thread that is the current owner. Click
the thread links to view additional information.
Azul Systems
Confidential and Proprietary
224
Zing Tools Management
Contention Window
The Contention window provides statistical information for each monitor and sorts monitors by total
acquire time. The following types of monitors appear in the Contention window:
l
Java-level monitors – identified by their class name.
l
Internal JVM monitors – identified with the extension _lock. If there are a high number of
internal JVM monitors, examine the verbose garbage collection (GC) logs. Observe if there are
a large number of GC pauses. Contact Azul customer support if this becomes a problem.
The total acquire time parameter is the time, in milliseconds, for acquires to occur for a given internal or
Java-level monitor.
The following table describes the Contention window elements. Click column titles to sort by
relevance.
Contention Window Elements
Elements
Name
Description
The name of the monitor.
l
Acquire Time
(ms)
Total – the time, in milliseconds, for acquires to occur for a given
internal or Java-level monitor (not tracked for lightly contended “thin”
monitors).
l
Max (ms) – the maximum time, in milliseconds, to perform an acquire.
Blocking acquires
l
Count – the number of blocking acquires.
Waits
l
Count – the number of wait cycles on the thread.
Azul Systems
Confidential and Proprietary
225
Zing Installation and Administration Guide
Contention Window Elements
Elements
Description
l
Max (ms) – the maximum time, in milliseconds, of wait cycles that are
allowed.
l
Total (ms) – Cumulative wait cycle in milliseconds
Contention Details Window
The Contention Detail window provides additional information about the selected monitor in
contention. Detail information is displayed through the Azul Support tab.
Note
If Azul Support is enabled, links to related Monitor details are displayed. Only enable
and use the Azul Support tab as directed by Azul Support team members.
CPU Tab
The CPU tab provides information about how much CPU time is being used by threads. This is
measured by recording the length of time it takes a thread to complete a tick, how often a thread
accesses sensitive areas of the application code, and the length of time a thread takes to achieve a
safepoint.
The CPU tab contains the following windows:
l
Tick Profile
l
Meta Ticks
l
Event Tracker
Tick Profile Window
The Tick Profile window provides information to allow calculation of how processor resources are
used for an interval of recorded time. The recorded time interval depends on the number of threads and
Azul Systems
Confidential and Proprietary
226
Zing Tools Management
how busy the threads are. The busier threads are, the greater the number of ticks generated. See
Statistical Tick Profiler for more information the statistical tick profiler.
Note
Method names in the tick profiler are compiled methods and are no longer being
interpreted. All time spent by methods being interpreted is summed as one entry
named “Interpreter.”
Check the Tick Profile window for functions such as VM_C2 Compiler or Interpreter after launching an
application. If these functions are high on the list, then the application is still starting up (a warning
message may also appear in the Compiler tab). To determine if the application is warmed up, wait a few
seconds, click Reset Tick Profile, then refresh the Web browser until these two threads are not high in
the list.
The following table describes the Tick Profile window elements.
Azul Systems
Confidential and Proprietary
227
Zing Installation and Administration Guide
Tick Profile Window Elements
Element
Description
Click Pause The Tick Collection to stop refreshing the list of ticks.
Pause/Resume the This is useful when you need to locate a specific item in a rapidly
Tick Collection
changing list. Click Resume The Tick Collection and refresh the
screen to continue updating the list of ticks.
Reset Tick Profile
Clears the existing list of ticks and restarts tick collection.
Cutoff
Filters the list of ticks to list only those values that are greater than or
equal to the set cutoff value. Enter value. Click Submit.
Below Cutoff
At the bottom of the list of ticks, it lists the percentage and number of
ticks that are not included in the displayed list as defined by the Cutoff
percent value and Threads value.
Threads
Display the ticks for only the threads listed in this field. Enter value.
Click Submit.
The three radio buttons filter the tick data by a tag assigned to it.
Whenever a thread is running, it has a current tag assigned to it. That
value can change at any time, as the thread does different things. For
instance, if you have a thread that is a garbage collection thread, it's tag
might be "garbage collection" most of the time, but when that thread
was running some specific subtask of GC, it might say GC marking
phase. This feature allows collates and displays the data from the
aspect of the tag value instead of the method name.
The options are:
l
None – don't filter the list by tags.
l
JVM -- group all the JVM compiler ticks into one entry, so that
None, JVM, All
everything is lumped together. Useful if you are trying to get a sense of
what overhead the compiler is having.
l
All - only display ticks by tag type for all threads. Instead of showing
ticks entries by their method name, group and display them by their tag
type.
To apply tag filter:
Click a radio button. Click Submit.
Azul Systems
Confidential and Proprietary
228
Zing Tools Management
Tick Profile Window Elements
Element
Percent
Description
The percentage of CPU resources (% of the total number of ticks
collected during the collection period) the function used during the time
interval.
The number of program counters (“ticks”) collected in the time interval.
This includes:
l
Ticks
Timer ticks – collect for each tick, the thread ID, CPU, stack trace and
last eight calling functions when the tick occurs. The time reported, in
milliseconds, is thread time, not clock time.
l
Time to safe point ticks – collect the time required to complete a save
point process.
A description of the function being counted. The following are
definitions for specific functions:
l
VM_GC Task – the garbage collector for the ZVM.
l
ARTA_Performance_Monitor – the function that collects and displays
Source
ZVision data.
l
VM_C2 Compiler – the ZVM JIT compiler compiling methods
indicating that an application is still warming up .
l
generate_monitor enter – the amount of time spent busy-waiting to
acquire monitors.
Statistical information about the total list of ticks. This includes:
l
Ticks within a Buffer – number of ticks a standard tick buffer can hold.
There is a fixed maximum of 2K.
l
Available Buffers – number of buffers the user has allocated, as
determined by the -XX:EventTickBufferDataBufferMargin=N value,
Event Profiling
Tick Buffer
Statistics
plus the high water mark number of active threads. For example, if you
specify 100, and the application has 400 threads simultaneously
active, then there are 500 available buffers. This total value is
dynamic, but only grows. If suddenly the application drops 300
threads, there continues to be 500 buffers.
l
Azul Systems
Theoretical Maximum Ticks (Available Buffer * Ticks/Buffer) – per the
Confidential and Proprietary
229
Zing Installation and Administration Guide
Tick Profile Window Elements
Element
Description
listed formula, for example using Ticks within a Buffer maximum
(2000) X Available Buffers (500) = 1,000,000.
l
Count of Ticks processed – not all buffers are completely filled at any
moment in time. The tick buffers are collecting ticks. Some have not
been used yet. This value is the count of all ticks that are in buffers,
which is some value less than the theoretical maximum.
l
Profiler Ticks applicable (matched filter criteria) – number of ticks that
match the search criteria
l
Other Ticks not applicable (Failed filter criteria) – number of ticks that
do not match the search criteria. Profiler Ticks and Other Ticks equal
the total number of ticks processed.
Meta Ticks Window
Meta Ticks measure how long it takes to perform a function. This is not a measure of each thread. Meta
Ticks are like timer ticks in nature. They are a discreet packet of information about the state of a thread,
but unlike the Profile Ticks, which are created based on some periodic timer, Meta Ticks are created as
the thread enters certain specific code paths.
Azul Systems
Confidential and Proprietary
230
Zing Tools Management
The following table describes the Meta Ticks window elements.
Meta Ticks Window Elements
Element
Description
Pause/Resume
the Tick
Collection
Click Pause The Tick Collection to stop refreshing the list of ticks. This
is useful when you need to locate a specific item in a rapidly changing
list. Click Resume The Tick Collection and refresh the screen to
continue updating the list of ticks.
Reset Tick
Profile
Clears the existing list of ticks and restarts tick collection.
Search Criteria:
Single Value
Entries
l
Entries Displayed – number of entries displayed on a given page.
l
Tick Start – a search field which determines the earliest tick that is
included in the display, based on the elapsed tick counter.
l
Tick End – a search field which determines the latest tick that is
l
included in the display, based on the elapsed tick counter.
These items are all search criteria for metaticks. The five fields in this
row can all use comma separated lists as a search criteria. That is, you
can search for more than one term simultaneously, by listing those terms
with commas separating them. For example, CPU field could contain
"2,5,9", which would list all metaticks that came from CPU 2, 5 or 9.
Search Criteria:
Comma
Separated Lists
l
MetaTick # – value that can be used for searches. The values are
preassigned by Azul.
l
User Info # – value assigned dynamically by the application that can be
searched on.
l
Tag # – The current Virtual Machine Process Tag of the thread when the
metatick occurred. This is a pre-defined value we assign to a thread that
can be changed dynamically, to indicate what kind of work the thread is
Azul Systems
Confidential and Proprietary
231
Zing Installation and Administration Guide
Meta Ticks Window Elements
Element
Description
doing. The values are preassigned by Azul.
l
CPU # – the CPU that the thread was executing on when the metatick
occurred.
l
Thread # – thread ID for Azul internal use.
List of actual metatick data. See below listed field descriptions.
l
Line item – last 100 meta ticks recorded.
l
Tick Counter – elapsed ticks since startup.
l
Thread ID – thread ID for Azul internal use.
l
CPU – CPU that the thread was executing on when the metatick
occurred.
Data Table
l
MetaTick Type – value for Azul internal use. Value indicates the tag
value at the time the tick occurred.
l
MetaTick Type # – string translation of the stored bit value to the
metatick type.
l
Tag Name – string human readable translation of the tag number.
l
Tag # – the VM Tag currently assigned when the metatick occurred
l
Stack Frame Address – address of the stack frame at the time the tick
occurred.
The following are diagnostics related to capturing tick statistics.
l
Ticks within a Buffer – number of ticks a standard tick buffer can hold.
There is a fixed maximum of 2K.
l
Available Buffers – number of buffers the user has allocated, as
determined by the -XX:EventTickBufferDataBufferMargin=N value, plus
Event Profiling
Tick Buffer
Statistics
the high water mark number of active threads. For example, if you
specify 100, and the application has 400 threads simultaneously active,
then there are 500 available buffers. This total value is dynamic, but only
grows. If suddenly the application drops 300 threads, there continues to
be 500 buffers.
l
Azul Systems
Theoretical Maximum Ticks (Available Buffer * Ticks/Buf) – per the
Confidential and Proprietary
232
Zing Tools Management
Meta Ticks Window Elements
Element
Description
listed formula, for example using Ticks within a Buffer maximum (2000)
X Available Buffers (500) = 1,000,000.
l
Count of Ticks processed – not all buffers are completely filled at any
moment in time. The tick buffers are collecting ticks. Some have not
been used yet. This value is the count of all ticks that are in buffers,
which is some value less than the theoretical maximum.
l
Profiler Ticks applicable (matched filter criteria) – number of ticks that
match the search criteria
l
Other Ticks not applicable (Failed filter criteria) – number of ticks that do
not match the search criteria. Profiler Ticks and Other Ticks equal the
total number of ticks processed.
Event Tracker
This feature is not supported.
Memory Tab
The Memory tab contains the following windows:
l
Memory Summary Window
l
GC Summary Window
l
GC History Window
l
Browse Object Window
l
Allocated Objects Window
l
Live Objects Window
l
Type Velocity Window
Memory Summary Window
The Memory Summary window provides a summary of total memory usage and Contingency memory
usage. See “Cooperative Memory Management and Memory Resiliency” in Using the Zing Virtual
Machine for detailed information about Contingency memory.
Azul Systems
Confidential and Proprietary
233
Zing Installation and Administration Guide
The following tables describe the Memory Summary window elements.
Memory Summary Window Elements – Java Heap Usage
Element
Description
Used
The amount of memory currently used by the ZVM.
Capacity
The amount of memory allocated for use by the ZVM.
Requested capacity
The maximum amount of memory requested for use by the ZVM (Xmx).
GC cycle count
The number of garbage collection cycles.
Memory Summary Window Elements – Memory Accounts
Element
Description
VM internal
Shows allocated, balance, Reserved, and Contingency memory usage for the
ZVM
Java heap
Shows allocated, balance, Reserved, and Contingency memory usage for the
Java heap.
Java Pause
Prevention
Shows allocated, balance, Reserved, and Contingency memory usage for the
Java Pause Prevention pool.
Azul Systems
Confidential and Proprietary
234
Zing Tools Management
GC Summary Window
The GC Summary window provides a cumulative summary of the recent GC cycle history. See
“Generational Pauseless Garbage Collection (GPGC)” in Using the Zing Virtual Machine for more
information about the GPGC garbage collector.
The following table lists the GC Summary window elements. The screen lists the garbage collection
information for both New generation and Old generation cycles in two parallel tables.
GC Summary Window Elements
Element
Header
Azul Systems
Description
l
Category – element being measured
l
Statistic – aspect of the element being measured
Confidential and Proprietary
235
Zing Installation and Administration Guide
GC Summary Window Elements
Element
Cycle
Description
l
Mean – statistical calculation of collected values
l
Stddev – standard deviation calculated for collected values
l
Min – minimum value in collected sample
l
Max – maximum value in collected sample
l
Interval (sec) – elapsed time between successive GC cycle starts.
l
Pause ratio – ratio of time application spent in safepoint pauses
during the cycle to cycle interval time
Reserved
l
Peak used (MB) – the peak size of the Java heap recorded during the
GC cycle
Pause
These values are used for internal Zing diagnostic purposes only.
l
New used (MB) – the amount of memory used by all young objects
not known to be dead during the GC cycle.
l
Old used (MB) – the amount of memory used by all old objects not
known to be dead during the GC cycle.
Generations
l
Perm used (MB) – the amount of memory used by all permanent
objects not known to be dead during the GC cycle.
l
Live (MB) – the live memory in the generation(s) being collected.
l
Fragmentation (MB) – the fragmentation in the generation(s) being
collected.
l
Found (MB) – the garbage found in the generation(s) being
collected.
Garbage
l
Collected (MB) – the garbage freed in the generation(s) being
collected.
l
Sideband limited (MB) – used for internal Zing diagnostics purposes
only.
Pages
These values are used for internal Zing diagnostic purposes only.
Pauses
l
Azul Systems
Pause 1 duration (ms) – the duration time of the pause 1 safepoint.
Confidential and Proprietary
236
Zing Tools Management
GC Summary Window Elements
Element
Description
l
Pause 2 duration (ms) – the duration of the pause 2 safepoint
l
Pause 3 duration (ms) – the duration of the pause 3 safepoint
l
Pause 4 duration (ms) – the total duration of all pause 4 safepoints
for this GC cycle.
l
Duration (sec.) – the elapsed time from the end of the last GC cycle
to the start of this GC cycle.
l
Intercycle
Allocation rate (MB/s) – the object allocation rate in the generation
being collected in the period between the last GC cycle to the start of
this GC cycle.
l
Perm allocation rate (MB/s) – the object allocation rate in the
permanent generation during this GC cycle.
l
Duration (sec.) – the GC cycle elapsed time; the duration of time
from the beginning to the end of this GC cycle.
Intracycle
l
Allocation rate (MB/s) – the object allocation rate in the generation
being collected during this GC cycle.
l
Perm allocation rate (MB/s) – the object allocation rate in the
permanent generation during this GC cycle.
l
Total threads – the total count of Java threads in the ZVM.
l
Threads delayed – the number of threads blocked trying to allocate
memory during the GC cycle. When the number of delayed threads
is greater than 0, application performance is affected due to lack of
App threads
available memory.
l
Average thread delay (sec) – the average delay for threads blocked
trying to allocate during the GC cycle.
l
Max thread delay (sec) – the maximum delay for threads blocked
trying to allocate.
GC History Window
The GC History window provides a detailed summary of the recent GC cycle history with a row per
cycle. Click column titles to sort by relevance.
Azul Systems
Confidential and Proprietary
237
Zing Installation and Administration Guide
The following table lists the GC History window elements.
GC History Window Elements
Element
Description
Indicates GC cycle, as follows:
Cycle Type
l
Old – old generation cycle
l
New – new generation cycle
l
NTO – new generation cycle that immediately precedes an Old
Gen cycle
Cycle #
Mode
Azul Systems
For each New or Old Gen cycle, the number of that collection in the
sequence of all collections of that type (New or Old Gen).
l
p – indicates if allocation from ause pool is
l
g – indicates if allocation from Contingency pool is .
Confidential and Proprietary
238
Zing Tools Management
GC History Window Elements
Element
Memory Heap
Description
l
Max – maximum amount of heap memory guaranteed to the
application. This is generally set by Xmx option.
l
Peak – the peak size of the Java heap recorded during the GC
cycle.
Memory Reserved
l
Used – the amount of memory used by all objects not known to be
dead during the GC cycle.
Memory Pause
These values are used for internal Zing diagnostic purposes only.
l
New – the amount of memory used by all young objects not
known to be dead during the GC cycle.
l
Old – the amount of memory used by all old objects not known to
be dead during the GC cycle.
Memory Generations
l
Perm – the amount of memory used by all permanent objects not
known to be dead during the GC cycle.
Memory Garbage
l
Live – the live memory in the generation(s) being collected.
l
Frag – the fragmentation in the generation(s) being collected.
l
Found – the garbage found in the generation(s) being collected.
l
Freed – the garbage freed in the generation(s) being collected.
l
Sideband limited – used for internal Zing diagnostics purposes
only.
Memory Pages
These values are used for internal Zing diagnostic purposes only.
l
Dur (sec.) – the elapsed time from the end of the last GC cycle to
the start of this GC cycle.
l
Intercycle
Alloc rate (MB/s) – the object allocation rate in the generation
being collected in the period between the last GC cycle to the
start of this GC cycle.
l
Perm alloc rate (MB/s) – the object allocation rate in the
permanent generation during this GC cycle.
Azul Systems
Confidential and Proprietary
239
Zing Installation and Administration Guide
GC History Window Elements
Element
Description
l
Dur (sec.) – the GC cycle elapsed time; the duration of time from
the beginning to the end of this GC cycle.
Intracycle
l
Alloc rate (MB/s) – the object allocation rate in the generation
being collected during this GC cycle.
l
Perm alloc rate (MB/s) – the object allocation rate in the
permanent generation during this GC cycle.
App threads #
l
# – the total count of Java threads in the ZVM.
l
# – the number of threads blocked trying to allocate memory
during the GC cycle. When the number of delayed threads is
greater than 0, application performance is affected due to lack of
available memory.
App threads Delay
l
Ave (sec) – the average delay for threads blocked trying to
allocate during the GC cycle.
l
Max (sec) – the maximum delay for threads blocked trying to
allocate.
Browse Object Window
Do not select this page directly, instead select a highlighted object, instance, method or class.
Azul Systems
Confidential and Proprietary
240
Zing Tools Management
The following table describes the Browse Object tab window elements.
Browse Object Tab Window Elements
Element
Class Property and
Value
Description
If applicable, list of class properties associated with the selected
object. Includes values for the listed properties.
If applicable, list of static information associated with the selected
object. This includes descriptive information:
Static Fields
l
Access
l
Name
l
Type
l
Value
Methods
If applicable, list of methods associated with the selected object.
Transitive Interfaces
If applicable, list of transitive interfaces associated with the
selected object.
Allocated Objects Window
Data collected for allocated objects only when the -XX:ProfileAllocatedObjects option is
included in the JVM command.
Azul Systems
Confidential and Proprietary
241
Zing Installation and Administration Guide
This feature is not supported.
Live Objects Window
The Live Objects window displays a current list of classes in the old generation heap that are being kept
alive. Use this information to identify possible memory leaks in your Java application.
Each listed row [with a plus (+)] is a referent class. Expanded rows show a list of referrer classes to the
referent class. A class is listed as a referrer, when all the following conditions are met:
l
An object of that class directly points to an object of the referent class.
l
The referent object was seen by the GC through the referrer object.
Only the first referrer seen by the GC is counted. This means that there could be other referrer objects
that point to the referent objects, but they are not included.
To display Live Object data, include the -XX:ProfileLiveObjects option in the JVM command.
To view current data, refresh the screen. If a GC has not occurred yet, a message to refresh is
displayed.
The following table describes the Live Object tab window elements. Note, all the descriptions are
about the old generation heap.
Azul Systems
Confidential and Proprietary
242
Zing Tools Management
Live Object Tab Window Elements
Element
Description
Total
Total number of old generation live objects.
Class Name
Name of classes whose objects reside in old generation memory.
Click the plus (+) to see referring classes.
Count
The number of objects of this class that are alive in the old
generation heap.
Size (bytes)
The total amount of memory used by objects of this class.
Avg Size (bytes)
The average amount of memory used by objects of this class.
Percentage of Live Set
The percentage of the live set memory consumed by object of this
class.
For referrer rows this is a percentage of referrer count.
Type Velocity Window
The Type Velocity window displays a current list of classes in the old generation heap and their rate of
memory growth. Where velocity for a class is the rate of heap growth in bytes over a selected time
interval. Use this information to identify possible memory leaks in your Java application.
To gather Type Velocity data, include the -XX:ProfileLiveObjects option in the JVM command
and allocate extra memory. To view current data, refresh the screen.
All time listings are in format: [dd] hr:min:sec. Number of days are listed only if it is non-zero.
Only the top 1000 classes, sorted by Growth Rate, are shown.
Azul Systems
Confidential and Proprietary
243
Zing Installation and Administration Guide
The following table describes the Type Velocity tab window elements.
Type Velocity Tab Window Elements
Element
Description
Interval
Options in increments ranging: 1 – 45 mins, 1-18 hrs, 1-7 days
Requested time interval
Selected time interval by the user. See options in Interval.
Time interval starting from the last GC cycle that most closely
matches the selected interval.
Best available match
interval
For example, if GC occurred at 10 minutes, 15 minutes, 20
minutes, and 45 minutes from the start of the VM, and the selected
interval is 10, then the data from the GC at 20 minutes (intervalstart) and 45 minutes (interval-end) are used for calculating the
type velocity.
Interval-start
Interval-end
The starting time and ending time of the best available match
interval. Time is not clock time. It is time from start of VM.
VM uptime
Amount of time passed since the start of the VM.
Azul Systems
Confidential and Proprietary
244
Zing Tools Management
Type Velocity Tab Window Elements
Element
Description
Class Name
Name of classes whose objects reside in old generation memory.
Latest Count
The number of objects of this class that are alive at interval-end
time.
Latest Size (bytes)
The total amount of memory used by objects of this class that are
alive at interval-end time.
Prior Count
The number of objects of this class that are alive at interval-start
time.
Prior Size (bytes)
The total amount of memory used by objects of this class that are
alive at interval-start time.
Delta Count
The difference between the number of objects of this class that are
alive between interval-start and interval-end time.
Delta Size (bytes)
The difference between the memory used by objects of this class
between interval-start and interval-end time.
Growth Rate
(bytes/min)
The rate of heap growth for a class over Best available match
interval.
Growth Rate = Delta Size / Best available match interval.
Compilers Tab
The Compiler tab of ZVision displays the status of Server and Client compiler tasks.
Azul Systems
Confidential and Proprietary
245
Zing Installation and Administration Guide
The following table describes the Compiler tab window elements.
Compiler Tab Window Elements
Element
Description
Compiling
Status of threads being compiled.
Waiting
Status of threads waiting to be compiled
Applications Tab
The Application tab displays a list of application classes and Java class libraries that are loaded in the
ZVM. If the Browse Class feature is enabled for a user in the Features tab, the hyperlink for a specific
class can be selected to browse the static class data in the Browse Object window (see Features
Window for more information about enabling the Browse Class feature).
Azul Systems
Confidential and Proprietary
246
Zing Tools Management
Advanced Configuration Options
The ZVision server can be invoked from the command line as follows:
zvision [options]
The following command line options are supported:
Command Line Option
Description
-h or --help
Display a list of supported command line options
-p PORT, --port=PORT
Specify the port number port number that browsers listen
to the ZVision server
-i INTERFACE, -interface=INTERFACE
Specify the network interface that the ZVM accepts
HTTP connections.
-t ARTA_TIMEOUT, -arta_
timeout=ARTA_ TIMEOUT
Specify the timeout interval (in seconds) when
communicating with the ZVM.
-1 DEBUG_LEVEL-logging=DEBUG_LEVEL
Specify the debug logging level: debug, info, warning,
error, or critical
--document_
root=DOCUMENT_ ROOT
Specify the path to static HTML files used by the ZVision
server.
Azul Systems
Confidential and Proprietary
247
Zing Installation and Administration Guide
Using Zing Vision Robot
This section describes configuring and using the Azul Systems Zing, Zing Vision Robot (ZVRobot)
profiling and diagnostic snapshot collection tool for the Zing Virtual Machine (ZVM).
See Using Zing Vision for more information about using the Zing Vision real-time profiling and
diagnostic tool. See Using the Zing Virtual Machine for more information about running Java
applications using the ZVM.
ZVision Overview
ZVRobot provides a method to collect metrics about the state of a running application and the
underlying ZVM. It uses the same data collection mechanisms as Zing Vision (ZVision) but stores each
data snapshot persistently to a file. ZVRobot automates collecting and persistently storing the data
displayed with a manual Zing Vision page refresh. The data stored in the files can be viewed through a
browser, simulating the ZVision environment. You can set which Zing Vision pages to collect and, how
often and how many times you want to capture the page data.
Use the ZVRobot data to help you determine how to tune command line options and optimize your code
performance. ZVRobot data includes:
l
Complete internal and environment settings inventory
l
Sample-based method profiling
l
ZVM internal subsystem behavior, including GC and the runtime compiler
l
Lock and monitor usage metrics
l
Thread behavior
ZVRobot is a simple http client that collects ZVision data from the ARTAPort according to the criteria
specified in the ZVRobot.prop file and outputs it to a specified directory as a set of time stamped
XML files. It has a very low impact on performance. The ZVRobot client can be started and stopped at
any time during a ZVM session.
See “ZVision Interface” in Using Zing Vision for detailed information about the Zing Vision interface.
ZVRobot Benefits
ZVRobot can be used in a few ways, think of ZVRobot as a flight recorder, persisting away data that
can be reviewed later for offline analysis.
ZVRobot data includes:
l
Complete internal and environment settings inventory
l
Sample-based method profiling
l
ZVM internal subsystem behaviour, including GC and the runtime compiler
l
Lock and monitor usage metrics
l
Thread behavior
Use ZVRobot
Azul Systems
Confidential and Proprietary
248
Zing Tools Management
l
In development, use the ZVRobot data to help you optimize your code performance by
monitoring locking behavior, finding hot methods, and monitoring other behaviors such as: per
thread stack trace; tick profile; I/O wait; object size and count profile; live objects type velocity;
deadlocks; monitor contention; memory usage; GC; Compilation; etc.
l
In the Operations Center, when an alert is triggered, use a script in the management tool to
start an instance of ZVRobot to record what is going on for a set period (controllable in the
ZVRobot.prop file). This ensures that ZVRobot has data from when the incident occurred.
l
In preproduction, use ZVRobot to take samples of the application before implementing major
changes or code changes. Compare the ZVRobot data with samples taken with previous
application code versions. This helps to identify if code changes have changes the code profile,
locking or allocation rates.
l
Periodically (weekly) take a few minutes of samples as a reference point, these reference
points can be used to compare peak request loads as well as be used for long term capacity
planning with your other tools.
Azul Customer Support
If you are providing data for problem resolution for a case with Azul customer support:
1. Capture the requested data in its entirety using ZVRobot.
2. Compress the data into zip or gzipped tar file.
3. Send it by e-mail or FTP upload for analysis.
Configuring the Zing Virtual Machine to Use ZVRobot
ZVRobot must be connected to the ZVM you are monitoring. The following command enables ZVRobot
to communicate with the ZVM on the specified port of the host where the ZVM is running.
Add the following command line option to your Java command string that starts the ZVM and
your Java application.
-XX:ARTAPort={off|<port>|any}
Supply a port number or set this option to any to enable the communication between ZVM and
ZVRobot. The ARTA (Azul Run Time Analysis) port provides internal API communication
between ZVision, ZVRobot, and ZVM.
Valid options include:
l
off: Default. ZVM does not open a communication port and ZVRobot cannot communicate.
l
<port>: port number for ZVRobot to use on the host.
Azul Systems
Confidential and Proprietary
249
Zing Installation and Administration Guide
l
any: ZVRobot uses any free port.
The port number opened by the ZVM is echoed to stderr at startup. This setting is useful
when starting multiple ZVMs on the same host.
For complete instructions on using ZVM command line options, see “ZVM Options” in Using the Zing
Virtual Machine.
Installing and Configuring ZVRobot
Install ZVRobot and modify the ZVRobot properties file to specify the connection to the ZVM and select
the type of data to collect.
1. Locate the ZVRobot zip file.
The ZVRobot.zip file is installed with ZVM at, /<zvm_home>/etc/ZVRobot.zip.
For example:
/opt/zing/zing-jdk1.7.0-5.9.3.0-1-x86_64/etc/ZVRobot.zip
2. Copy the ZVRobot.zip file to a host machine where either a Java Development Kit (JDK) or Java
Runtime Environment (JRE) is installed.
For efficient use, locate the ZVRobot.zip file on a different machine than the ZVM
Note:
host or Java application you are monitoring. The ZVRobot machine must be networked
to the ZVM host machine it is monitoring.
3. Locate and open the ZVRobot.prop file.
The file is in the top level ZVRobot directory. The file has two sections:
l
Configuration – contains required information you must provide for ZVRobot to
communicate with the ZVM and options that control collection behavior. See Step 4.
l
Page Types to Collect – contains a list of Zing Vision pages. Some pages are already
configured to be collected. You can turn on or off the collection of any Zing Vision page.
4. Provide the configuration information.
In the top section of the file, enter appropriate values for the following variables:
l
ZVRobotVars.HOST: IP address of the application host where the ZVM is running.
l
ZVRobotVars.PORT: Port on the host machine that was specified with the XX::ARTAPort command line option when the ZVM was started. See Configuring the
Zing Virtual Machine to Use ZVRobot.
l
ZVRobotVars.THSIZE: The number of top-level items to request for display in a page.
For example, for:
Azul Systems
Confidential and Proprietary
250
Zing Tools Management
l
IO_OPEN_SOCKETS, this is the number of sockets.
l
THREADS_LIST and THREADS_STACK_TRACE, this is the number of threads to list
in a single page.
l
LEAK_SITES, this is the per page number of location in the code identified as sites
where memory is being leaked.
l
ZVRobotVars.SECONDS: The interval in seconds between sequential requests by
ZVRobot to the ZVM.
l
ZVRobotVars.COUNT: The number of snapshots to gather. A negative number is
interpreted as a request for an infinite number of snapshots. If you use this option, stop the
ZVRobot process with CTRL-C from the command line.
5. Select the metrics to collect.
In the third section of the file, remove or add the pound (#) character to enable or disable,
respectively, collecting a page's data.
For example:
l
To enable a <metric_name> metric, the line in the file should be:
<metric_name>=http://${HOST}:${PORT} ${SECONDS} ${COUNT}
l
To disable the <metric_name> metric, the line in the file should be:
# <metric_name>=http://${HOST}:${PORT} ${SECONDS} ${COUNT}
To disable the metric, comment out the line by adding the pound sign (#) in the line.
Running ZVRobot and Collecting Data
ZVRobot communicates with the ZVM using the host:port combination specified in the
ZVRobot.prop file. The collected metric snapshots are written to a directory suffixed with the date
and time when ZVRobot starts.
In the command line for the machine where ZVRobot is installed, type the following command
to run ZVRobot:
java -jar ZVRobot-<version>.jar <directory> ZVRobot.prop
where:
l
ZVRobot-<version>.jar is the JAR file that contains the ZVRobot classes
l
<directory> is the directory in which ZVRobot creates the metric collection directory.
You must have write permission for this top level directory.
Use any as the directory and ZVRobot creates the metric collection directory in the
current working directory.
l
Azul Systems
ZVRobot.prop is the edited ZVRobot property file
Confidential and Proprietary
251
Zing Installation and Administration Guide
A directory is created that contains the XML-formatted metric snapshot files as well as
manifest files that contain a list of hyperlinks to these metric files.
Note
A sample start up script startsample.sh is provided to run ZVRobot. The script
uses the provided sample ZVRobot.prop file that has a set of default metrics
selected. To run this test script, modify the configuration variables in the sample
ZVRobot.prop file, particularly the host and port name. See Installing and
Configuring ZVRobot.
Enable or Disable Tick Profiler
The Tick Profiler is enabled and disabled using the Java command line option, UseTickProfiler.
Default for UseTickProfiler is false, which means the Tick Profiler will not collect profiling
information.
l
To enable the Tick Profiler, use -XX:+UseTickProfiler. (set to true)
l
To disable the Tick Profiler, use -XX:-UseTickProfiler. (default, set to false)
Viewing ZVRobot Snapshot Data
ZVRobot outputs two sets of files: manifest .html files and page .xml files. View the files through a
browser.
1. Navigate through your directories to the ZVRobot directory.
2. Select a date/time stamp directory
3. Select a manifest or page file to view.
4. Select Open with a browser.
See ZVRobot Snapshot Data for a description of each output manifest or page file.
ZVRobot Snapshot Data
The ZVRobot interface consists of a series of windows that format the collected information for a given
metric in the same manner as the equivalent metric that is collected in ZVision. The rest of the section
describes the ZVRobot windows.
Azul Systems
Confidential and Proprietary
252
Zing Tools Management
Sample AzulZVRobotIndex.html file
The ZVRobot manifest, AzulZVRobotIndex.html, lists hyperlinks to the manifest files specified by
the appropriate metric for the corresponding ZVision window in the ZVRobot properties file,
ZVRobot.prop. Click a hyperlink to display the manifest file for a specific ZVRobot metric. The
following table describes:
l
ZVRobot metric. Click the associated hyperlink to display a description of the metric.
l
Name of the corresponding ZVRobot metric specified in ZVRobot.prop.
l
Name of the corresponding manifest file listed in AzulZVRobotIndex.html.
ZVRobot Manifest
See Section
Metric Page Name
File Created
ZVRobot
Snapshot Data
ZVProperties.prop
Metric
AzulZVRobotIndex.html
Manifest File Name
Configuration
ZVRobotPage.CONFIG_
PROCESS
Manifest.Frame.CONFIG_
PROCESS.html
Environment
Variables
ZVRobotPage.
ENVIRONMENT_VARIABLES
Manifest.Frame.ENVIRONMENT_
VARIABLES.html
HotSpot Flags
ZVRobotPage.HOTSPOT_
FLAGS
Manifest.Frame.HOTSPOT_
FLAGS.html
Azul Systems
Confidential and Proprietary
253
Zing Installation and Administration Guide
ZVRobot Manifest
See Section
Metric Page Name
File Created
Statistics
ZVRobotPage.RUNTIME_
STATISTICS
Manifest.Frame.RUNTIME_
STATISTICS.html
Settings
ZVRobotPage.SETTINGS_
GC_LOG
Manifest.Frame.SETTINGS_ GC_
LOG.html
Features
ZVRobotPage.FEATURES
Manifest.Frame.FEATURES.html
Threads List
ZVRobotPage.THREADS_
LIST
Manifest.Frame.THREADS_
LIST.html
Stack Trace
ZVRobotPage.THREADS_
STACK_TRACE
Manifest.Frame.THREADS_
STACK_TRACE.html
Deadlocks
ZVRobotPage.THREADS_
DEADLOCKS
Manifest.Frame.THREADS_
DEADLOCKS.html
Contention
ZVRobotPage.THREADS_
MONITOR_CONTENTION
Manifest.Frame.THREADS_
MONITOR_CONTENTION.html
Tick Profile
ZVRobotPage.TICKS_
PROFILE_TAG
Manifest.Frame.TICKS_
PROFILE_TAG.html
Tick Profile
ZVRobotPage.TICKS_
PROFILE_FLAG
Manifest.Frame.TICKS_
PROFILE_LOG.html
Memory
Summary
ZVRobotPage.MEMORY_
SUMMARY
Manifest.Frame.MEMORY_
SUMMARY.html
GC Summary
ZVRobotPage.MEMORY_
GC_ SUMMARY
Manifest.Frame.MEMORY_GC_
SUMMARY.html
GC History
ZVRobotPage.MEMORY_
GC_ HISTORY
Manifest.Frame.MEMORY_GC_
HISTORY.html
Compilers Tasks
ZVRobotPage.COMPILER_
TASKS
Manifest.Frame.COMPILER_
TASKS.html
Class List
ZVRobotPage.
APPLICATIONS_CLASS_
LIST
Manifest.Frame.APPLICATIONS_
CLASS_LIST.html
Azul Systems
Confidential and Proprietary
254
Zing Tools Management
Configuration Window
The Configuration window provides a detailed view of all the process settings for the ZVM.
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT and
ZVRobotVars.SECOND variables in the ZVRobot.prop file.
The following table describes the Configuration window elements.
Configuration Window Elements
Element
Description
Version
ZVM version.
Command line
List of classes and command line options used to launch the
Java application.
Prepended flags / filename
List of option flags from the identified file that were inserted
into the front of the Java command line.
Appended flags / filename
List of option flags from the identified file that were appended
to the end of the Java command line.
Azul Systems
Confidential and Proprietary
255
Zing Installation and Administration Guide
Configuration Window Elements
Element
Description
Current working directory
Current working directory.
Java Home
Java Home path.
Class path
Path to the class.
Boot class path
Path to the boot class.
Extensions directories
Directories for extensions.
Endorsed directories
Directories for classes implementing newer versions of
endorsed standards.
Library path
Native library path.
Boot library path
Boot library path.
ARTA Version
Version of the instrumentation in the ZVM that provides data
to the ZVRobot server.
Open descriptor count limit
Limit in bytes for open file descriptors for the ZVM front end.
Core file size limit
Maximum size in bytes for a core dump file.
Environment Variables Window
The Environment variables window provides a detailed view of all environmental variables set by the
shell that launched the ZVM.
Since the information in this window does not change over time, set the ZVRobotVars.COUNT
variable in the ZVRobot.prop file to 1. This tells ZVRobot to collect only one snapshot. By default,
this one snapshot is displayed in work area of the page.
Azul Systems
Confidential and Proprietary
256
Zing Tools Management
HotSpot Flags Window
The HotSpot flags window displays all -XX flags that the ZVM uses, their description, and current
values. This screen is for advanced diagnostics and is not intended for beginning users. Azul customer
support might instruct users to look up flag values in this window.
Since the information in this window does not change over time, set the ZVRobotVars.COUNT
variable in the ZVRobot.prop file to 1. This tells ZVRobot to collect only one snapshot. By default,
this one snapshot is displayed in work area of the page.
Azul Systems
Confidential and Proprietary
257
Zing Installation and Administration Guide
HotSpot Flags Window Elements
Element
Description
The type of flag. Possible values are:
Type
l
Boolean: the flag requires a boolean value of true (+) or false (-).
l
Integer or Unsigned Integer: the flag requires an integer value.
l
String: the flag requires a string.
Name
The name of the flag.
Value
The value configured for the flag.
Description
The description of the flag.
Statistics Window
The Statistics window displays information about running applications.
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT and
ZVRobotVars.SECOND variables in the ZVRobot.prop file. The following table describes the
Statistics window elements.
Azul Systems
Confidential and Proprietary
258
Zing Tools Management
Statistics Window Elements
Element
Description
SystemDictionary Stats
Displays the number of Java classes loaded in the
ZVM.
Thread Count Stats
Displays the number of running threads.
Settings Window
The Settings window provides controls for enabling GC logging, choosing the level of detail logged, and
whether the output is sent to standard out or saved to a new or existing file. ZVRobot captures the state
of this window's settings.
Since the information in this window does not change over time, set the ZVRobotVars.COUNT
variable in the ZVRobot.prop file to 1. This tells ZVRobot to collect only one snapshot. By default,
this one snapshot is displayed in work area of the page.
The following table describes the Settings window elements.
Settings Window Elements
Element
Description
Off
Disables GC logging for this ZVM instance. This is the default
setting.
Print GC
Enables GC logging with summarized output. Output is equivalent to
using the command line option -XX:+PrintGC.
Print GC details
Enables GC logging with detailed output. Output is equivalent to
Azul Systems
Confidential and Proprietary
259
Zing Installation and Administration Guide
Settings Window Elements
Element
Description
using the command line option -XX:+PrintGCDetails.
Options: File name
Type a file name to send GC log output instead of sending it to
standard out. Select the check box and type an existing file name to
append the output to the end of an existing file.
Features Window
The Features window provides controls for user access to certain ZVision and ZVRobot features in a
running ZVM. ZVRobot captures the state of his window's settings.
Since the information in this window does not change over time, set the ZVRobotVars.COUNT
variable in the ZVRobot.prop file to 1. This tells ZVRobot to collect only one snapshot. By default,
this one snapshot is displayed in work area of the page.
Features Window Elements
Element
Description
Azul Support
Enables user access to Azul Customer Support Options. Use of this
feature is at your risk because some of these diagnostic features can
interfere with the proper functioning of the ZVM, or cause the system to
crash.
Browse Instance
Enables users to browse a class instance, potentially exposing
sensitive data within the object.
Browse Class
Enables users to browse the static class data, potentially exposing
sensitive data within the class.
Browse Method
Enables users to browse a class method, potentially exposing
sensitive sensitive data within the method.
Environment
variables
Enables users to view the Environment Variables, potentially exposing
sensitive sensitive data.
Stack trace
Enables users to use the Stack Trace window, potentially exposing
sensitive sensitive data.
Azul Systems
Confidential and Proprietary
260
Zing Tools Management
Threads List Window
The Threads List window displays all threads, status of each thread, and links to detailed information
about a thread.
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT and
ZVRobotVars.SECOND variables in the ZVRobot.prop file.
The following table describes the Threads List window elements.
Threads List Window Elements
Element
Name
Description
Lists the name of the thread as assigned by the application.
The most common states for threads are:
l
running: the thread is executing on a processor core.
l
I/O wait: the thread is waiting for socket or file I/O.
l
acquiring monitor: the thread is waiting to acquire a synchronization monitor.
l
acquiring and releasing monitor: the thread a requires and releases a
synchronization monitor. This typically happens when the critical section of the
State
monitor is extremely small.
sleeping: the thread executed java.lang.Thread.sleep().
Other states, such as idle, semaphore wait, waiting on ZVM monitor Threads
lock, or Waiting on Monitor SLT lock indicate threads that are internal to the
ZVM. These states are not normally useful for analysis of application
performance. Also, during start up, compiler threads might be running. The time
(in seconds) that the thread has spent since entering the state is provided in
parenthesis after the waiting state indicators.
Details
Azul Systems
Provides links to a stack trace, tick profile, and object profile for the selected
thread. These functions are the same as the regular tick and profile features,
Confidential and Proprietary
261
Zing Installation and Administration Guide
Threads List Window Elements
Element
Description
except that only information on the selected thread displays. The following links
appear inline with threads listed in this window:
l
Stack: displays a thread execution details window.
l
Ticks: displays a per-thread profile.
l
Allocations: displays a thread-level Object profile. This window displays realtime counters for allocated bytes, allocated count, and average object size per
object type allocated by the thread since the most recent GC cycle start.
Stack Trace Window
The Stack Trace window lists all threads and displays whether a thread is executing or is blocked. This
can help to determine changes to make in the application code. CPU time displays for each thread.
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT and
ZVRobotVars.SECOND variables in the ZVRobot.prop file.
[Insert Graphic]
Deadlocks Window
The Deadlocks window lists detected deadlock cycles. Threads involved for each cycle of locks are
listed with the monitor type the thread is trying to acquire and the thread that is the current owner.
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT
and ZVRobotVars.SECOND variables in the ZVRobot.prop file.
Contention Window
The Contention window provides statistical information for each monitor and sorts monitors by total
acquire time. To sort by field, click on the column heading.
Azul Systems
Confidential and Proprietary
262
Zing Tools Management
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT and
ZVRobotVars.SECOND variables in the ZVRobot.prop file.
The following types of monitors appear in the Contention window:
l
Java-level monitors: identified by their class name.
l
Internal JVM monitors: identified with the extension _lock. If there are a high number of internal
JVM monitors, examine the verbose garbage collection (GC) logs. Observe if there are a large
number of GC pauses. Contact Azul customer support if this becomes a problem.
The total acquire time parameter is the time, in milliseconds, for acquires to occur for a given internal or
Java-level monitor.
The following table describes the Contention List window elements.
Contention Window Elements
Element
Name
Description
The name of the monitor.
l
Total: the time, in milliseconds, for acquires to occur for a given internal
or Java-level monitor. This is not tracked for lightly contended thin
Acquire Time (ms)
monitors.
Blocking acquires
Azul Systems
l
Max (ms): the maximum time, in milliseconds, to perform an acquire.
l
Count: the number of blocking acquires.
Confidential and Proprietary
263
Zing Installation and Administration Guide
Contention Window Elements
Element
Waits
Description
l
Count: the number of wait cycles for the thread.
l
Max : the maximum time, in milliseconds, of wait cycles that have
occurred.
l
Total: Cumulative wait time in milliseconds
Tick Profile Window
The Tick Profile window provides information to allow calculation of how processor resources are used
for a recorded period of time.
The time interval over which the shown ticks are collected depends on the number and activity of the
threads in the Java process. The busier the threads, the faster the data is collected into the fixed-size
structures that hold the data. See Statistical Tick Profiler in Using Zing Vision for more information the
statistical tick profiler.
Note
Method names in the tick profiler represent compiled methods, those no longer
being interpreted. All time spent by methods being interpreted is summed as one
entry named Interpreter.
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT and
ZVRobotVars.SECOND variables in the ZVRobot.prop file.
The following table describes the Tick Profile window elements.
Azul Systems
Confidential and Proprietary
264
Zing Tools Management
Tick Profile Window Elements
Element
Description
Percent
The percentage of CPU resources (% of the total number of ticks
collected) the method or function used.
Ticks
The number of (ticks) attributed to the function or method.
A description of the function being counted. The following are
definitions for specific functions:
l
VM_GC Task: the garbage collector for the ZVM.
l
ARTA_Performance_Monitor: the function that collects and
Source
displays ZVRobot data.
l
VM_C2 Compiler: the ZVM JIT compiler compiling methods
indicating that an application is still warming up.
l
generate_monitorenter: the amount of time spent busy-waiting to
acquire monitors.
Memory Summary Window
The Memory Summary window provides a summary of total memory usage and Contingency memory
usage. See Using the Zing Virtual Machine for detailed information about Contingency memory.
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT and
ZVRobotVars.SECOND variables in the ZVRobot.prop file.
The following table describes the Memory Summary window elements.
Azul Systems
Confidential and Proprietary
265
Zing Installation and Administration Guide
Memory Summary Window Elements – Java Heap Usage
Element
Description
Used
The amount of memory currently used by the ZVM.
Capacity
The amount of memory allocated for use by the ZVM.
Requested
capacity
The maximum amount of memory requested for use by the ZVM (Xmx).
GC cycle count
The number of garbage collection cycles.
Memory Summary Window Elements – Memory Accounts
Element
Description
VM internal
Shows allocated, balance, Reserved, and Contingency memory usage for
the ZVM.
Java heap
Shows allocated, balance, Reserved, and Contingency memory usage for
the Java heap.
Java Pause
Prevention
Shows allocated, balance, Reserved, and Contingency memory usage for
the Java Pause Prevention pool.
GC Summary Window
The GC Summary window provides a cumulative summary of the recent GC cycle history. See
Generational Pauseless Garbage Collection (GPGC) in Using the Zing Virtual Machine for more
information about the GPGC garbage collector.
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT
and ZVRobotVars.SECOND variables in the ZVRobot.prop file.
Azul Systems
Confidential and Proprietary
266
Zing Tools Management
The following table describes the Memory Summary window elements.
GC Summary Window Elements
Element
Description
New generation
cycles
Lists the summary values for memory usage during current cycle.
Old generation cycle
Lists the summary values for memory usage during generational
cycle.
GC History Window
The GC history window provides a detailed summary of the recent GC cycle history with a row per
cycle. Click column titles to sort by relevance.
Azul Systems
Confidential and Proprietary
267
Zing Installation and Administration Guide
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT and
ZVRobotVars.SECOND variables in the ZVRobot.prop file.
The following table describes the GC Memory History window elements.
GC Memory History Window Elements
Element
Description
Interval (sec): elapsed time between successive GC cycle starts.
Cycle
Pause ratio: ratio of time application spent in safe point pauses during the
cycle to cycle interval time.
Mode
l
p: indicates if allocation from pause pool is enabled
l
g: indicates if allocation from Contingency pool is enabled.
l
Live (MB): the amount of Java memory used by all application objects
currently not known to be dead.
Heap
l
Peak (MB): the peak size of the Java heap recorded during the GC cycle.
l
Peak (pgs): the peak size of the Java heap recorded during the GC cycle (in
MB by page increments).
l
Max (MB): maximum amount of heap memory guaranteed to the
application. This is generally set by –Xmx option.
Reserved
Pause
Generations
l
Peak (MB): the peak size of the memory Reserved during the GC cycle.
l
Used (MB): the amount of Reserved memory used during the GC cycle.
These values are used for internal Zing diagnostic purposes only.
l
Total fragmentation (MB): the total fragmentation in the heap.
l
New used (MB): the amount of memory used by all young objects not known
to be dead during the GC cycle.
l
Azul Systems
Old used (MB): the amount of memory used by all old objects not known to
Confidential and Proprietary
268
Zing Tools Management
GC Memory History Window Elements
Element
Description
be dead during the GC cycle.
l
Perm used (MB): the amount of memory used by all permanent objects not
known to be dead during the GC cycle.
Garbage
Pages
Pauses
l
Live (MB): the live memory in the generation(s) being collected.
l
Fragmentation (MB): the fragmentation in the generation(s) being collected.
l
Found (MB): the garbage found in the generation(s) being collected.
l
Freed (MB): the garbage freed in the generation(s) being collected.
l
Sideband limited (MB): used for internal Zing diagnostics purposes only.
These values are used for internal Zing diagnostic purposes only.
l
Pause 1 start (sec): the start time of the pause 1 safepoint.
l
Pause 1 duration (ms): the duration time of the pause 1 safepoint.
l
Pause 2 start (sec): the start time of the pause 2 safepoint.
l
Pause 2 duration (ms): the duration of the pause 2 safepoint
l
Pause 3 duration (ms): the total duration of all pause 3 safepoints for this GC
cycle.
Pauses
(GPGC only)
l
Pause 3 start (sec): the start time of the pause 3 safepoint.
l
Pause 3 count: the number of pause 3 safepoints.
l
Pause 3 max: the maximum duration of any one pause 3 safepoint.
l
Duration (sec.): the elapsed time from the end of the last GC cycle to the
start of this GC cycle.
Intercycle
l
Allocation rate (MB/s): the object allocation rate in the generation being
collected in the period between the last GC cycle to the start of this GC
cycle.
Intercycle
(GPGC only)
Intracycle
l
Perm allocation rate (MB/s): the object allocation rate in the permanent
generation during this GC cycle.
l
Duration (sec.): the GC cycle elapsed time; the duration of time from the
beginning to the end of this GC cycle.
Azul Systems
Confidential and Proprietary
269
Zing Installation and Administration Guide
GC Memory History Window Elements
Element
Description
l
Allocation rate (MB/s): the object allocation rate in the generation being
collected during this GC cycle.
Intracycle
(GPGC only)
l
Perm allocation rate (MB/s): the object allocation rate in the permanent
generation during this GC cycle.
l
Total threads: the total count of Java threads in the ZVM.
l
Threads delayed: the number of threads blocked trying to allocate memory
during the GC cycle. When the number of delayed threads is greater than 0,
application performance is affected due to lack of available memory.
App threads
l
Average thread delay (sec): the average delay for threads blocked trying to
allocate during the GC cycle.
l
Max thread delay (sec): the maximum delay for threads blocked trying to
allocate.
Compilers – Task Window
The Compilers Task window of ZVRobot displays the status of Server and Client compiler tasks.
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT and
ZVRobotVars.SECOND variables in the ZVRobot.prop file.
The following table describes the Compiler Tab window elements.
Azul Systems
Confidential and Proprietary
270
Zing Tools Management
Compiler Tab Window Elements
Element
Description
Compiling
Status of threads compiling.
Waiting
Status of threads waiting compiling.
Class List Window
The Class List window displays a list of application and Java class library classes that are loaded in the
ZVM.
Click a hyperlink in the left column to display the collected information for a snapshot. The number of
snapshots and the interval between snapshot collection is specified by the ZVRobotVars.COUNT
and ZVRobotVars.SECOND variables in the ZVRobot.prop file.
Using Zing System Tools
This section describes how to use standalone tool, zing-ps, that is packaged with Zing System
Tools.
For information on ZVM packaged tools, ZVision and ZVRobot, refer to Using Zing Vision and Using
Zing Vision Robot.
Using the zing-ps Tool
The memory management functions of the Zing System Tools are performed automatically when a
ZVM instance runs a Java application. The zing-ps command returns a snapshot of current Zing
memory usage. It displays information about active Zing processes, system behavior, and Zing
memory usage.
zing-ps is installed automatically when ZST is installed. It is run from the command line. Use this
command before you install, update, or restart the ZST or modify the ZST configuration.
This tool does not collect history. To collect zing-ps information over time, use a while loop to run the
zing-ps command at specified time increments, for example every 10 seconds, and log the data
generated. Then use the logged data in a numbers-to-graph tool, such as Excel to generate graphs.
For quick reference, a man page is provided for this command. At the command line, type:
$ man zing-ps
The zing-ps command usage is:
zing-ps [-p pid] [-a] [-V] [-n] [-c] [-j] [-s] [-l] [-d] [-f] [-b]
[-m] [-h] [--comma] [--acct] [--acct2] [-partition P]
Where –
Azul Systems
Confidential and Proprietary
271
Zing Installation and Administration Guide
Command
Description
-V
Prints the ZST version.
-p
[PID]
Prints information about specified process.
-a
Prints the arguments included in the process generating command.
-n
Prints only the name from the process generating command.
-c
Prints only the process generating command.
-j
Prints pre-defined portions of the process generating command.
-s
Prints the memory summary.
-l
Prints the legend.
-d
Suppresses printing of the details for each process.
-f
Suppresses printing of fund information.
-b
Prints values in raw byte counts.
-m
Rounds the byte counts to megabytes.
-h
Rounds the byte counts to, (human readable), multiples of powers of
1024 and prints appropriate suffix: K=Kilo, M=Mega, G=Giga, T=Tera
--comma
Comma separated tabular format.
--acct
Print basic memory accounting information.
--acct2
Print advanced memory accounting information.
partiti
on P
For Internal Use Only.
Some options are exclusive to each others. Many options can be used in combination. See Format
Command Option Samples for listing of mutually exclusive options.
Command Return Overview
Depending upon the zing-ps options specified, zing-ps responses provide the following:
Azul Systems
Confidential and Proprietary
272
Zing Tools Management
l
Legend for Memory Usage Labels
l
Summary of Total Memory Usage
l
Memory Usage for Each Running ZVM Process
l
Fund Breakdown
l
Memory Usage by Account
Legend for Memory Usage Labels
The memory usage report labels include the following:
Values as noted K=Kilo, M=Mega, G=Giga, T=Tera
LRSS=Linux Memory in use
ZRSS=Zing Memory in -use
ZCTG=Zing Contingency Memory in use
ZXmx=Reserved from Zing Memory
To display the legend, add the -1 option to the zing-ps command.
Additional Field Descriptions
Depending upon the options used, zing-ps returns four tables of information. The following are samples
of the table headings.
l
System Memory Summary
Memory Usage Summary
Linux Memory
l
Reservable
Contingency
Process usage
USER
l
Zing Memory
PID
TIME
LRSS
ZRSS
ZCTG
ZXmx
CMD
System fund usage (--acct and --acct2)
NAME
BALANCE
MAXIMUM
NAME
BALANCE(now/min/max KB)
ALLOCATED(now/min/max KB)
MAXIMUM(KB) ACS_TO_CREDIT
FND
ODFND
l
Account usage per process
NAME
BALANCE
ALLOCATED
MAXIMUM
FND
ODFND
The following are brief descriptions of the zing-ps information table headings. See Understanding
Zing Memory Use for additional descriptions.
l
USER – Username used to issue the Java command that started the process.
l
CMD – Java command used to start the process.
Azul Systems
Confidential and Proprietary
273
Zing Installation and Administration Guide
l
PID – Process identification number.
l
TIME – Process CPU time.
l
NAME – Type of process.
l
BALANCE – Available balance. This can be negative if contingency memory is being used.
l
ALLOCATED – Amount used.
l
now – Amount at this current moment in time. When the zing-ps command was issued.
l
min and max – The min and max values since the end of the last garbage collection.
Values are reset after the garbage collection completes and the previous garbage collection
that ended could, in this case, be of a type that starts and completes before the current type
has completed.
l
ACS_TO_CREDIT – The internally labeled name of the Java memory, the Java committable
memory. For example:
JAVA_COMMITTED_MEMORY_ACCOUNT = AZMM_JHEAP_ACCOUNT,
// 2)
0xfff… {CommitableMemoryAccount==2}{sequence number}
l
MAXIMUM – Amount reserved.
l
FND – Fund.
l
ODFND – Overdraft Fund.
Summary of Total Memory Usage
Memory Usage Summary Linux Memory Zing Memory Reservable Contingency
Used: 20433 6144 6144 0
Free: 11828 90636 80960 4838
Total: 32261 96780 87104 4838
Total Physical Memory: 129041
To view the summary, add the -s option to the zing-ps command.
Memory Usage for Each Running ZVM Process
Found 8 processes
USER
PID
TIME
LRSS
ZRSS
ZCTG
ZXmx
63
434
0
1024
CMD
xguan
25160
00:00:03
java -cp invokeinstruction MH
preames
12045
00:01:22
81
454
0
1024
java -cp hamcrest-core-1.3.jar:./ org.junit.runner.JUnitCore
MHTests
lakshv
21990
00:02:25
203
1152
java -jar gcLogAnalyser-99.99.99.99-295.jar
Azul Systems
Confidential and Proprietary
0
6144
274
Zing Tools Management
preames
30900
00:01:43
tnameserv -ORBInitialPort 18322
66
472
0
1024
preames
30849
08:26:34
rmid -port 18321 -log Rmid
181
452
0
1024
preames
30337
00:02:44
tnameserv -ORBInitialPort 16848
61
460
0
1024
preames
30043
00:02:30
rmid -port 16847 -log Rmid
44
446
0
1024
0
1024
ltene
4324
00:31:18
47
tnameserv tnameserv -ORBInitialPort 20735
570
The default for zing-ps return is the same as zing-ps -j. Including zing-ps command options
adds or removes return content relative to the default -j return. To not display the per process detail,
add the -d option.
Fund Breakdown
Fund breakdown (total 8)
NAME
BALANCE
MAXIMUM
fund[0]:
Committed
84892712960
91335163904
fund[1]:
Overdraft
5073010688
5073010688
fund[2]:
Unknown
0
0
fund[3]:
PausePrevention
5073010688
5073010688
fund[4]:
Unknown
0
0
fund[5]:
Unknown
0
0
fund[6]:
Unknown
0
0
fund[7]:
Unknown
0
0
To view the fund breakdown, add the --acct or --acct2 option to the zing-ps command. To not
display the fund breakdown, add the -f option.
Memory Usage by Account per Process
Found 6 processes
USER
PID PROCESS
preames
30900 /home/preames/work/java7/sandbox/azlinux/jdk6/x86_
64/
product/bin/tnameserv
NAME
BALANCE
ALLOCATED MAXIMUM
account[0]: default
62914560
2097152
65011712
account[1]: emergency_gc
0
0
0
account[2]: heap
Azul Systems
FND ODFND
1
1
-1
-1
517996544 490733568 6081740800 1
1
Confidential and Proprietary
275
Zing Installation and Administration Guide
account[3]: pause_prevention 0
0
5073010688 3
3
account[4]: unknown
0
0
0
-1
-1
account[5]: unknown
0
0
0
-1
-1
account[6]: unknown
0
0
0
-1
-1
account[7]: unknown
0
0
0
-1
-1
To view the fund breakdown, add the --acct or --acct2 option to the zing-ps command.
Format Command Sample Options
The five examples in the following subsections provide sample format command options to use with
Zing System Tools.
Example 1: No parameters used, returns the number of ZVM processes.
With no parameters, zing-ps returns the number of ZVM processes and memory usage for each
itemized process. The -j option conditions are used as the default option for formatting the CMD field.
$ zing-ps
Found 2 processes
USER
CMD
PID
TIME
LRSS
ZRSS
ZCTG
root 25310
00:00:08
117260288
568328192
0
/home/buildmaster/nightly/AVM/dev/in_progress/avm-dev115/sandbox/azlinux/jdk6/x86_64/product/bin/java
ZXmx
1073741824
root 25267
00:00:05
88256512
486539264
0
1073741824
home/buildmaster/nightly/AVM/dev/in_
progress/latest/sandbox/azlinux/jdk6/x86_64/product/bin/java
If there are no ZVMs running then it is safe to stop the ZST service.
$ zing-ps
Found 0 processes
Example 2: Comma separated.
The –comma option includes commas as a separator between table columns. This format can be
imported into CSV accepting tool, such as Excel. The option applies to all table formats. Sufficient
commas are included to align all columns.
$ zing-ps --acct --comma
,Fund breakdown (total 8),,
Azul Systems
FUND,
NAME,
BALANCE,
MAXIMUM
0 ,
Committed,
84892712960,
91335163904
1 ,
Overdraft,
5073010688,
5073010688
2 ,
Unknown,
0,
0
3 ,
PausePrevention,
5073010688,
5073010688
4 ,
Unknown,
0,
0
Confidential and Proprietary
276
Zing Tools Management
5 ,
Unknown,
0,
0
6 ,
Unknown,
0,
0
7 ,
Unknown,
0,
0
Example 3: CMD column options.
Select one command (CMD) column display option at a time: -a, -c, -j, or -n.
l
Using the -a option displays all the arguments included in the command used to initiate the
process.
$ zing-ps -a
Found 2 processes
USER
PID
TIME
LRSS
ZRSS
ZCTG
ZXmx CMD
preames
32691
00:00:05
94
626
0
1024
/home/preames/work/java7/sandbox/azlinux/jdk6/x86_
64/product/bin/java -XX:-ShowMessageBoxOnError XX:+UseGenPauselessGC -Xloggc:gc.log -Xmx1g Djava.awt.headless=true -Xverify Djava.security.policy=/home/qatest/sw/java/openjdk/tck/6b/lib/jck.
policy -Dsun.net.maxDatagramSockets=1024 -Djaxp.debug=true Djava.io.tmpdir=/home/preames/work/java7/sandbox/test_results_
tck/TCK-6b/5101-to-5200/tmp -cp
/home/buildmaster/nightly/ZVM/dev/in_progress/avm-dev143/sandbox/qa/AVM/lib/qajlib6.jar:.::/home/qatest/sw/java/openjdk
/tck/6b/classes com.azulsystems.qa.stress.runthese.Runthese -t 6b
/home/preames/work/java7/sandbox/test_results_tck/TCK-6b/5101-to5200/script
preames
32467
00:00:06
93
544
0
1024
/home/preames/work/java7/sandbox/azlinux/jdk6/x86_
64/product/bin/java -XX:-ShowMessageBoxOnError XX:+UseGenPauselessGC -Xloggc:gc.log -Xmx1g Djava.awt.headless=true -Xverify Djava.security.policy=/home/qatest/sw/java/openjdk/tck/6b/lib/jck.
policy -Dsun.net.maxDatagramSockets=1024 -Djaxp.debug=true Djava.io.tmpdir=/home/preames/work/java7/sandbox/test_results_
tck/TCK-6b/7301-to-7400/tmp -cp
/home/buildmaster/nightly/ZVM/dev/in_progress/avm-dev143/sandbox/qa/AVM/lib/qajlib6.jar:.::/home/qatest/sw/java/openjdk
/tck/6b/classes com.azulsystems.qa.stress.runthese.Runthese -t 6b
/home/preames/work/java7/sandbox/test_results_tck/TCK-6b/7301-to7400/script
l
Using the -c option displays the command used to initiate the process without the command
options.
$ zing-ps -c
Azul Systems
Confidential and Proprietary
277
Zing Installation and Administration Guide
Found 2 processes
USER
CMD
l
PID
TIME
LRSS
ZRSS
ZCTG
ZXmx
preames
32467
00:00:16
154
572
/home/preames/work/java7/sandbox/azlinux/jdk6/x86_
64/product/bin/java
0
1024
preames
30684
00:00:03
80
538
/home/preames/work/java7/sandbox/azlinux/jdk6/x86_
64/product/bin/java
0
1024
Using the -j option displays pre-defined options from the command used to initiate the
process. This is the default zing-ps return.
$ zing-ps -j
Found 8 processes
USER
PID
TIME
LRSS
ZRSS
ZCTG
ZXmx CMD
xguan
468
00:00:03
65
436
0
1024
java -cp classes com.azulsystems.qa.stress.runthese.Runthese -t 7
invokedynamic
preames
12045
00:03:44
64
454
0
1024
java -cp hamcrest-core-1.3.jar:./ org.junit.runner.JUnitCore
MHTests
lakshv
21990
00:13:13
236
960
java -jar gcLogAnalyser-99.99.99.99-295.jar
0
6144
preames
30900
00:06:47
tnameserv -ORBInitialPort 18322
43
478
0
1024
528
436
0
1024
preames
30337
00:07:43
tnameserv -ORBInitialPort 16848
43
462
0
1024
preames
30043
00:07:05
rmid -port 16847 -log Rmid
33
446
0
1024
ltene
4324
00:48:24
tnameserv tnameserv -
53
636
0
1024
preames
30849 1-16:43:45
rmid -port 18321 -log Rmid
l
Using the -n option displays only the name of the command used to initiate the process.
$ zing-ps -n
Found 2 processes
USER
CMD
Azul Systems
PID
TIME
LRSS
Confidential and Proprietary
ZRSS
ZCTG
ZXmx
278
Zing Tools Management
preames
tnameserv
30900
00:00:04
64
470
0
1024
preames
rmid
30849
00:00:03
63
480
0
1024
Example 4: Units displayed options.
Select one unit display option at a time: -b, -h, or -m.
l
Using the -b option displays the memory values in bytes. Fund and per-process account
information is in bytes by default, unless otherwise noted.
$ zing-ps -b
Found 9 processes
USER
PID
TIME
LRSS
ZRSS
ZCTG
ZXmx CMD
preames 14096 00:00:07 71397376 473956352 0
1073741824
java -cp hamcrest-core-1.3.jar:./ org.junit.runner.JUnitCore
MHTests
xguan
468 00:00:03 67801088 457179136 0
1073741824
java -cp classes com.azulsystems.qa.stress.runthese.Runthese -t 7
invokedynamic
preames 12045 00:03:44 67457024 476053504 0
1073741824
java -cp hamcrest-core-1.3.jar:./ org.junit.runner.JUnitCore
MHTests
l
lakshv
21990 00:13:12 247308288 1006632960 0
java -jar gcLogAnalyser-99.99.99.99-295.jar
6442450944
preames 30900 00:06:47 44728320
tnameserv -ORBInitialPort 18322
501219328
0
1073741824
preames 30849 1-16:43:33 553218048 457179136
rmid -port 18321 -log Rmid
0
1073741824
preames 30337 00:07:42
4716032
tnameserv -ORBInitialPort 16848
484442112
0
1073741824
preames 30043 00:07:05
34119680
rmid -port 16847 -log Rmid
467664896
0
1073741824
ltene
4324 00:48:24
55144448 666894336
tnameserv tnameserv -ORBInitialPort 20735
0
1073741824
Using the -h option displays the memory values in human readable values rounded to the units
as noted K=Kilo, M=Mega, G=Giga, T=Tera.
$ zing-ps -h
Found 8 processes
USER
CMD
Azul Systems
PID
TIME
LRSS
ZRSS
ZCTG
Confidential and Proprietary
ZXmx
279
Zing Installation and Administration Guide
xguan
468
00:00:03
65 M
436 M
0
1024 M
java -cp classes com.azulsystems.qa.stress.runthese.Runthese -t 7
invokedynamic
preames 12045
00:03:44
64 M
454 M
0
1024 M
java -cp hamcrest-core-1.3.jar:./ org.junit.runner.JUnitCore
MHTests
l
lakshv 21990
00:13:13
236 M
60 M
java -jar gcLogAnalyser-99.99.99.99-295.jar
0
6144 M
preames 30900
00:06:47
43 M
tnameserv -ORBInitialPort 18322
478 M
0
1024 M
preames 30849
1-16:43:44
rmid -port 18321 -log Rmid
528 M
436 M
0
1024 M
preames 30337
00:07:43
43 M
tnameserv -ORBInitialPort 16848
462 M
0
1024 M
preames 30043
00:07:05
rmid -port 16847 -log Rmid
446 M
0
1024 M
ltene
4324
00:48:24
53 M
636 M
tnameserv tnameserv -ORBInitialPort 20735
0
1024 M
33 M
Sample using -h with -s options.
$ zing-ps -s -h
Memory Usage Summary
Linux Memory
Zing Memory
Reservable
Contingency
Used:
11 G
14 G
14 G
0
Free:
21 G
81 G
71 G
4838 M
Total:
32 G
95 G
85 G
4838 M
Total Physical Memory:
126 G
Found 9 processes
USER
PID
TIME
LRSS
ZRSS
ZCTG
ZXmx CMD
preames
5862
00:00:06
78 M
452 M
0
1024 M
java -cp hamcrest-core-1.3.jar:./ org.junit.runner.JUnitCore
MHTests
xguan
468
00:00:03
65 M
436 M
0
1024 M
java -cp classes com.azulsystems.qa.stress.runthese.Runthese -t 7
invokedynamic
preames 12045
00:03:44
64 M
454 M
0
1024 M
java -cp hamcrest-core-1.3.jar:./ org.junit.runner.JUnitCore
MHTests
Azul Systems
Confidential and Proprietary
280
Zing Tools Management
l
lakshv
21990
00:13:14
236 M
960 M
java -jar gcLogAnalyser-99.99.99.99-295.jar
0
6144 M
preames 30900
00:06:48
43 M
tnameserv -ORBInitialPort 18322
478 M
0
1024 M
preames 30849 1-16:47:05
rmid -port 18321 -log Rmid
529 M
436 M
0
1024 M
preames 30337
00:07:44
43 M
tnameserv -ORBInitialPort 16848
462 M
0
1024 M
preames 30043
00:07:06
rmid -port 16847 -log Rmid
446 M
0
1024 M
ltene
4324
00:48:25
53 M
636 M
tnameserv tnameserv -ORBInitialPort 20735
0
1024 M
33 M
Using the -m option displays the memory values in megabytes. No suffix is included. This is the
default value for basic zing-ps (without --acct or --acct2 options). Used with the --
acct or --acct2 options, this changes the display to megabytes, rounded to the nearest
megabyte.
$ zing-ps --acct -m
Fund breakdown (total 8)
NAME
BALANCE
MAXIMUM
fund[0]:
Committed
73792
87104
fund[1]:
Overdraft
4838
4838
fund[2]:
Unknown
0
0
fund[3]:
PausePrevention
4838
4838
fund[4]:
Unknown
0
0
fund[5]:
Unknown
0
0
fund[6]:
Unknown
0
0
fund[7]:
Unknown
0
0
Found 8 processes
USER
PID PROCESS
xguan
468 /home/xguan/opt/zing7/bin/java
NAME
BALANCE
ALLOCATED
MAXIMUM
FND
account[0]:
256
default
60
2
62
1
-
account[1]:
255
emergency_gc
0
0
0
-1
-
ODFND
Azul Systems
Confidential and Proprietary
281
Zing Installation and Administration Guide
account[2]:
65021
heap
528
434
5800
1
-
account[3]: pause_prevention
65021
0
0
4838
3
-
account[4]:
252
unknown
0
0
0
-1
-
account[5]:
251
unknown
0
0
0
-1
-
account[6]:
250
unknown
0
0
0
-1
-
account[7]:
249
unknown
0
0
0
-1
-
preames
12045 ././sandbox/azlinux/cayenne/x86_64/debug/bin/java
NAME
BALANCE
ALLOCATED
MAXIMUM
FND
ODFND
account[0]:
-256
default
60
2
62
1
account[1]:
-255
emergency_gc
0
0
0
-1
account[2]:
65021
heap
510
452
5800
1
-
account[3]:
65021
pause_prevention
0
0
4838
3
-
account[4]:
-252
unknown
0
0
0
-1
account[5]:
-251
unknown
0
0
0
-1
account[6]:
-250
unknown
0
0
0
-1
account[7]:
-249
unknown
0
0
0
-1
lakshv
21990 /home/buildmaster/nightly/AVM/dev/in_
progress/avm-dev-152/sandbox/azlinux/jdk6/x86_64/product/bin/java
NAME BALANCE
ALLOCATED
MAXIMUM
FND
2
370
1
ODFND
account[0]:
256
Azul Systems
default
368
Confidential and Proprietary
-
282
Zing Tools Management
account[1]:
255
emergency_gc
0
0
0
-1
-
account[2]:
65021
heap
4816
958
10612
1
-
account[3]: pause_prevention
65021
0
0
4838
3
-
account[4]:
252
unknown
0
0
0
-1
-
account[5]:
251
unknown
0
0
0
-1
-
account[6]:
250
unknown
0
0
0
-1
-
account[7]:
249
unknown
0
0
0
-1
-
ALLOCATED
MAXIMUM
FND
preames
30900
/home/preames/work/java7/sandbox/azlinux/jdk6/x86_
64/product/bin/tnameserv
NAME BALANCE
ODFND
account[0]:
256
default
60
2
62
1
-
account[1]:
255
emergency_gc
0
0
0
-1
-
account[2]:
65021
heap
486
476
5800
1
-
account[3]: pause_prevention
65021
0
0
4838
3
-
account[4]:
252
unknown
0
0
0
-1
-
account[5]:
251
unknown
0
0
0
-1
-
account[6]:
250
unknown
0
0
0
-1
-
account[7]:
249
unknown
0
0
0
-1
-
preames
30849
/home/preames/work/java7/sandbox/azlinux/jdk6/x86_
64/product/bin/rmid
NAME
BALANCE
ALLOCATED MAXIMUM
FND
ODFND
Azul Systems
Confidential and Proprietary
283
Zing Installation and Administration Guide
account[0]:
256
default
60
2
62
1
-
account[1]:
255
emergency_gc
0
0
0
-1
-
account[2]:
65021
heap
528
434
5800
1
-
account[3]: pause_prevention
65021
0
0
4838
3
-
account[4]:
252
unknown
0
0
0
-1
-
account[5]:
251
unknown
0
0
0
-1
-
account[6]:
250
unknown
0
0
0
-1
-
account[7]:
249
unknown
0
0
0
-1
-
preames
30337
/home/preames/work/java7/sandbox/azlinux/jdk6/x86_
64/product/bin/tnameserv
NAME
BALANCE
ALLOCATED
MAXIMUM
FND
account[0]:
256
default
60
2
62
1
-
account[1]:
255
emergency_gc
0
0
0
-1
-
account[2]:
65021
heap
502
460
5800
1
-
account[3]: pause_prevention
65021
0
0
4838
3
-
account[4]:
252
unknown
0
0
0
-1
-
account[5]:
251
unknown
0
0
0
-1
-
account[6]:
250
unknown
0
0
0
-1
-
account[7]:
249
unknown
0
0
0
-1
-
ODFND
Azul Systems
Confidential and Proprietary
284
Zing Tools Management
preames
30043
/home/preames/work/java7/sandbox/azlinux/jdk6/x86_
64/product/bin/rmid
NAME
BALANCE
ALLOCATED
MAXIMUM
FND
ODFND
account[0]:
256
default
60
2
62
1
-
account[1]:
255
emergency_gc
0
0
0
-1
-
account[2]:
65021
heap
518
444
5800
1
-
account[3]: pause_prevention
65021
0
0
4838
3
-
account[4]:
252
unknown
0
0
0
-1
-
account[5]:
251
unknown
0
0
0
-1
-
account[6]:
250
unknown
0
0
0
-1
-
account[7]:
249
unknown
0
0
0
-1
-
ltene
4324 /home/buildmaster/nightly/AVM/dev/in_
progress/avm-dev-146/sandbox/azlinux/jdk6/x86_
64/product/bin/tnameserv
NAME
BALANCE
ALLOCATED
MAXIMUM
FND
account[0]:
256
default
60
2
62
1
-
account[1]:
255
emergency_gc
0
0
0
-1
-
account[2]:
65021
heap
328
634
5800
1
-
account[3]: pause_prevention
65021
0
0
4838
3
-
account[4]:
252
unknown
0
0
0
-1
-
account[5]:
251
unknown
0
0
0
-1
-
account[6]:
250
unknown
0
0
0
-1
-
ODFND
Azul Systems
Confidential and Proprietary
285
Zing Installation and Administration Guide
account[7]:
249
unknown
0
0
0
-1
-
Example 5: Details of specific process by process id (PID).
l
Using the -p [PID] option lists the memory information for the specified process only.
$ zing-ps -p 3135
Found 1 processes
USER
PID
TIME
LRSS
ZRSS
ZCTG
ZXmx CMD
jcoha
135
01:33:44
786
4430
3466
1024 compiler.compiler
Samples Memory Usage by Account
Examples 6 through 10 in the following subsections depict methods of using the zing-ps command to
list information about ZVM processes.
Example 6: To monitor a test run.
If you run a while loop, logging it into a file every 10 seconds or so, you can then make graphs from
the log data, using your favorite raw-number-to-nice-graphs conversion tool.
# while true; do zing-ps --acct >> /tmp/zing-ps_log ; sleep 10;
done
Example 7: For ZVM fault diagnosis.
In the rare occurrence of a ZVM crash, to diagnose the fault it can be useful to have the output of
zing-ps --acct from the system after the crash occurs, but before a system reboot or a ZST
restart. If ZVM crashed, please contact your Azul representative who might direct you to collect the
zing-ps --acct output and upload to the Azul ftp site along with other data, logs and cores.
Note:
Giving the ZST too much memory (and exhausting the Linux memory for C heap and
other Linux stuff as a result) can have "very negative" effects on the system.
Example 8: Memory statistics with zero ZVM processes running.
This example shows memory funding with no ZVM processes running.
# zing-ps --acct
Fund breakdown (total 8)
fund[0]:
Azul Systems
NAME
BALANCE
MAXIMUM
Committed
22745710592
22745710592
Confidential and Proprietary
286
Zing Tools Management
fund[1]:
Overdraft
1262485504
1262485504
fund[2]:
Unknown
0
0
fund[3]:
PausePrevention
1262485504
1262485504
fund[4]:
Unknown
0
0
fund[5]:
Unknown
0
0
fund[6]:
Unknown
0
0
fund[7]:
Unknown
0
0
Found 0 processes
Example 9: Memory account details with 1 ZVM process running.
$ zing-ps --acct2
Process level Maximum: 0
NAME
KB)
BALANCE(now/min/max KB) ALLOCATED(now/min/max
MAXIMUM(KB) ACS_TO_CREDIT
FND ODFND
AC[0]:Default
32768/ 30720/ 32768
32768
0xffffffffffffff00
0
1
AC[1]:Unknown
0
0/ 0/ 0
0xffffffffffffff01
AC[2]:JavaHeap
2201600
2048/ 0/ 4096
0/ 0/ 0
-1
-1
11360/ 911360/ 1873920 2201600/ 1239040/
8067072
0xffffffffffff0203
0
1
AC[3]:PausePrevention 0/ 0/ 0
4954112
0xffffffffffff0203
0/ 0/ 0
3
3
Field descriptions:
l
Values are KB bytes.
l
account [0]: The maximum is equal to the Partition. The allocated plus the balance are
equal to maximum.
l
account [2]: Java Heap. If the balance is negative, the application is using contingency
memory.
l
account [3]: Maximum value allocated for Pause Prevention.
The value for account[2] heap ALLOCATED (used) is higher than AC[2] javaHeap
ALLOCATED now (used) because the zing-ps --acct (in these examples) was followed
by the zing-ps --acct2 and the application continued to allocate objects into the Java
heap.
Example 10: Memory funding details with 1 ZVM process running.
This example shows memory funding breakdown for ZST and allocation to the ZVM process PID
15479.
$ zing-ps --acct
Azul Systems
Confidential and Proprietary
287
Zing Installation and Administration Guide
Fund breakdown (total 8)
NAME BALANCEMAXIMUM
fund[0]:Committed 819357286442553311232
fund[1]:Overdraft 23634903042363490304
fund[2]:Unknown 00
fund[3]:PausePrevention23634903042363490304
fund[4]:Unknown 00
fund[5]:Unknown 00
fund[6]:Unknown 00
fund[7]:Unknown 00
Found 1 processes.
USER PID PROCESS
root 15479 /opt/zing/zing-jdk1.6.0_23-4.2.0.0.beta-14-x86_
64/bin/java
NAMEBALANCEALLOCATEDMAXIMUMFNDODFND
account[0]:default341835776209715234393292801
account[1]:emergency_gc000-1-1
account[2]:heap3122659328027892121603637929574401
account[3]:pause_prevention0027487790694433
account[4]:unknown000-1-1
account[5]:unknown000-1-1
account[6]:unknown000-1-1
account[7]:unknown000-1-1
Explanation of zing-ps Fund Breakdown
The Fund breakdown in Example 10: Memory funding details with 1 ZVM process running, shows the
memory funding as set up for the ZST. The output from the command then also shows that the zingps acct command has found one Zing Java process PID 15749 and gives the memory breakdown
for that Java process.
l
The table below takes a look at the example Fund Breakdown in more detail. l
The figures have been converted from bytes to megabytes (because it is easier to think about
megabytes than large numbers of bytes).
NAME
fund[0]:
Azul Systems
Committed
BALANCE
7814
Confidential and Proprietary
MAXIMUM
40582 288
Zing Tools Management
NAME
BALANCE
MAXIMUM
The Committed Maximum is the maximum Reservable Heap
The Committed Balance is the maximum Available Heap size for the JVM Xmx command option; and if other JVMs have already been started this will be
less than the maximum Reservable value.
Java Process ID 15479 has been started and set a –Xmx of 32768MB reducing
the Available heap from 40582MB to 7814MB
fund[1]:
Overdraft
2254
2254
The Overdraft is the Contingency Memory (using the ZST defaults, this is 5%
of the Zing Memory)
fund[3]:
PausePrevention
2254
2254
The PausePrevention is the Pause prevention memory (using the ZST
defaults, this is 5% of the Zing Memory)
The sum of the Committed Maximum and the Overdraft and Pause prevention maximums is
equal to the size of the Zing Memory (using the ZST defaults this is 75% of the available
Operating System memory, leaving 25% for the Linux Memory). In this case 40852 + 2254 +
2254 = 45090MB from which we can infer that if the ZST was configured with a 75/25
allocation then the available Operating System memory at the time the ZST was configured
was 60120MB (58.7GB). This can be useful to know; for example, if we made another
assumption that this was a 64GB RAM machine, then 5416MB has been allocated away
somewhere else before the Operating System was loaded – perhaps some DMA buffers for
10GBe NIC interfaces or some such.
Example Memory Fund Allocation for a Process
Carrying on with Example 10: Memory funding details with 1 ZVM process running, using Process
15479 for illustration.
l
The table below takes a look at the example Fund allocation in more detail. l
The figures have been converted from bytes to megabytes (because it is easier to think about
megabytes than large numbers of bytes).
/opt/zing/zing-jdk1.6.0_23-4.2.0.0.beta-14-x86_64/bin/PID: 15479
java
NAME
Account 0
Azul Systems
default
BALANCE
326
ALLOCATED MAXIMUM FND ODFND
2
328
Confidential and Proprietary
0
1
289
Zing Installation and Administration Guide
/opt/zing/zing-jdk1.6.0_23-4.2.0.0.beta-14-x86_64/bin/PID: 15479
java
NAME
BALANCE
ALLOCATED MAXIMUM FND ODFND
The Account 0 value is in bytes, and it amounts to 328MB. Its max is equal to
its funding (that is, the ALLOCATED plus the BALANCE are equal to max). Account 0 is used for some ZST-based memory stuff that is not purely in the
heap (such as kernel structures for holding the kernel page tables and such). The JVM assigns 1% of -Xmx to Account 0, and the rest to Account 2 (both
draw from Committed memory).
Account 1
emergency_
gc
0
0
0
-1
-1
heap
29780
2660
34694
0
1
Account 2 is the Java Heap. If its BALANCE shows as negative, your
application is using contingency memory.
Account 2
The Account 2 funding (BALANCE + ALLOCATED) together with Account 0
funding adds up exactly to the -Xmx value.
In this case -Xmx => 29780 + 2660 + 328 = 32768MB
The option flag -XX:JavaMemMax can be used to set the maximum for
Account 2 (heap).
Note: When -XX:JavaMemMax=<val> equals -Xmx<val>, then the ZVM
instance is not allowed to use any Contingency memory.
pause_
prevention
Account 3
0
0
262144
3
3
The Account 3 MAXIMUM value for the pause_prevention pool computes to
256GB (exactly). Having a large MAXIMUM value doesn't mean you have
funding for that much. It just means you can draw up to that much total
allocation (including dipping into overdraft accounts) if the ZST has resources
to give you in the fund you are drawing from. In the case of pause prevention, a max of 256GB just means that this process
can draw down the entire pause prevention pool if it wants to (it has zero
funding for account 3, so all of that draw shows up in negative balances equal
to the allocation level).
The MAXIMUM values for each account are not funding numbers. They are just absolute
limits on how much can be allocated in that account. This matters a lot when overdraft
Azul Systems
Confidential and Proprietary
290
Zing Tools Management
accounts are involved, as the MAXIMUM caps the total amount of allocation, even after the
balance goes negative. The committed funding is always the sum of BALANCE + ALLOCATED, this remains true
including times when the ZVM dips into an overdraft account, such as contingency (the
BALANCE will go negative at that point, and even though ALLOCATED is greater than
committed funding, the sum is still equal to committed).
The ZVM uses Zing memory only for the -Xmx (Java heap). So you need to leave enough Linux
memory to accommodate not only the other Linux stuff that's there, but also the ZVM’s C-heap. Use zing-ps and awk Commands to Show Available Heap Sizes in MB
The output of the zing-ps -acct command is in bytes; you might prefer to think in Megabytes.
This technique is based on the zing-ps –acct command and is a one-line script that uses the Linux
grep command to search the output combined with the Linux awk command to calculate and format
the output.
The output from the zing-ps –acct command is searched by grep for the line containing the
Committed string. The awk command uses $3 to select the third field which is the available balance
in column three of the output with the heading BALANCE. l
The following one-line script prints the maximum Available Heap size for the JVM command
option –Xmx and if other JVMs have already been started this is less than the maximum
Reservable value in column four headed MAXIMUM.
$ echo "Zing Available Heapsize (MB) is "`zing-ps --acct|grep
Committed|awk '{print int($3/(1024*1024))}'
l
To read the total Reservable value in MB, in this one-line script the awk command is modified
to use $4 to select the fourth field which is the MAXIMUM balance
$ echo "Zing Total Heapsize (MB) is "`zing-ps --acct|grep
Committed|awk '{print int($4/(1024*1024))}
Example 11: No JVMs have been started.
[root@localhost bin]# zing-ps --acct
Fund breakdown (total 8)
Azul Systems
NAME
BALANCE
MAXIMUM
fund[0]:
Committed
4041211904
4041211904
fund[1]:
Overdraft
222298112
222298112
fund[2]:
Unknown
0
0
fund[3]:
PausePrevention
222298112
222298112
fund[4]:
Unknown
0
0
fund[5]:
Unknown
0
0
fund[6]:
Unknown
0
0
Confidential and Proprietary
291
Zing Installation and Administration Guide
fund[7]:
Unknown
0
0
Found 0 processes.
[root@localhost bin]# echo "Zing Available Heapsize (MB) is "`zingps --acct|grep Committed|awk '{print int($3/(1024*1024))}'`
Zing Available Heapsize (MB) is 3854
[root@localhost bin]# echo "Zing Total Heapsize (MB) is "`zing-ps -acct|grep Committed|awk '{print int($4/(1024*1024))}'`
Zing Total Heapsize (MB) is 3854
root
5785 java
NAME
BALANCE
ALLOCATED
MAXIMUM FND
account[0]:
1
default
10485760
2097152
12582912
0
account[1]:
-1
emergency_gc
0
0
0
-1
1283457024
0
3
ODFND
account[2]:
1
heap 555745280
505413632
account[3]: pause_prevention
3
0
0 274877906944
account[4]:
-1
unknown
0
0
0
-1
account[5]:
-1
unknown
0
0
0
-1
account[6]:
-1
unknown
0
0
0
-1
account[7]:
-1
unknown
0
0
0
-1
[root@localhost bin]# echo "Zing Available Heapsize (MB) is "`zingps --acct|grep Committed|awk '{print int($3/(1024*1024))}'`
Zing Available Heapsize (MB) is 2830
[root@localhost bin]# echo "Zing Total Heapsize (MB) is "`zing-ps -acct|grep Committed|awk '{print int($4/(1024*1024))}'`
Zing Total Heapsize (MB) is 3854
Example 12: An Azul Inspector 1GB JVM has been started.
See Azul Systems website to download free Open Source tool Azul Inspector, at
http://www.azulsystems.com/dev_resources/azul_inspector.
[root@localhost bin]# zing-ps --acct
Fund breakdown (total 8)
fund[0]:
Azul Systems
NAME
BALANCE
MAXIMUM
Committed
2967470080
4041211904
Confidential and Proprietary
292
Zing Tools Management
fund[1]:
Overdraft
222298112
222298112
fund[2]:
Unknown
0
0
fund[3]:
PausePrevention
222298112
222298112
fund[4]:
Unknown
0
0
fund[5]:
Unknown
0
0
fund[6]:
Unknown
0
0
fund[7]:
Unknown
0
0
Found 1 processes.
USER
root
PID PROCESS
5785 java
NAME
BALANCE
ALLOCATED
MAXIMUM FND
account[0]:
1
default
10485760
2097152
12582912
0
account[1]:
-1
emergency_gc
0
0
0
-1
1283457024
0
3
ODFND
account[2]:
1
heap 555745280
505413632
account[3]: pause_prevention
3
0
0 274877906944
account[4]:
-1
unknown
0
0
0
-1
account[5]:
-1
unknown
0
0
0
-1
account[6]:
-1
unknown
0
0
0
-1
account[7]:
-1
unknown
0
0
0
-1
[root@localhost bin]# echo "Zing Available Heapsize (MB) is "`zingps --acct|grep Committed|awk '{print int($3/(1024*1024))}'`
Zing Available Heapsize (MB) is 2830
[root@localhost bin]# echo "Zing Total Heapsize (MB) is "`zing-ps -acct|grep Committed|awk '{print int($4/(1024*1024))}'`
Zing Total Heapsize (MB) is 3854
Azul Systems
Confidential and Proprietary
293
Zing Installation and Administration Guide
Troubleshooting Zing
Troubleshooting Zing describes using core bundles and lists common errors with possible solutions
when using to run your Java applications.
Core Files and Core Bundling with Zing
If you contact your Azul technical support representative regarding a failure, you might be asked to
provide core files or a core bundle that includes the core files and crash associated files, (such as, log
files generated by the ZVM instance, system log files, and versions of shared libraries used by the ZVM
instance). Providing this information, in addition to the core files, helps Azul to properly diagnose and
quickly identify failures due to Zing.
If a failure occurs due to a ZVM instance or ZVM instance-related Java application failure a core file is
created, provided ulimit -c unlimited is set. The ulimit setting is required to generate a core
file.
To create a core bundle, Zing provides the following:
l
Automatic ZVM Core Bundling, using the zing-core-pattern tool. By default, this is not
enabled. l
Manual ZVM Core Bundling, using the zing-core-bundler script. There is an option, -XX:+DumpMiniCore, that creates significantly smaller Zing core files. To adjust
the size of the core file, use this option with the -XX:DumpMiniCoreLevel=<x> option. Where <x>
specifies the information that is included in the mini core file.
Linux systems provide core_pattern to name core dump files. Standard Red Hat Enterprise Linux
6.x includes a core bundling tool, Automatic Bug Reporting Tool (ABRT), that contains the abrt
daemon.
l
Note:
l
If you are using core_pipe_limit, it is set to 4 by default. Changing the limit
can affect system responsiveness. Though setting the limit to 0 (zero) allows
unlimited concurrent core dumps, the cores might be corrupted. Therefore, setting
the core_pipe_limit to 0 is not recommended.
Using the zing-core-pattern tool, replaces the RHEL, SLES, or Ubuntu
system core_pattern, but provides a means to automatically bundle Zing core
files with diagnostically required support files.
Automatic ZVM Core Bundling (zing-core-pattern) for
RHEL/CentOS/Oracle Linux 5.x and Amazon Linux is not supported. Use the
Manual method. See "Manual ZVM Core Bundling" on page 299.
Azul Systems
Confidential and Proprietary
294
Troubleshooting Zing
Mini-Core File Option
There is an option, -XX:+DumpMiniCore, that creates significantly smaller Zing core files. This
option is specified through the Java application launch command and applied to the runtime Java
application. It is not applied to the ZVM host machine. When you use this option:
l
Generated Zing core files do not include application objects stored in the Java heap.
l
Time required to produce a Zing core file or core file bundle is reduced.
To further adjust the amount of data that is included in a mini-core file, include the option, XX:DumpMiniCoreLevel=<x>, where <x> is in [0, 4].
l
Level 0 (the current default) includes page infos and audit records
l
Level 1 includes marking information and the card tables
l
Level 2 includes trampolines, forwarding hash tables, preallocated pages etc.
l
Level 3 includes the heap mirror pages
l
Level 4 includes the object heap itself
Mini-Core File Option Requirements
The mini-core file -XX:+DumpMiniCore option requires ZST 5.7.5 or later and ZVM 5.10.x or later.
The mini-core file level option, -XX:DumpMiniCoreLevel=<x>, requires ZST 5.7.11 or later and
ZVM 15.05.0.0 or later.
If the option is specified and either the ZST version or ZVM version is not compatible, a message is
issued.
l
If the ZST version supports the -XX:+DumpMiniCore option, but the ZVM version does
not, an Unrecognized VM option warning is printed to STDERR. For example:
/home/buildmaster/nightly/ZVM/5.x-zvm/released/zvm-5.9.0.07/sandbox/azlinux/jdk6/x86_64/product/bin/java -XX:+DumpMiniCore
-version
Zing 64-Bit Tiered VM error: Unrecognized VM option
'+DumpMiniCore'
Could not create the Java virtual machine.
l
If the ZVM version supports the -XX:+DumpMiniCore option, but the ZST version does
not, a warning message is issued. For example:
/bin/java -jar -XX:+DumpMiniCore -version
Zing VM Warning: -XX:+DumpMiniCore is not supported by this ZST
(found API version 0x5e, requires API version >= 0x5f)
java version "1.6.0-internal-zing_99.99.99.99.dev"
Zing Runtime Environment for Java Applications (build 1.6.0internal-zing_99.99.99.99.dev-b25)
Zing 64-Bit Tiered VM (build 1.6.0-zing_99.99.99.99.dev-b501product-azlinuxM-X86_64, mixed mode)
Azul Systems
Confidential and Proprietary
295
Zing Installation and Administration Guide
Setting the Option
Include the option -XX:+DumpMiniCore, and optionally, -XX:DumpMiniCoreLevel=<x>, with
your Java launch command.
Some failures cannot be effectively diagnosed with a mini-core file. In this case, Azul support may
request that you try to reproduce the failure and produce a full-sized core file, by removing XX:+DumpMiniCore from your Java launch command.
l
When -XX:+DumpMiniCore option is not specified, a full core file, including the
application objects stored in the Java heap, is created if Zing crashes.
l
When -XX:+DumpMiniCore option is specified, a core file, that does not include the
application objects stored in the Java heap, is created if Zing crashes.
l
When -XX:+DumpMiniCore and the -XX:DumpMiniCoreLevel=<x> options are
specified, a core file, that includes the specified information, is created if Zing crashes.
Automatic ZVM Core Bundling
When the automatic core bundling tool, zing-core-pattern, is explicitly enabled, Zing can
automatically bundle core files with the shared libraries that were in use by the ZVM instance running
the Java application when it failed.
Notes:
Using the zing-core-pattern tool, replaces the RHEL, SLES, or Ubuntu system core_
pattern, but provides a means to automatically bundle Zing core files with diagnostically
required support files.
Automatic ZVM Core Bundling (zing-core-pattern) for RHEL/CentOS/Oracle Linux 5.x
and Amazon Linux is not supported. Use the manual method. See "Manual ZVM Core
Bundling" on page 299.
A core bundle called <corepid>.tgz.gpg is typically generated in the current working directory of
the application, containing the core file and all extra information needed for forensic analysis of the
core. The core bundle created with zing-core-pattern is encrypted.
Enabling Automatic ZVM Core Bundling
Note:
Automatic ZVM Core Bundling (zing-core-pattern) for
RHEL/CentOS/Oracle Linux 5.x and Amazon Linux is not supported.Use the
manual method. See "Manual ZVM Core Bundling" on page 299.
To enable automatic core bundling in RHEL, SLES, or Ubuntu systems:
1. Scan the file, core_pattern, for any reference piped ( | ) core_pattern.
$ more /proc/sys/kernel/core_pattern
Azul Systems
Confidential and Proprietary
296
Troubleshooting Zing
2. Search for the string:
l
For RHEL and SLES
|/usr/libexec/abrt-hook-ccpp /var/spool/abrt %s %c %p %u %g
%t %h %e 636f726500
l
For Ubuntu
|/usr/share/apport/apport %p %s %c
3. If a piped ( | ) core_pattern is found:
Stop the process included in core_pattern. For example:
l
For RHEL and SLES
$ service abrtd stop
l
For RHEL 6.3:
$ service abrt-ccpp stop
l
For Ubuntu
$ service apport stop
4. Ensure /usr/sbin is in your Zing executable path. For example:
To your appropriate profile file, add:
export PATH=/usr/sbin:$PATH
5. Enable system-config-zing-core-pattern, run the command:
$ system-config-zing-core-pattern enable
l
Enabling zing-core-pattern stores a copy of existing core_
pattern to a /var/run/core_pattern.save and overwrites
any existing core pattern in /proc/sys/kernel/core_
Notes:
pattern.
l
Automatic ZVM Core Bundling for RHEL/CentOS 5.x and Amazon
Linux is not supported. Use the Manual method. See "Manual ZVM
Core Bundling" on page 299.
Example system response:
You are about to enable zing-core-pattern
This replaces core pattern in '/proc/sys/kernel/core_pattern'
This affects core dump process on this system
Current /proc/sys/kernel/core_pattern : |/usr/sbin/zing-corepattern-hook %p %u %g %s %t %h %e %c
New core pattern will be : |/usr/sbin/zing-core-pattern-hook %p %u
%g %s %t %h %e %c
Azul Systems
Confidential and Proprietary
297
Zing Installation and Administration Guide
6. Choose to replace core_pattern with zing-core-pattern. Type y.
Do you want to proceed? (y)es or (n)o [default 'y']
7. Choose to include application .jar files in the bundle.
Do you want to bundle application data, including 'jar' files? (y)es
or (n)o [default 'y']:
Yes – collects and adds .jar, application related files, and .so files to the core bundle.
No – does not add .jar iles to the core bundle. .so files are included in the core bundle.
Example system response:
zing-core-pattern: INFO: zing-core-pattern enabled
8. Choose to include the non-java executable in the bundle.
Do you want the non-java executable (if any) to be bundled ? : (y)es
or (n)o [default 'y']:
Example system response:
Current /proc/sys/kernel/core_pattern : core
Saving existing core pattern to /var/run/core-pattern.save
zing-core-pattern: INFO: zing-core-pattern enabled
9. Ensure the piped ( | ) core_pattern process is not restarted on boot.
l
For RHEL or SLES
$ chkconfig abrdt off
l
For RHEL 6.3
$ chkconfig abrt-ccpp off
l
For Ubuntu
$ chkconfig apport off
Disabling Automatic ZVM Core Bundling
To disable automatic core bundling in RHEL, SLES, or Ubuntu systems:
1. Disable system-config-zing-core-pattern, run the command and confirm at the prompt:
$ system-config-zing-core-pattern disable
Note:
Disable zing-core-pattern retrieves a copy of the previously stored core_
pattern from /var/run/core_pattern.save and overwrites the zingcore-pattern. If a saved core_pattern is not found, then the system's core_
pattern is set to core.
Example system response:
You are about to disable zing-core-pattern.
This replaces the core pattern in '/proc/sys/kernel/core_pattern'
Azul Systems
Confidential and Proprietary
298
Troubleshooting Zing
Current core pattern: |/usr/sbin/zing-core-pattern-hook %p %u %g %s
%t %h %e
New core pattern will be: /tmp/cores/core.%e.%p.%h.%t
2. Confirm to disable automatic Zing core file bundling through the system-config-zing-corepattern command.
Do you want to proceed? (y)es or (n)o [default 'y']:y
zing-core-pattern: INFO: zing-core-pattern found, replacing it with
core-pattern in /var/run/core-pattern.save
zing-core-pattern: INFO: Zing-core-pattern disabled
Locating Automatic ZVM Core Bundles
If a ZVM instance failure occurs when this is enabled, a bundle including the core file and shared
libraries is created.
1. Locate the bundled libs.<corepid>.tgz.gpg file.
l
For RHEL/CentOS 6.x and 7.0, SLES, and Ubuntu systems:
The libs.<corepid>.tgz.gpg file is located in the folder where the ZVM instance Java
launch command is executed.
l
For RHEL/CentOS 5.3 or higher 5.x systems:
Thelibs.<corepid>.tgz.gpg file is located in /var/crash.
2. Send the generated bundle to Azul for failure analysis.
Manual ZVM Core Bundling
If automatic core bundling is not enabled, you can manually bundle the core files with the shared
libraries that were in use by the ZVM instance running the Java application when it failed.
If you are running a system based on Red Hat Enterprise Linux 5.2 or CentOS Linux 5.2, the automatic
core bundler is not on, so core files need to be bundled manually. For this purpose the script zingcore-bundler is provided. This script, as part of the ZST installation, is located in the /usr/sbin
subdirectory of the ZST installation.
The zing-core-bundler bundles the required files needed to debug a Zing Virtual Machine core. It
assembles, collects, and bundles the core file along with the shared objects, data, and executable files
in-use to an encrypted gzipped tarball (.tgz.gpg) archive.
To manually bundle the core file with shared libraries:
1. On RHEL, SLES, and Ubuntu systems, ensure the development tools package group is
installed.
$ yum groupinstall 'Development Tools'
Azul Systems
Confidential and Proprietary
299
Zing Installation and Administration Guide
Selected development tools are required to bundle RHEL 5 core files. If they are not
Note: installed, the shared libraries, which were used at the time of the crash and are
essential to processing the core file, are not included.
2. Locate the core file.
Core files are bundled and stored in the current working directory of the process that crashed.
Note:
Typically, you create a core bundle on the system where the core file was created, for
example hostA. If you run the zing-core-bundler command with a copy of the
core file on a different system, for example hostB, then include the -bundle-oncurrent-host option.
3. On Ubuntu systems, ensure that the strings command is available. If it is not, install the
package, binutils.
# apt-get install binutils
4. If you use the jsvc tool to start your application, to generate Zing core files:
# kill -SIGABRT <PID>
5. Ensure /usr/sbin is in your Zing executable path. For example:
To your appropriate profile file, add:
export PATH=/usr/sbin:$PATH
6. Run the zing-core-bundler command. At the ZVM host command line,where ZST is
installed:
To create a bundle with only related shared libraries that does not include the .jar files.
/usr/sbin/zing-core-bundler -core core<pid>
For example:
$ /usr/sbin/zing-core-bundler -core core.1234 -getall -hsfile hs_
err_pid1234.log
A compressed and encrypted tar file ending in .tgz.gpg is returned.
In this example, the package contains the core file, the .jar files, and because the -getall
option is specified, it also contains the related shared libraries which were used in the ZVM
instance running the Java application.
l
The -getall option ensures the bundle contains all application related data including
the .jar files.
l
The -hsfile option creates an additional file that provides additional information
useful for support to identify issues.
Notes:
l
Encryption error
If there is a file with the same name as the core bundle, the core bundle will not be
encrypted and the following message is displayed in the core bundling response.
Azul Systems
Confidential and Proprietary
300
Troubleshooting Zing
INFO: Encrypting core bundle libs.1234.tgz
...
gpg: libs.1234.tgz: encryption failed: File exists
ERROR: Encryption failed.
WARNING: Core bundle is not encrypted
INFO: Core bundle at libs.1234.tgz
l
Bundler host error
Typically, you create the bundle on the same system where the core file was created.
If you are not creating the bundle on the originating core file system, and you did not
specify the required option, the following message is displayed in the core bundling
response.
ERROR: The bundler must run on host <hostname>
ERROR: Use the argument '-bundle-on-current-host' to bundle
on this host
To create the bundle on a different system:
1. Copy the core file from the originating core file system (hostA) to hostB.
2. On hostB, include the -bundle-on-current-host option when you run the zingcore-bundler command.
The zing-core-bundler syntax and options are listed below.
zing-core-bundler [-core COREFILE][-getexe] [-getall] [-exepath
executable file path] [-hsfile hs_err_pid<pid>.log file] [-decrypt file]
[-passwordfile password file path] [-bundle-on-current-host
Option
Description
-core
Specify the core file to be bundled.
-bundle-on-cur-
Create bundle on current host. This allows bundling a core file that was gen-
rent-host
erated on another host.
-exepath
Specify the path of the binary that was used to invoke Zing Virtual Machine.
-decrypt
Specify file to decrypt
Include all possible files associated with the crash. This includes shared
-getall
objects, data, and executable files.
Include non-java executable with the bundle. This is bundled if it is available
-getexe
on the host at the time of bundling.
Azul Systems
Confidential and Proprietary
301
Zing Installation and Administration Guide
Option
Description
-hsfile
Explicitly specify the path of the hs_err file.
-passwordfile
Specify decryption password file.
-help
Print options help.
7. Locate the bundled libs.<corepid>.tgz.gpg file.
The libs.<corepid>.tgz.gpg file is created in the current directory.
For example, If you execute the command from /home/test. The bundled
libs.<corepid>.tgz.gpg file is created in /home/test.
Ensure you have write permissions in the executing directory. In this example, /home/test.
8. Send the generated bundle to Azul for failure analysis.
Decrypting Core Files
Core bundles created through zing-core-pattern, whether they are automatically or manually
created and bundled, are encrypted. Files contained in the core bundle are not encrypted individually.
The core bundle filename format is: libs.<corepid>.tgz.gpg, where <corepid> is a unique ID
specific to the process that encountered an error and crashed.
Note:
Core files are not encrypted if zing-core-pattern is disabled.
To decrypt the Zing core bundle:
1. Locate the core bundle file.
2. Run the command:
$ /usr/sbin/zing-core-bundler –decrypt libs.<corepid>.tgz.gpg
For example
$ /usr/sbin/zing-core-bundler -decrypt libs.12830.tgz.gpg
INFO: Decrypting file libs.12830.tgz.gpg
gpg: CAST5 encrypted session key
gpg: encrypted with 1 passphrase
gpg: encrypted with RSA key, ID 2934892D
SUCCESS: Decrypted file libs.12830.tgz
Azul Systems
Confidential and Proprietary
302
Troubleshooting Zing
Zing License Core Files
If your Zing licensing feature fails, the default behavior is to follow the core settings. You have the
option to explicitly specify generating a core file when the Zing license fails.
To automatically enable core dump for zing-licensed process:
1. Run the zing-licensed --enable_core option.
# zing-licensed --enable_core
Enabled core dump for zing-licensed
WARNING: Restart zing-licensed service after enabling core dump
2. Restart zing-licensed service:
#service zing-licensed restart.
Zing licensed generated core files are stored at:
l
For RHEL or SLES, /var/crash/zing-licensed and /var/crash/zing-licensem.
l
For Ubuntu, /var/crash/zing-licensed.
To disable core dump for zing-licensed process:
1. Run the zing-licensed --disable_core option.
# zing-licensed --disable_core
Disabled core dump for zing-licensed
WARNING: Restart zing-licensed service after disabling core dump
2. Restart zing-licensed service:
#service zing-licensed restart.
This reverts zing-licensed core behavior to your system core settings.
To check if core dump is enable or disabled for zing-licensed:
1. Run the zing-licensed --display_core_info option.
# zing-licensed –display_core_info
To locate the Zing licensed core files:
l
For RHEL 6.X and SLES
See /var/crash/zing-licensed or /var/crash/zing-license
l
For Ubuntu
See /var/crash/zing-licensed
Azul Systems
Confidential and Proprietary
303
Zing Installation and Administration Guide
Zing Installation Errors
If you received an error or warning message during installation or configuration, locate the message
below, then complete the steps listed for your operating system.
/user/bin Access
Message:
/usr/bin/ld: Permission denied
Action:
ZST installation requires access to /user/bin/ld. Ensure acceptable permissions are set. For
example:
# chmod 755 /usr/bin/ld
Known Intel chip errata can cause spurious system-wide delays
Description:
Recent Intel chips in combination with some aggressive power-saving driver techniques are known to
cause sporadic system lockups, up to a minute long. This is an issue which can occur with or without
Zing present but can be more noticeably manifest in the high-performance, low-latency applications
commonly deployed in Zing environments.
This issue appears with RedHat Enterprise Linux 6.1 and its integrated Intel Idle Driver. The Intel Idle
Driver aims to improve power efficiency but can lead to system lockups when run on some recent Intel
CPUs (some Nehalems and Westmeres have been reported to have problems). Note that this issue
does not occur on all Nehalem and Westmere processors.
Solution:
To solve the issue, you can simply boot your system with the Intel idle driver disabled. To do so, modify
your kernel boot parameters and add the argument "intel_idle.max_cstate=0" to the boot line. See
“Disabling Intel Idle Driver on Systems Using Power Efficiency Chips,” in Installing and Configuring
Zing System Tools for directions on RHEL, SUSE, and Ubuntu systems.
DKMS Installation Troubleshooting
If you received an error or warning message during installation or configuration, locate the message
below, then complete the steps listed for your operating system.
l
Kernel Mismatch on a DKMS RHEL System
l
Kernel Mismatch on a DKMS SLES System
Azul Systems
Confidential and Proprietary
304
Troubleshooting Zing
l
Kernel Mismatch on a DKMS Ubuntu System
See also the following appendices:
l
Zing Appendix A -- Installation Prerequisite Details
l
Zing Appendix C -- Zing System Tools Installed Files
Kernel Mismatch on a DKMS RHEL System
Message:
Error! Your kernel headers for kernel 2.6.32-71.el6.x86_64 cannot
be found at
/lib/modules/2.6.32-71.el6.x86_64/build
or
/lib/modules/2.6.32-71.el6.x86_64/source
Run the following commands to fix the error:
- yum install kernel-devel-2.6.32-71.el6.x86_64
- dkms build -m zing_mm -v 99.99.99.99-712
- dkms install -m zing_mm -v 99.99.99.99-712
DKMS Error. Resolve the errors listed above and run 'system-configzing-memory'
Action:
Complete the commands listed in the error message.
Kernel Mismatch on a DKMS SLES System
Message:
Error! Your kernel headers for kernel 3.0.101-0.35-default cannot
be found at
/lib/modules/3.0.101-0.35-default/build
or
/lib/modules/3.0.101-0.35-default/source
You attempted to install ZST but the correct kernel headers are not
installed.
Complete the following commands to fix the errors. For example:
# zypper install kernel-devel-3.0.101-0.35-default
# dkms build -m zing_mm -v 5.7.7.0-10
# dkms install -m zing_mm -v 5.7.7.0-10
DKMS Error. Resolve the errors listed above and run 'system-configzing-memory'
Action:
Complete the commands listed in the error message.
Azul Systems
Confidential and Proprietary
305
Zing Installation and Administration Guide
Kernel Mismatch on a DKMS Ubuntu or Debian System
Message:
Error! Your kernel headers for kernel 3.0.101-0.35-default cannot
be found at
/lib/modules/3.0.101-0.35-default/build
or
/lib/modules/3.0.101-0.35-default/source
You attempted to install ZST when DKMS is installed, but the
correct kernel headers are not installed.
Complete the following command to fix the errors.
# apt-get install kernel-devel-$(uname -r)
DKMS Error. Resolve the errors listed above and run 'system-configzing-memory'
Action:
Complete the command listed in the error message.
Native Launch with ZVM
A native launch application is any application that is written in a language other than Java and calls
JNI_CreateJavaVM to create the VM and makes calls to Java code.This is usually written in C/C++
and contains the “main” function to start execution.
Invoking Native Launch with Zing
If Native (C/C++) applications invoke jZVM, consider these issues before you execute your code.
l
Native launch application -- Identify how the native app creates the VM to find possible
collisions with areas used by or allocated by the ZVM.
l
Consider known limitations when running native apps on Zing. Identify the issues by the failure
messages.
l
Invoking the ZVM -- check for differences between a stock build and a Zing build.
l
Native apps should also know how to run Zing specific features such as the Tick Profiler
mechanism and C-Heap Leak detection.
Consult the cases listed below to determine your best course of action.
Invoking the ZVM in Native Launch Apps
There are two primary ways of invoking the ZVM in native apps. Key sections of code are highlighted.
Azul Systems
Confidential and Proprietary
306
Troubleshooting Zing
Case 1: C-main dlopens the libjvm.so and tries to find "JNI_CreateJavaVM” using
dlsym.
This is the most common case of native apps. These applications are pre-built apps. For given JAVA_
HOME, these applications should run.
Sample source:
……
JavaVMInitArgs vm_args;
JavaVMOption options[1];
options.optionString = "-Djava.class.path=./";
vm_args.version = JNI_VERSION_1_6;
vm_args.options = options;
vm_args.nOptions = 1;
/* Create the Java VM */
void* libjvm_handle;
jint (*createVM_handle) (JavaVM **pvm, void **penv, void *args);
libjvm_handle = dlopen("libjvm.so", RTLD_LOCAL | RTLD_LAZY);
if (!libjvm_handle) {
fprintf(stderr, "Can't load libjvm.so with error %s\n",dlerror());
exit(1);
}
createVM_handle = dlsym(libjvm_handle, "JNI_CreateJavaVM");
res = createVM_handle(&jvm, (void**)&env, &vm_args);
if (res < 0) {
fprintf(stderr, "Can't create Java VM\n");
exit(1);
}
……
Sample run:
LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/amd64/server:$LD_LIBRARY_PATH
./hello_world
Case 2: C-main app directly calls JNI_CreateJavaVM by statically linking libjvm.
This is *not* most common case of the native applications. For given JAVA_HOME, these applications
could be built/compiled and run.
Sample source:
……
Azul Systems
Confidential and Proprietary
307
Zing Installation and Administration Guide
JavaVMInitArgs args;
JavaVMOption options;
args.version = JNI_VERSION_1_6;
args.nOptions = 1;
options.optionString = "-Djava.class.path=./";
args.options = &options;
int rv;
rv = JNI_CreateJavaVM(jvm, (void**)&env, &args);
if (rv < 0 || !env)
printf("Unable to Launch JVM %d\n",rv);
else
printf("Launched JVM! \n");
…….
Sample build/compile line:
gcc -fPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux L${JAVA_HOME}/jre/lib/amd64/server –ljvm –o hello_world hello_
world.c
Sample run:
LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/amd64/server:$LD_LIBRARY_PATH
./hello_world
Known Issues Running Native Launch Apps on Zing
Because threads, signals, and memory are managed differently under Zing, users should be aware of
the following issues.
Case 1: Virtual address space collisions when native launch applications allocate
memory where ZVM allocates certain internal structures like the CodeCache and the
OopTable.
l
Failure message: Error: temporary az_mreserve(CodeCache) failed: Bad
address
l
at (0xNNNNNN for 0xNNNNNN bytes)
Failure message: Error: temporary az_mreserve(OopTable) failed: Bad
address
at (0xNNNNNN for 0xNNNNNN bytes)
If the above messages are encountered, native launch applications should try to LD_
PRELOAD libc_hooks2.so or call JNI_CreateJavaVM early on in the main function
before calling routines that may allocate memory.
Azul Systems
Confidential and Proprietary
308
Troubleshooting Zing
Case 2: Virtual address space collisions when native launch applications allocate
memory where libjvm.so needs to be loaded
l
Failure message: fatal: libjvm.so must load under 1Gb.
(JNI_
CreateJavaVM is located at 0xNNNNNNNNN)
If this message is encountered, native launch applications should try and load libjvm.so
early before calling routines that may allocate memory.
Case 3: Virtual address space collisions when native launch applications allocate
memory where ZVM allocates other VM internal data structures
This should usually manifest itself as an az_mreserve or mmap failure in the ZVM.
Case 4: Native launch application uses signal handlers for signals used by the ZVM
Please use libjsig.so to chain user signal handlers correctly behind the ZVM’s signal
handlers.libjsig.so is available under $JAVA_HOME/jre/lib/amd64/server/libjsig.so.
Loading /usr/lib/zing/libc_hooks2.so
Native launch applications will have to link against libc_hooks2.so or LD_PRELOAD libc_
hooks2.so in the following scenariosl
When using -XX:+UseTickProfiler
If profiling threads created in native code is desired, libc_hooks2.so should be loaded.
If libc_hooks2.so is not loaded, the tick profiler will profile threads when those threads
attach themselves to the ZVM through JNI_AttachCurrentThread.
l
When using -XX:+CHeapLeakDetection
The ZVM relies on the libc intercepts in libc_hooks2.so to track memory
allocations.libc_hooks2.so should be loaded in order to use CHeapLeakDetection.
l
When there is a collision in the low 2 GB of virtual address space
Applications can either modify the code to load libjvm.so early or load libc_
hooks2.so, which will reserve upfront the space needed for the VM in the low 2 GB of virtual
address space.
Native launch app colliding with areas used or assumed by the ZVM.
Areas that are used by or assumed to be allocated for a certain purpose by the ZVM should be avoided
by a native launch app. It is possible that such areas have been impacted by a native launch app such
as the case described below where the native launch has allocated a code cache or Oop table.
Azul Systems
Confidential and Proprietary
309
Zing Installation and Administration Guide
Case 1: Native launch app allocates/mmaps specfic areas like CodeCache/OopTable
In this case a message indicates that the temporary az_mreserve failed:
"Error: temporary az_mreserve(CodeCache) failed: Bad
address
at (oxNNNNNN for 0xNNNNNN bytes)"
If this message is encountered, please contact Azul Technical Support for assistance.
Tick Profiler and C-Heap Leak Detection
For a native launch app that needs to get under the tick profiler and leak detection the scanner should
have LD_PRELOAD libc_hooks.so with options set at (-XX:+UseTickProfiler and XX:+CHeapLeakDetection) thru JAVA_TOOL_OPTIONS or JAVA_OPTS.
Threads can come under the tick profiler scanner and allocations can come under the leak detection
scanner only after VM initialization.
Native launch apps can choose to not LD_PRELOAD libc_hooks.so, if you don’t want to get
threads under the tick profiler, but they automatically come under the scanner after they attach to VM.
Zing Errors
This section lists common errors and possible solutions when using Zing to run your Java applications.
When abrtd running zing core_pattern cannot overwrite /proc/sys/kernel/core_pattern
Description:
When abrtd running zing core_pattern cannot overwrite /proc/sys/kernel/core_pattern.
Solution:
1. Scan the file, core_pattern, for any reference piped ( | ) core_pattern. For example:
$ more /proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp /var/spool/abrt %s %c %p %u %g %t %h %e
636f726500
2. If a piped ( | ) core_pattern is found:
a. Stop the process included in core_pattern. For example:
$ service abrtd stop
For RHEL 6.3:
# service abrt-ccpp stop
Azul Systems
Confidential and Proprietary
310
Troubleshooting Zing
b. Clear or change core-pattern to not include any piped (|) core pattern.
$ echo core > /proc/sys/kernel/core_pattern
c. Restart zing-core-pattern.
$ /etc/init.d/zing-core-pattern start
d. Ensure the piped ( | ) core-pattern process is not restarted on boot.
$ chkconfig abrdt off
For RHEL 6.3:
$ chkconfig abrt-ccpp off
ZVM WARNING: The Event Tick Buffer Profiling system status is:
"Shutdown."
Reason:
Max Buffer Exceeded.
Description:
The tick profiler shutdowns automatically when an attempt is made to allocate more than the configured
maximum number of tick profiling buffers. The reason is printed.
Background:
When using tick profiling, each thread in the process uses a buffer to store the events that contain the
tick profiling data. A pool of these tick profiling buffers is allocated when the ZVM starts. The number of
buffers in the pool is increased if the ZVM’s tick profiling system determines that more buffers are
required. The pool expansion occurs, by default, in “chunks” of 2048 tick profiling buffers. The
expansion usually occurs when more threads are created in the application than the number of tick
profiling buffers available. To limit the overhead of tick profiling on application performance, a default
upper bound on the number of tick profiling buffers is enforced. This is currently set to a maximum of
4096 tick profiling buffers.
Two ZVM command line arguments control override the default sizes and their associated behaviors:
l
EventTickBuffersMaxAllocatedBeforeShutoff
This sets the number of tick profiling buffers initially allocated and the chunk size used for expansion
when the pool is resized. The default value is 2048 and the maximum value is 65536.
l
EventTickBuffersAllocated
This sets the maximum number of tick profiling buffers that can be allocated before tick profiling
shuts down completely. The default value for this upper bound on the number of tick profiling buffers
is 4096 and the maximum value is 4294967295. If, using the default value of 4096, the ZVM process
tries to create a new thread that requires a tick profiling buffer and 4096 tick profiling buffers are
already in use, then the tick profiler is turned off.
Azul Systems
Confidential and Proprietary
311
Zing Installation and Administration Guide
Solution:
Increase the maximum number of permissible tick profiling buffers by increasing the value of
EventTickBuffersMaxAllocatedBeforeShutoff in the command line arguments. To avoid data structure
resizes, use EventTickBuffersAllocated to simultaneously increase the chunk size used at initialization
and for expansion. For example:
# java -XX:ARTAPort=9990 –XX:+UseTickProfiling XX:EventTickBuffersAllocated=4096 XX:EventTickBuffersMaxAllocatedBeforeShutoff=12288 <java-class>
For best performance, keep the number of threads in the application to a reasonable number based on
the CPU resources available.
Crash When Using Tight Polling Loops
Description:
Application hangs, and eventually crashes with a checkpoint timeout, when real time threads run tight
loops.
Background:
In these conditions, lower priority threads are not getting sufficient CPU time to reach checkpoint.
Solution:
When the parameter CheckpointBoostPriority is configured, Zing temporarily boosts the priority
of real time threads to the configured value.
For example, one way to use this safely includes:
1. Configure -XX:CheckpointBoostPriority=<Y>
2. Start the ZVM on node 0 with SCJED_RR and a priority, <X>, ensuring that the value for <X> is
greater than <Y>.
3. Using JNI, move the threads with relative real time priority requirements to node 1.
4. Using JNI, assign relative priorities to the threads you moved to node 1, so that the highest among
them is <Y>.
Out of Space for OOP (Ordinary Object Pointer) Table - KlassTable
Description:
The KlassTable contains a unique ID for each loaded class. Each entry is 8 bytes long. The entries will
be freed when the corresponding classes are unloaded.
Azul Systems
Confidential and Proprietary
312
Troubleshooting Zing
Solution:
The KlassTableSize option needs to be set appropriately for the number of live classes in the
application, which can be monitored using PrintGCDetails.
The default value of KlassTableSize is based on the Java heap size, For example:
l
Java heaps less than 2 GB - default 2 MB
l
Java heaps 2 GB or greater - default 8 MB
pthread_exit called without calling JNI_DetachCurrentThread first
Description:
The flag, -XX:+JNIDetachThreadsIfNotDetached, is needed by any application that attaches a
JNI thread to the VM but does not detach the thread before calling pthread_exit. For example with IBM
WebSphere MQ Low Latency Messaging (LLM) applications.
If this error occurs, an error report file with more information is saved in, for example,
/home/<user>/tmp5/hs_err_pid16620.log.
Solution:
If you receive this error, include the following flag in your ZVM command:
-XX:+JNIDetachThreadsIfNotDetached
%preun(zing-zst-<version>) scriptlet failed, exit status1
Description:
You must stop all Zing Java processes before uninstalling or upgrading.
Solution:
Run the zing-ps tool to list any running Zing processes. Stop the processes. Re-run zing-ps to
verify all Zing processes are stopped. Reissue the uninstallation or upgrade commands.
The Zing System Tools is Not Loaded Properly
Description:
Could not create the Java virtual machine.
Azul Systems
Confidential and Proprietary
313
Zing Installation and Administration Guide
Solution:
Please confirm the zing-zst package is properly installed and configured.
The Zing System Tools Has Not Been Configured Yet
Description:
Could not create the Java virtual machine.
Solution:
Please run system-config-zing-memory as root. See man zing-installation for more
information.
Not Enough Free Memory During Zing Memory Configuration
Description 1:
Running Linux processes are taking up a large amount of memory while attempting to configure Zing
memory.
Solution 1:
Stop any processes that use significant resources while configuring Zing. You need to reevaluate your
resource budget if you plan to run these concurrently with Zing.
Description 2:
You have selected values that are too aggressive using the wizard or directly in the pmem.conf
configuration file.
Solution 2:
Try again with less aggressive memory settings.
Error example:
[root@localhost ~]# system-config-zing-memory
Welcome to the Zing memory configuration wizard by Azul Systems.
This wizard sets up the memory driver configuration file
/etc/zing/pmem.conf and initializes the memory driver. (Read the
Azul Systems
Confidential and Proprietary
314
Troubleshooting Zing
man pages for zing, zing-zst, and zing-pmem-conf for more
information about this configuration file.)
By default, Azul recommends setting up your system with 25% Linux
memory and 75% Zing memory. Choose yes to accept this default, or
no to enter the wizard expert flow.
** accept default configuration
** (y)es or (n)o [default y]:
zing-memory: INFO: Restarting...
zing-memory: INFO: Stopping...
zing-memory: INFO: stop successful
zing-memory: INFO: Starting...
Fatal error: Not enough free memory (memoryForAzulBytes
(12545163264) > MemFree (3725369344)).
zing-memory: ERROR: Configure pmem failed
Fatal error: os::safeSystem: command /sbin/service zing-memory
restart failed.
ZST Fails to Allocate Requested Memory
Description:
Long after system startup (and after much memory has been consumed back and forth), ZST might fail
to allocate the requested amount of memory, as it might (a) already be occupied or (b) exist in
fragmented state that cannot be defragmented into 2MB pages. Transparent huge pages on RHEL 6.x
can help recover 2MB pages, but might not be absolutely reliable, and on other systems (RHEL 5.x,
SuSE 11, and other non-RHEL-6 kernel prior to 2.6.38) it is unlikely that you can find 75% of system
memory in 2MB page form after the system has run loads for a while and cached files.
Solution:
Start ZST immediately after a fresh system reboot.
Cannot find kernel config /boot/config-<kernel version>
Description:
The kernel you are running has no associated configuration file in the system /boot directory. A normal
kernel installation and build will always include such a file. This is a serious error indicating that you are
running a kernel in a non-standard way.
Solution:
You are likely using a non-supported system configuration. The solution is to use a standard
configuration.
Azul Systems
Confidential and Proprietary
315
Zing Installation and Administration Guide
Qualification Failed Errors
The Zing configuration process checks the system for known issues that could prevent Zing from
running. When such issues are detected you might see the message Qualification Failed along
with descriptive text about the specific issue. You generally see this message on your screen but if the
error is detected at boot time it is logged by the kernel, usually in /var/log/messages. The following
sections provide information for handling some qualification issues.
Processor support insufficient for Zing (constant_tsc support
required)
Description:
Zing requires a specific feature of modern X86 chips in order to function properly. This feature,
constant_tsc, provides a reliable, fast time-source even in the presence of power-saving operations
performed by modern processors. This reliable time source is required by ZVM.
Solution:
Run Zing on a processor supporting the constant_tsc feature. Nearly all server-class X86
processors made in the last five years have this feature. See the Zing System Requirements for a list
of supported processors.
UseLargePages Not Supported with Zing System Tools
If you are running non-Zing Java and using XX:+UseLargePages, you must choose one of the
following options to run Zing:
l
Disable the hugepages facility on your Linux system when you are running Zing.
l
Ensure there is sufficient memory allocated to each: Zing, hugepages, and Linux memory.
In Linux 2.6 kernel large page support was added. In Java, large memory pages are enabled on Linux
platforms by using these option flags:
l
HotSpot: -XX:+UseLargePages
l
Jrockit: -XXlargePages
l
IBM: -Xlp
l
Zing: Zing pages are always large pages. They come from the ZST.
Zing does not support the -XX:+UseLargePages option. Zing pages are always large pages and they come from the ZST.
ZST and the HugePages pool conflict, as they both reserve memory for themselves. The ZST memory
service reserves and manages its own memory space, so Large Memory Pages configured by the
operating system make it difficult or impossible for the ZST memory service to reserve enough pages
for Zing. Therefore set the output from the three Huge variables to zero.
Azul Systems
Confidential and Proprietary
316
Troubleshooting Zing
To set the huge variables to zero:
1. Check if your system can support large page memory:
# cat /proc/meminfo | grep Huge
l
If Large Pages are available but not configured or reserved, the response is similar to:
# cat /proc/meminfo | grep Huge
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB
l
If Large Pages are available, configured, and reserved, the response is similar to the following.
# cat /proc/meminfo | grep Huge
HugePages_Total: 30000
HugePages_Free: 264
HugePages_Rsvd: 88
Hugepagesize: 2048 kB
2. Set the operating system hugepages memory settings to zero.
a. Log in as root.
b. Reset the hugepages value, type:
# echo 0 > /proc/sys/vm/nr_hugepages
c. Optionally, because the /proc values resets after reboot, set the value in an init script,
such as rc.local or sysctl.conf.
Azul Systems
Confidential and Proprietary
317
Zing Installation and Administration Guide
Appendix A – Zing Installation Prerequisites
Details
While Zing runs fine with certain default system settings, there are default OS settings that can cause
response time sensitive applications to experience multi-hundred-of-millisecond stalls regardless of the
JVM. Since Zing tends to eliminate or dramatically reduce JVM-related stalls, these remaining OS
related stalls will tend to dominate the worst-case latency behavior of applications. It is therefore highly
recommended that the following settings be applied.
To ensure that OS settings are appropriate for performance sensitive applications, apply the following
settings.
l
SWAP – Turn this off, either by removing swap or by setting swappiness to 0. Best practice
removes swap.
l
vm.min_free_kbytes – Set this to 1 GB or more. Best practice assigns more than 1 GB.
l
Transparent Huge Pages (THP) – Turn this off.
If you are using a Nehalem power efficiency chip set, disable the Intel idle driver. If you do not do this,
then the ZST installation aborts.
SWAP Settings
Ensure your SWAP is either turned off or set to 0. Add the required parameter to the sysctl.conf file.
A common method used to change the parameter value is to edit /etc/sysctl.conf then use the sysctl
command to write the changes into the kernel. This ensures the swap setting is persistent across
reboots.
The following steps apply to RHEL, SUSE, and Ubuntu systems.
Persistent change:
This is the recommended method for changing your SWAP settings. It takes effect immediately and is
persistent across reboots.
1. Verify the limit of the swappiness parameter and the effects of changing it on your system.
2. Edit the /etc/sysctl.conf file. Add the following entry:
vm.swappiness=0
Ensure that you do not have duplicate entries for vm.swappiness in the file.
3. Load the sysctl setting from the default file /etc/sysctl.conf. Run sysctl as follows:
# sysctl -p
Azul Systems
Confidential and Proprietary
318
Appendix A – Zing Installation Prerequisites Details
Non-persistent change:
This method changes your SWAP settings temporarily. It is not persistent across reboots.
1. Verify the limit of the swappiness parameter and the effects of changing it on your system.
2. Run the sysctl command with the -w option from the command line:
# sysctl -w vm.swappiness=0
vm.min_free Settings
Set your vm.min_free_kbytes memory value to 1 GB or more. Best practice sets this value greater
than 1 GB.
A common method used to change the parameter value is to edit /etc/sysctl.conf then use the
sysctl command to write the changes into the kernel. This ensures the swap setting is persistent
across reboots.
The following steps apply to RHEL, SUSE, and Ubuntu systems.
Persistent change:
This is the recommended method for changing your vm.min_free_kbytes settings. It takes effect
immediately and is persistent across reboots.
1. Verify the limit of the vm.min_free_kbytes parameter and the effects of changing it on your
system.
2. Edit the /etc/sysctl.conf file. Add the following entry:
vm.min_free_kbytes=1048576
Ensure that you do not have duplicate entries for vm.min_free_kbytes in the file.
3. Load the sysctl setting from the default file /etc/sysctl.conf. Run sysctl as follows:
# sysctl -p
Non-persistent change:
This method changes your vm.min_free_kbytes settings temporarily. It is not persistent across
reboots.
1. Verify the limit of the vm.min_free_kbytes parameter and the effects of changing it on your
system.
2. Run the sysctl command with the -w option from the command line:
# sysctl -w vm.min_free_kbytes=1048576
Transparent HugePages Settings
If your operating system supports Transparent HugePages (THP), the THP feature must be turned off.
For RHEL systems, see https://access.redhat.com/site/solutions/422283.
Azul Systems
Confidential and Proprietary
319
Zing Installation and Administration Guide
To disable Transparent HugePages on RHEL, SUSE, and Ubuntu systems:
1. Check the current HugePage setting.
# cat /sys/kernel/mm/transparent_hugepage/enabled
Sample response.
[always] madvise never
2. Open the grub configuration file for editing.
l
For RHEL: /boot/grub/grub.conf
l
For SLES: /boot/grub/menu.1st
l
For Ubuntu: /etc/default/grub
3. Add transparent_hugepage=never to the kernel boot line, for example:
title Red Hat Enterprise Linux Server (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_
qaesp3-lv_root rd_LVM_LV=vg_qaesp3
/lv_root rd_LVM_LV=vg_qaesp3/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM
LANG=en_US.UTF-8 SYSFONT=latarcyrhebsun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
intel_idle.max_cstate=0 transparent_hugepage=never
initrd /initramfs-2.6.32-431.el6.x86_64.img
Note
This example includes the line for disabling the Intel idle driver. See Intel Idle Driver.
4. Reboot the server. This is required to have the change take effect.
5. Check the change is applied after reboot.
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
Disabling the Intel Idle Driver
Message:
zing-system: ERROR: Qualification Failed. Known Intel chip errata
can cause spurious system-wide delays; to correct, see Zing
documentation (man zing-installation).
Background:
Intel Nehalem chips can be subject to sporadic pauses in certain circumstances unrelated to Zing.
The issue seems to be an erratum in Nehalem and some Westmere chips related to aggressive powersaving optimizations introduced in these chips. The issue is that your system might be seen to freeze
for periods as small at 1/10 of a second and as much as 30 seconds. This pause is provoked by the use
of a new driver which Intel introduced and which is enabled by default in Red Hat Enterprise Linux 6.1.
Azul Systems
Confidential and Proprietary
320
Appendix A – Zing Installation Prerequisites Details
It is not clear which Nehalem/Westmere chips are subject to this issue. Therefore, in this release of
Zing, we check for the presence of the driver that provokes the chip failure, and abort Zing initialization
if the driver is enabled. When the issue is fixed by Intel and/or Red Hat, we will remove this check.
Reference:
l
Red Hat bug related to Nehalem and Westmere, see https://bugzilla.redhat.com/show_
bug.cgi?id=710265
l
Citrix discussion of the issue, including pointers to Intel chip errata documentation, see
http://support.citrix.com/article/CTX127395
l
Dell discussion, see http://en.community.dell.com/dell-blogs/enterprise/b/tech-
center/archive/2011/07/15/low-latency-and-c-states-in-linux.aspx
zing-memory: ERROR: Bailing due to previous errors (error 1)
Action:
If you are using a Nehalem power efficiency chip set, disable the Intel idle driver. If you do not do this,
then the ZST installation aborts.
To disable the Intel Idle Driver, boot your system with the additional kernel flag, intel_idle.max_
cstate=0.
l
Notes:
l
Disabling the Intel Idle driver, in many cases, resolves the issue of unexpected
pauses. In some cases you might also need to disable C-State power saving
transitions in the BIOS of your machine. Instructions for disabling C-States vary
for each BIOS vendor.
In some situations, the kernel checks the max_cstate and if it finds max_
cstate=0, it sets it to max_cstate=1. To prevent this check of the max_
cstate setting:
In /etc/zing/directory, create a file, disable_cstate_check.
To automatically disable the Intel Idle Driver:
On RHEL/CentOS 7.x systems:
1. Edit /etc/default/grub to add the argument, intel_idle.max_cstate=0, to GRUB_
CMD_LINE_LINUX.
For example: If your /etc/default/grub file contains the following:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
Azul Systems
Confidential and Proprietary
321
Zing Installation and Administration Guide
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_qaesp3/root rd.lvm.lv=rhel_
qaesp3/swap crashkernel=auto vconsole.font=latarcyrheb-sun16
vconsole.keymap=us rhgb quiet "
GRUB_DISABLE_RECOVERY="true"
Append: intel_idle.max_cstate=0 The resulting line should look like this:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_qaesp3/root rd.lvm.lv=rhel_
qaesp3/swap crashkernel=auto vconsole.font=latarcyrheb-sun16
vconsole.keymap=us rhgb quiet intel_idle.max_cstate=0"
GRUB_DISABLE_RECOVERY="true"
2. Update the grub entries, run the command.
$ sudo grub2-mkconfig --output=/boot/grub2/grub.cfg
3. Reboot the system.
4. Verify that your running kernel has the Intel Idle driver disabled.
View /proc/cmdline and search for the string intel_idle.max_cstate=0. If the
string is present then the currently-running kernel has the Intel Idle driver disabled.
On RHEL/CentOS 5.x or 6.x systems:
1. Edit /boot/grub/grub.conf to add the argument, intel_idle.max_cstate=0, to the
kernel line for the kernel you are booting.
For example: If your /boot/grub/grub.conf file contains the following:
kernel /vmlinuz-2.6.32-122.el6.x86_64 ro \
root=/dev/mapper/vg_bogrhel61-lv_root rd_LVM_LV=vg_bogrhel61/lv_root
\
rd_LVM_LV=vg_bogrhel61/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM \
LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc
KEYTABLE=us \
crashkernel=auto rhgb quiet
Append: intel_idle.max_cstate=0. The resulting line should look like this:
kernel /vmlinuz-2.6.32-122.el6.x86_64 ro \
root=/dev/mapper/vg_bogrhel61-lv_root rd_LVM_LV=vg_bogrhel61/lv_root
\
rd_LVM_LV=vg_bogrhel61/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM \
LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc
KEYTABLE=us \
crashkernel=auto rhgb quiet intel_idle.max_cstate=0
Azul Systems
Confidential and Proprietary
322
Appendix A – Zing Installation Prerequisites Details
2. Reboot the system.
3. Verify that your running kernel has the Intel Idle driver disabled.
View /proc/cmdline and search for the string intel_idle.max_cstate=0. If the string is
present then the currently-running kernel has the Intel Idle driver disabled.
On Ubuntu systems:
1. Edit /etc/default/grub to add the argument, intel_idle.max_cstate=0, to GRUB_
CMDLINE_LINUX.
For example: If your /etc/default/grub file contains the following:
GRUB_CMDLINE_LINUX=" "
Append: intel_idle.max_cstate=0. The resulting line should look like this:
GRUB_CMDLINE_LINUX="intel_idle.max_cstate=0"
2. Update the grub entries, run the command.
$ sudo update-grub
3. Reboot the system.
4. Verify that your running kernel has the Intel Idle driver disabled.
View /proc/cmdline and search for the string intel_idle.max_cstate=0. If the string
is present then the currently-running kernel has the Intel Idle driver disabled.
On SUSE systems:
1. Edit /boot/grub/menu.lst to add the argument, intel_idle.max_cstate=0, to the
kernel line for the kernel you are booting.
For example: If your /boot/grub/menu.lst file contains the following:
title SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27
root (hd0,1)
kernel /boot/vmlinuz-3.0.13-0.27-default root=/dev/sda2
resume=/dev/sda1 splash=silent crashkernel=128M-:64M showopts
vga=0x314
initrd /boot/initrd-3.0.13-0.27-default
Append: intel_idle.max_cstate=0. The resulting line should look like this:
title SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27
root (hd0,1)
kernel /boot/vmlinuz-3.0.13-0.27-default root=/dev/sda2
resume=/dev/sda1 splash=silent crashkernel=128M-:64M showopts
vga=0x314 \
intel_idle.max_cstate=0
initrd /boot/initrd-3.0.13-0.27-default
Azul Systems
Confidential and Proprietary
323
Zing Installation and Administration Guide
2. Reboot the system.
3. Verify that your running kernel has the Intel Idle driver disabled.
View /proc/cmdline and search for the string intel_idle.max_cstate=0. If the string
is present then the currently-running kernel has the Intel Idle driver disabled.
Azul Systems
Confidential and Proprietary
324
Appendix C – Zing System Tools Installed Files
Appendix C – Zing System Tools Installed
Files
ZST software consists of a kernel loadable module, and licensing daemon. and supporting scripts and
tools. This section contains a list of all the files included with the driver software installation.
The following files are installed as part of the ZST software package.
User Tools
/usr/bin/zing-ps
List Zing system and process memory usage.
Administrator Tools
/usr/sbin/zing-llpmem
Low-level Zing memory and account manipulation. Not meant to be invoked directly by the user.
/usr/sbin/zing-configure-pmem
High-level Zing memory manipulation. Only expert users should consider running this directly.
Normally, this tool is called automatically by higher-level tools. Reads pmem.conf configuration file.
Invokes zing-llpmem to do low-level work. Called by zing-memory init script.
/usr/sbin/system-config-zing-memory
Zing memory configuration wizard. Users who want to quickly get started with Zing should run this tool.
Creates pmem.conf file. See Configure Zing Memory
/usr/sbin/system-config-zing-core-pattern
Zing core bundling configuration wizard. For automatically generating Zing core bundles. See
Troubleshooting Zing.
Azul Systems
Confidential and Proprietary
325
Zing Installation and Administration Guide
Configuration Files
/etc/zing/pmem.conf.default
Default Zing physical memory configuration file. Software relies on this file to be in a pristine state. Do
not modify this file.
/etc/zing/pmem.conf
Active Zing physical memory configuration file. Created by system-config-zing-memory, or
manually by the user. See the zing-pmem-conf man page for more information about this file.
/etc/zing/pmem.conf.*example*
Various example configuration files.
Man Pages
/usr/share/man/man7/zing-*.7.gz
/usr/share/man/man1/zing-*.1.gz
/usr/share/man/man5/zing-*.5.gz
Title
Content
zing (7)
Top-level description of Zing components and high level
installation instructions.
zing-installation
(7)
Basic description of how to install Zing components including
ZST and ZVM.
zing-zst (7)
Description of ZST components.
zing-pmem-conf (5)
Describes how to configure, replace, and load Zing physical
memory configuration file.
zing-ps (1)
Report a snapshot of current Zing usage.
ZST Configuration File Relationships
The following flow diagram shows how the configuration files and tools relate to one another:
Azul Systems
Confidential and Proprietary
326
Appendix C – Zing System Tools Installed Files
/usr/sbin/system-config-zing-memory
--> /etc/init.d/zing-memory start
--> /sbin/insmod .../mri_mm.ko
--> /usr/sbin/zing-configure-pmem
--> /usr/sbin/zing-llpmem
ZST Boot Sequence File Relationships
After installation and configuration, on bootup, the zing-memory init script loads the kernel module and
partition memory.
The following flow diagram shows how the boot sequence files and tools relate to one another:
/etc/init.d/zing-memory start
--> /sbin/insmod .../mri_mm.ko
--> /usr/sbin/zing-configure-pmem
--> /usr/sbin/zing-llpmem
ZST Update Software File Relationships
The following flow diagram shows how the update files and tools relate to one another:
/usr/sbin/system-config-zing-memory
--> /etc/init.d/zing-memory start
--> /sbin/insmod .../mri_mm.ko
--> /usr/sbin/zing-configure-pmem
--> /usr/sbin/zing-llpmem
.
Azul Systems
Confidential and Proprietary
327
Zing Installation and Administration Guide
Legal Notice
Published, May 15, 2015.
© 2005–2015, Azul Systems, Incorporated 1173 Borregas Avenue, Sunnyvale, CA 94089-1306. All
rights reserved.
Products and specifications discussed in this document may reflect future versions and are subject to
change without notice. Azul Systems assumes no responsibility or liability for any errors or
inaccuracies that may appear in the informational content contained in this guide.
No part of this document may be reproduced, stored in a retrieval system, or transmitted, in any form or
by any means, electronic, mechanical, recording, or otherwise, without the prior written permission of
Azul Systems. Please note that the content in this document is protected under copyright law even if it
is not distributed with software that includes an end user license agreement.
Azul Systems, Azul Zing, Zing, and the Azul logo are trademarks or registered trademarks of Azul
Systems, Inc. Linux is a registered trademark of Linus Torvalds. Red Hat is the property of Red Hat,
Inc. Java is a registered trademark of Oracle Corporation. Microsoft and Windows are registered
trademarks of Microsoft Corporation. Other marks are the property of their respective owners and are
used here only for identification purposes.
Azul Systems
Confidential and Proprietary
328