Introduction to the IBM Java Tools

1,823 views
1,662 views

Published on

IBM provides a number of free tools to assist in monitoring and diagnosing issues when running any Java application: from Hello World to IBM or third party middleware based applications. This session will introduce you to those tools, highlight how they have been extended with IBM middleware product knowledge, how they have been integrated into IBMs development tools, and show you how to use them to investigate and resolve real world problem scenarios.

Presented at IBM Impact 2013

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,823
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
63
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Introduction to the IBM Java Tools

  1. 1. © 2013 IBM Corporation© 2013 IBM CorporationIntroduction to the IBM Monitoringand Diagnostic Tools for JavaChris Bailey, Peter Whitehead, and Guests!IBMTAW-1560
  2. 2. © 2013 IBM CorporationPlease NoteIBM’s statements regarding its plans, directions, and intent are subject to changeor withdrawal without notice at IBM’s sole discretion.Information regarding potential future products is intended to outline our generalproduct direction and it should not be relied on in making a purchasing decision.The information mentioned regarding potential future products is not acommitment, promise, or legal obligation to deliver any material, code orfunctionality. Information about potential future products may not be incorporatedinto any contract. The development, release, and timing of any future features orfunctionality described for our products remains at our sole discretion.Performance is based on measurements and projections using standard IBMbenchmarks in a controlled environment. The actual throughput or performancethat any user will experience will vary depending upon many factors, includingconsiderations such as the amount of multiprogramming in the user’s job stream,the I/O configuration, the storage configuration, and the workload processed.Therefore, no assurance can be given that an individual user will achieve resultssimilar to those stated here.
  3. 3. © 2013 IBM CorporationIntroduction to the SpeakersChris BaileyJava Serviceability and Cloud Integration Architect• 13 years experience developing and deploying Java SDKs• Recent work focus:‒ Java integration into the cloud‒ Java monitoring, diagnostics and troubleshooting‒ Requirements gathering‒ Highly resilient and scalable deployments• Contact Details:‒ baileyc@uk.ibm.com‒ http://www.linkedin.com/in/chrisbaileyibm‒ http://www.slideshare.net/cnbailey/
  4. 4. © 2013 IBM CorporationIntroduction to the SpeakersPeter WhiteheadProgram Manager, Java Technology Center and ASPN Development• 23 years experience developing storage subsystems, programmanagement and deploying IBMs Java SDKs• Recent work focus:‒ Improving Critical Patch Update concurrency‒ Delivery of Java runtimes for IBM platforms and products‒ Creation of serviceability tooling suite for IBM Java runtimes‒ Delivery of distributed cloud operating environment for mobile networks• Contact Details:‒ peter_whitehead@uk.ibm.com
  5. 5. © 2013 IBM CorporationIntroduction to the SpeakersPlus Guests!• Dan Julin: STSM, AIM Serviceability, eSupport and Tools• Jason Edmeades: Messaging Service Architect• Andrew Smithson: CICS Transaction Gateway Technical Lead• Chuck Bridgham: Software Architect: Rational Analysis, Design andConstruction
  6. 6. © 2013 IBM CorporationGoals of the talk• Introduce the IBM tools for monitoring, debugging and diagnosing problems inthe deployment life cycle• Understand the major problems scenarios, and how to select the best tools todiagnose the problem• Learn how to extend the tools with knowledge of your application or to buildcustom tools• See how IBM is building on top of the Java tools platform
  7. 7. © 2013 IBM CorporationAgenda• Tools for Java‒ Introduction to the IBM Monitoring and Diagnostic Tools for Java• Extending the Tools‒ Overview of the APIs and Use Cases• IBM Extensions for the Java Tools‒ IBM Extensions for Memory Analyzer (IEMA)‒ Rational Application Developer v9.0
  8. 8. © 2013 IBM CorporationTools for Java
  9. 9. © 2013 IBM CorporationIBM Monitoring and Diagnostic Tools for Java• A free suite of tools for understanding different aspects of Javaapplications− Garbage Collection and Memory Visualizer (GCMV)− Health Center− Memory Analyzer (and IBM Extensions for Memory Analyzer)− Interactive Diagnostic Data Explorer (IDDE)• Provide visualisation, analysis and recommendations• Fully supported• Available in the IBM Support Assistant− Provides the “toolbox” in which analysis tools reside− Assist with opening PMRs and working with IBM Support− Search feature to query IBM and non-IBM knowledge banks
  10. 10. © 2013 IBM CorporationGarbage Collection and Memory Visualizer (GCMV)• Tool to analyze Java and “Native” Heap memory− Using verbose GC logs and OS level process memory logs• Graphs to show garbage collection and Java heap statistics over time• Not only for memory errors, very good for performance tuning• Recommendations use heuristics to guide you towards issues that maybe limiting performance
  11. 11. © 2013 IBM CorporationGCMV Highlights• Graphical Display of Data− Allows graphing of all availabledata: pause times, heap size etc− Allows zoom, cropping andchange of axes value and units− Allows comparison of multiplefiles• Analysis and Recommendations− Provides tuningrecommendations based on dataand flags errors.− Analysis can be limited usingcropping.− Values and units used in analysiscan be changed by changingaxes values and units
  12. 12. © 2013 IBM CorporationHeath Center• Live monitoring tool with very low overhead• Pre-installed in JDK and WebSphere Application Server− Enable at startup: -Xhealthcenter− Enable at runtime:java -jar healthcenter.jar ID=<pid>• Understand how your application is behaving− Monitor Class loading, File I/O, Environment settings, GarbageCollection, Method Profiling, Locking, Native memory use• Diagnose potential problems, with recommendations• Works at the JVM level – no domain-specific (e.g. J2EE) information• Suitable for all Java applications
  13. 13. © 2013 IBM CorporationHealth Center HighlightsEnvironment reporting• Detects invalid Java options• Detects options which may hurt performance orserviceability• Useful for remote diagnosis of configuration-related problemsClass loading visualization• Shows all loaded classes• Shows load time• Identifies shared classesFile I/O• Monitor application file open/close events asthey occur• Lists currently open files
  14. 14. © 2013 IBM CorporationHealth Center HighlightsGarbage Collection visualization• Visualizes heap usage and gc pause times overtime• Identifies memory leaks• Suggests command-line and tuning parameters• Same recommendation logic as GCMVNative Memory• Detect native memory leaks in application• Determine if external forces are using morememory• Memory counters showing which parts of theJVM are using the most native memoryThreads view• List of current threads and states• Number of threads over time• See contended monitors
  15. 15. © 2013 IBM CorporationHealth Center HighlightsMethod Profiling• Always-on profiling shows application activity• Identifies the hottest methods in an application• Full call stacks to identify where methods arebeing called from and what methods they call• No byte code instrumentation, no recompilingJava Lock Profiling• Always-on lock monitoring• Quickly allows the usage of all locks to beprofiled• Helps to identify points of contention in theapplication that are preventing scalingLive control of application• Trigger dumps• Enable verbosegc collection
  16. 16. © 2013 IBM CorporationMemory Analyzer• Tool for analyzing heap dumps and identifying memory leaks from JVMs• Works with IBM system dumps, heapdumps and Sun HPROF binarydumps• Provides memory leak detection and footprint analysis− Objects by Class, Dominator Tree Analysis, Path to GC Roots,Dominator Tree by Class Loader• Shows areas of memory wastage− Collections, duplicate strings, substring/char arrays, constant valueprimitives• Displays Stack trace with object references• Provides SQL like object query language (OQL)• Provides extension points to write analysis plugins
  17. 17. © 2013 IBM CorporationMemory Analyzer HighlightsOverview:• Overview of the dump including Java heap sizeand total number of objects.• Provides links to continued analysisPath to GC Roots:• Provides the reference chain that prevents anobject being garbage collected.Dominator Tree grouped by Class Loader:• Lists the biggest objects using a “keep alivetree”. Grouping by Class• Loader limits the analysis to a single applicationin a JEE environment
  18. 18. © 2013 IBM CorporationInteractive Diagnostic Data Explorer• Provides a visual representation of your set of dump files• An investigation log editor in which you run commands. This editorprovides the following features:− Command assistance− Auto-completion of text− The ability to save commands and output, which you can thensend to other people− Highlighted text and flagging of issues− The ability to add your own comments• An outline view to help you navigate the commands and output in the logeditor• The ability to create your own commands, as plug-ins, and import plug-ins created by others
  19. 19. © 2013 IBM CorporationIDDE Highlights• Interactive Editor:− Command assistance− Auto-completion of text− Ability to add your own comments• Multiple format support:− All operating system− Multiple file formats− Multiple address spaces on z/OS• Multiple plug-in support:− DTFJ− Dump Analyzer− Extensions for Memory Analyzer
  20. 20. © 2013 IBM CorporationProblem Scenarios and ToolsGCMV Health Center Memory Analyzer IDDEPerformance  GarbageCollectionperformanceonly MethodProfiling Lock Analysis GarbageCollection Garbageanalysis CollectionefficiencyMemory  GarbageCollectionmemorymonitoring Native(process)memorymonitoring GarbageCollectionmemorymonitoring Native(process)memorymonitoring Large objectallocations Java heapmemoryanalysisRuntime  Processsettings Class Loading Threadexecutionanalysis Applicationstate reports Threadexecutionanalysis Applicationstate reports
  21. 21. © 2013 IBM CorporationExtending the Tools
  22. 22. © 2013 IBM CorporationExtending the Tools• Each of the tools has extensions and/or integrations points• Memory Analyzer and IDDE can be easily extended• Health Center data can be integrated into other tools
  23. 23. © 2013 IBM CorporationExtending Health Center• Health Center provides an API to access the data and recommendationsshown in the Health Center Client• Allows custom tools to receive, analyze and interpret the data• Health Center is a monitoring platform
  24. 24. © 2013 IBM CorporationExtending Health Centerimport org.eclipse.equinox.app.IApplication;import org.eclipse.equinox.app.IApplicationContext;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.MessageBox;import org.eclipse.swt.widgets.Shell;import com.ibm.java.diagnostics.healthcenter.api.ConnectionProperties;import com.ibm.java.diagnostics.healthcenter.api.HealthCenter;import com.ibm.java.diagnostics.healthcenter.api.factory.HealthCenterFactory;import com.ibm.java.diagnostics.healthcenter.api.threads.ThreadsData;/*** This class controls all aspects of the applications execution*/public class Application implements IApplication {HealthCenter hcMon;public Object start(IApplicationContext context) throws Exception {ConnectionProperties hcConn = new ConnectionProperties();hcMon = HealthCenterFactory.connect(hcConn, true);try {System.out.println("hcMonWaiting for 10 seconds to allow initial data to be parsedfrom the connection");Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}checkForDeadlock();return IApplication.EXIT_OK;}Setup connection propertiesCreate a Health Centerconnection
  25. 25. © 2013 IBM CorporationExtending Health Centerpublic void checkForDeadlock() {while (!detectDeadlock()) {try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}}}private boolean detectDeadlock() {ThreadsData hcthreadsData = hcMon.getThreadsData();if (hcthreadsData == null) {System.out.println("No threads yet");} else {if (hcthreadsData.deadlockDetected()) {Display display = new Display();Shell shell = new Shell(display);MessageBox mb = new MessageBox(shell);String deadlockMessage = new String();String[] hcThreadsRec = hcthreadsData.getCriticalRecommendations();for (String rec : hcThreadsRec) {deadlockMessage = deadlockMessage + rec + "n";}mb.setMessage(deadlockMessage);mb.setText("Deadlock detected");mb.open();display.dispose();return true;}}return false;}Request Threads dataCheck for deadlock in threadsAccess the threadsrecommendationsDisplay deadlock detected message
  26. 26. © 2013 IBM CorporationExtending Memory Analyzer and IDDE• Memory Analyzer provides public extension points to build in additional“expert” knowledge• org.eclipse.mat.api.nameResolver− Provides readable description of an object in some of MATs view(like toString())− Annotates object types with detail about an object− eg. hostname and port for a Socket object• org.eclipse.mat.report.query− Adds a menu item that executes your plug-in code− Creates report style output in any form you want: Tree, Text,HTML, Pie Charts, etc.
  27. 27. © 2013 IBM CorporationExtending Memory Analyzer and IDDEimport org.eclipse.mat.SnapshotException;import org.eclipse.mat.snapshot.extension.IClassSpecificNameResolver;import org.eclipse.mat.snapshot.extension.Subject;import org.eclipse.mat.snapshot.model.IObject;@Subject("com.ibm.ws.webcontainer.webapp.WebAppImpl")public class WebApp implements IClassSpecificNameResolver {public String resolve(IObject object){String result = null;try {IObject appName = (IObject)object.resolveValue("applicationName");IObject contextPath = (IObject)object.resolveValue("contextPath");if (appName != null && contextPath != null) {result = appName.getClassSpecificName() + " at " +contextPath.getClassSpecificName();}} catch (SnapshotException e) {e.printStackTrace();}return result;}}NameResolvers “annotate” objects with a line of text:Select object type to “annotate”Return String with text to annotateLookup field valueGet the String name of the object field
  28. 28. © 2013 IBM CorporationExtending Memory Analyzer and IDDEimport org.eclipse.mat.SnapshotException;import org.eclipse.mat.snapshot.extension.IClassSpecificNameResolver;import org.eclipse.mat.snapshot.extension.Subject;import org.eclipse.mat.snapshot.model.IObject;@Name("Hung Thread Stacks")@Category(WASHelper.WAS_CATEGORY + WASHelper.HUNGTHREADS_SUBCATEGORY)@Help("List any threads that may be hung.nn")public class HungThreadsList extends BasePlugin {public IResult execute(IProgressListener listener) throws Exception {int[] hungThreadIds = HungThreads.getHungThreadIds(snapshot);return new HungThreadsListOutgoingReferencesTree(hungThreadIds, listener);}Set name of query in menuSet category in menuReturn “IResult” reportFind the Hung Threads
  29. 29. © 2013 IBM CorporationExtending Memory Analyzer and IDDEpublic static int[] getHungThreadIds(ISnapshot snapshot)throws SnapshotException {int[] threadIds = findObjects(snapshot, "java.lang.Thread");List<Integer> hungThreads = new ArrayList<Integer>();for (int thr : threadIds) {IObject thrObj = snapshot.getObject(thr);if (isThreadHung(thrObj)) {hungThreads.add(thr);}}int[] hungThreadObjectIds = getArrayIntegers(hungThreads);return hungThreadObjectIds;}Find all ThreadsCheck if the Thread is hungReturn the hung threadspublic static boolean isThreadHung(IObject thread) throws SnapshotException {boolean result = false;boolean isHung = MATHelper.resolveValueBool(thread, "isHung");if (isHung != null && isHung.booleanValue()) {result = true;}return result;}Get isHung fieldCheck value of fieldReturn field value
  30. 30. © 2013 IBM CorporationExtending Memory Analyzer and IDDEpublic class HungThreadsListOutgoingReferencesTree extends OutgoingReferencesTree {private static final int sortIndex = COLUMN_INDEX_MAX_BUILTIN + 2;public HungThreadsListOutgoingReferencesTree(ISnapshot snapshot,int[] roots, IProgressListener listener)throws SnapshotException {super(snapshot, roots, listener);}CustomizedOutgoingReferencesTree• Hung Threads and references:
  31. 31. © 2013 IBM CorporationIBM Produced Extensions
  32. 32. © 2013 IBM CorporationIBM Extensions for Memory Analyzer• Brings IBM product domain knowledge to Memory Analyzer and IDDE− WebSphere Application Server− WebSphere eXtreme Scale− WebSphere ESB− WebSphere Portal Server− CICS Transaction Gateway...plus others to follow
  33. 33. © 2013 IBM CorporationWebSphere AppServer Extensions for Memory Analyzer• Enable visualization and analysis of the Application Server anddeployed applications• Shows configuration, status and detailed content information:• Software install levels and startup time• Installed applications and status• Thread pool configuration and utilization• HTTP session cache size and session content• Application Class Loader leak detection
  34. 34. © 2013 IBM CorporationWebSphere AppServer Extensions for Memory AnalyzerApp Server Overview• Installed Levels• Server, Node and Cell names• Installed applications and status• Breakdown of memory usage by componentThread Pool Analysis• Thread Pool configuration• Current size of threads in pools• Hung Thread detectionWeb Application Analysis• Application Status• Deployed Context Root and URL• Number of user sessionsPlus many more:• HTTP Session Contents, EJB Container, Class Loader leakanalysis etc...
  35. 35. © 2013 IBM CorporationWebSphere ESB Extensions for Memory Analyzer• Extends Memory Analyzer with product specifics for WebSphere ESB− Augments existing Memory Analyzer data structures− Provides detailed product specific reports• Breakdown of installed ESB applications for improved understanding ofthe environment− Improved efficiency and effectiveness of problem determinationand resolution− WebSphere ESB L3 able to improve time to resolution of memoryrelated PMRs− Customers have greater understanding of memory usage and runtime performance• Design recommendations report identifies inefficient mediation flow logicpatterns and recommends alternatives for improved performance
  36. 36. © 2013 IBM CorporationWebSphere ESB Extensions for Memory AnalyzerMediation Flows• List of Mediation Flow Components− Number of instances and memory usage• Breakdown of Mediation Flow Component− Mediation flow logic, display names, etc.Application Overview• Breakdown of each WebSphere ESBapplication− Name, parsing mode, dependencies,endpoints− Binding and component information, etc.Plus a number of other reports:• WebSphere ESB Overview, MediationPrimitives, Design Recommendations andStatistics
  37. 37. © 2013 IBM CorporationCICS TG Extensions for Memory AnalyzerImproving First Failure Data Capture (FFDC)• CICS customers comfortable with taking dumps• Aim to provide similar function to IPCS• Gain useful information about state of the product
  38. 38. © 2013 IBM CorporationCICS TG Extensions for Memory AnalyzerAvailable reports• Current Workload• Statistics• Configuration• Connection detailsAims:• Get as much information as possible• Avoid recreates and trace• Allow support to fully investigate
  39. 39. © 2013 IBM CorporationRational Application Developer 9.0 and Health Center• In addition to supporting trace-based profiling, Rational ApplicationDeveloper v9.0 Beta now supports sample-based profiling fordiagnosing execution time problems.− Provided by Health Center Agent, the same as in IBM SupportAssistant.− Using the Health Center API, introduced in Health Center v2.1− Very low overhead compare with trace-based profiling.− Available on all supported profiling launch types, including profilingon WAS servers.
  40. 40. © 2013 IBM CorporationRational Application Developer 9.0 and Health Center
  41. 41. © 2013 IBM CorporationRational Application Developer 9.0 and Health Center
  42. 42. © 2013 IBM CorporationRational Application Developer 9.0 and Health Center
  43. 43. © 2013 IBM CorporationRational Application Developer 9.0 and Health CenterFully qualified method nameNumber of samples takenwhile a particular methodwas being run at the top ofthe stackThe % of samples taken while a particular methodwas being run at the top of the stackThe % of samples taken while a particular methodwas anywhere in the call stack
  44. 44. © 2013 IBM CorporationSummary• IBM is building a set of integrated monitoring and diagnostic tools• Taking a ground up approach• Working across teams, products and brands• Providing a consistent user experience
  45. 45. © 2013 IBM CorporationQuestions?
  46. 46. © 2013 IBM CorporationSummary• IBM is building a set of integrated monitoring and diagnostic tools• Taking a ground up approach• Working across teams, products and brands• Providing a consistent user experience
  47. 47. © 2013 IBM CorporationOther Sessions• TAW-2713: Roundtable: WAS Serviceability and Problem Determination Tools− Wednesday 13:00 and Thursday 13:00, Zeno 4703• TAD-2709: Roundtable: IBM Support Assistant: Future Strategies for PD− Wednesday 10:15 and Thursday 14:15, Zeno 4702• TAW-1217: Lab: Diagnostic and Performance Tools for WAS− Thursday 13:00, Murano 3301B• AVP-3225: Lab: Java Troubleshooting with ISA 5 and TMDA− Wednesday 10:15, Zeno 4601• ICF-4622: Roadmap for WebSphere Liberty Performance Monitoring− Thursday 15:45, Titian 2303
  48. 48. © 2013 IBM CorporationReferences• IBM Monitoring and Diagnostic Tools for Java™− http://www.ibm.com/developerworks/java/jdk/tools/• IBM Extensions for Memory Analyzer− http://www.alphaworks.ibm.com/tech/iema• Debugging WebSphere Application Server from Dumps (MA)− http://www.ibm.com/developerworks/websphere/techjournal/1103_supauth/1103_supauth.html• IBM Support Assistant (ISA)− http://www.ibm.com/software/support/isa• Email: javatool@uk.ibm.com
  49. 49. © 2013 IBM CorporationWe love your Feedback!Don’t forget to submit your Impact session and speaker feedback!• Your feedback is very important to us – we use it to improve next year’sconference• Go to the Impact 2013 SmartSite (http://impactsmartsite/com):‒ Use the session ID number to locate the session‒ Click the “Take Survey” link‒ Submit your feedback
  50. 50. © 2013 IBM Corporation
  51. 51. © 2013 IBM CorporationLegal Disclaimer• © IBM Corporation 2013. All Rights Reserved.• The information contained in this publication is provided for informational purposes only. While efforts were made to verify the completeness and accuracy of the information containedin this publication, it is provided AS IS without warranty of any kind, express or implied. In addition, this information is based on IBM’s current product plans and strategy, which aresubject to change by IBM without notice. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this publication or any other materials. Nothingcontained in this publication is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms andconditions of the applicable license agreement governing the use of IBM software.• References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/orcapabilities referenced in this presentation may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment tofuture product or feature availability in any way. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by youwill result in any specific sales, revenue growth or other results.• If the text contains performance statistics or references to benchmarks, insert the following language; otherwise delete:Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user willexperience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the users job stream, the I/O configuration, the storageconfiguration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here.• If the text includes any customer examples, please confirm we have prior written approval from such customer and insert the following language; otherwise delete:All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costsand performance characteristics may vary by customer.• Please review text for proper trademark attribution of IBM products. At first use, each product name must be the full name and include appropriate trademark symbols (e.g., IBMLotus® Sametime® Unyte™). Subsequent references can drop “IBM” but should include the proper branding (e.g., Lotus Sametime Gateway, or WebSphere Application Server).Please refer to http://www.ibm.com/legal/copytrade.shtml for guidance on which trademarks require the ® or ™ symbol. Do not use abbreviations for IBM product names in yourpresentation. All product names must be used as adjectives rather than nouns. Please list all of the trademarks that you use in your presentation as follows; delete any not included inyour presentation. IBM, the IBM logo, Lotus, Lotus Notes, Notes, Domino, Quickr, Sametime, WebSphere, UC2, PartnerWorld and Lotusphere are trademarks of InternationalBusiness Machines Corporation in the United States, other countries, or both. Unyte is a trademark of WebDialogs, Inc., in the United States, other countries, or both.• If you reference Adobe® in the text, please mark the first use and include the following; otherwise delete:Adobe, the Adobe logo, PostScript, and the PostScript logo are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States, and/or other countries.• If you reference Java™ in the text, please mark the first use and include the following; otherwise delete:Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.• If you reference Microsoft® and/or Windows® in the text, please mark the first use and include the following, as applicable; otherwise delete:Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both.• If you reference Intel® and/or any of the following Intel products in the text, please mark the first use and include those that you use as follows; otherwise delete:Intel, Intel Centrino, Celeron, Intel Xeon, Intel SpeedStep, Itanium, and Pentium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States andother countries.• If you reference UNIX® in the text, please mark the first use and include the following; otherwise delete:UNIX is a registered trademark of The Open Group in the United States and other countries.• If you reference Linux® in your presentation, please mark the first use and include the following; otherwise delete:Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. Other company, product, or service names may be trademarks or service marks ofothers.• If the text/graphics include screenshots, no actual IBM employee names may be used (even your own), if your screenshots include fictitious company names (e.g., Renovations, ZetaBank, Acme) please update and insert the following; otherwise delete: All references to [insert fictitious company name] refer to a fictitious company and are used for illustrationpurposes only.

×