Performance Programming: Theory, Practice and Case Studies

Total Page:16

File Type:pdf, Size:1020Kb

Performance Programming: Theory, Practice and Case Studies Performance Programming: Theory, Practice and Case Studies Module I: Measuring Program Performance 9 Performance Programing Module I: Measuring Program Performance OutlineOutline Measuring methodology and guidelines Measurement tools Timing Tools Profiling Tools Process monitoring and tracing tools System monitoring tools Hardware counter measurements Monitoring tools Code instrumentation Parallel performance measurements Guidelines and recommendations Tools for parallel monitoring Summary 10 Performance Programing Module I: Measuring Program Performance MeasurementMeasurement MethodologyMethodology Quantifying performance is the first step in the application tuning process Important to set reasonable expectations for op- timization Measurements should be made repeatedly to identify parts of the program that need to be op- timized Proper choice of measurement characteristics suitable for a particular application Comparison of measurements to theoretical peak values 11 Performance Programing Module I: Measuring Program Performance WhatWhat toto MeasureMeasure Timing measurements Wall clock time for a single job (turnaround time) Wall clock time for multiple jobs (throughput measurements) Wall clock time for parallel runs (scalability measurements) Execution and computation rates MFLOPS (million floating point operations per second) MIPS (million instructions per second) IPC (instructions per cycle) Resource utilization Memory usage I/O utilization Network usage 12 Performance Programing Module I: Measuring Program Performance BenchmarkingBenchmarking GuidelinesGuidelines Benchmark runs should adequately represent the use of the application Preferably only one parameter changing at a time Overhead of measurement should be considered Runs from tmpfs or from a locally mounted ufs System activities should be monitored The systems should not have any other computa- tional jobs running during benchmarking System parameters and settings should be docu- mented together with the results of the runs. 13 Performance Programing Module I: Measuring Program Performance MeasurementMeasurement ToolsTools Functionality Timing tools Profiling tools Monitoring tools Usage requirements Tools that can operate on optimized binaries Tools that require recompilation Tools that require source code instrumentation Parallel / serial measurement tools Tools measuring serial performance Tools measuring parallel performance 14 Performance Programing Module I: Measuring Program Performance TimingTiming EntireEntire ProgramProgram Measuring the elapsed (wall- clock) time that passes during the program execution Example: Solaris time, timex, and ptime 15 Performance Programing Module I: Measuring Program Performance TimingTiming ProgramProgram PortionsPortions Fortran 77: etime, dtime (both not thread safe) C, C++, Fortran 90/95: gethrtime High resolution timer (nanoseconds) Can be called via a C wrapper from Fortran 77 Can be used for multithreaded applications Platform-specific tools and methods Solaris microstate accounting Fine-grain timing measurements by accessing UltraSPARC TICK register directly .inline readtick,1 rd %tick, %o1 stx %o1, [%o0] .end 16 Performance Programing Module I: Measuring Program Performance MeasurementMeasurement OverheadOverhead Computing overhead Distribution of gethrtime() 22500 call 20000 17500 #include<sys/time.h> 15000 time_t start, end; int i, iters = 100000; 12500 for (i = 0; i < iters; i++) { start = gethrtime(); 10000 end = gethrtime(); 7500 (void)printf("%lld \n", (end - start)); 5000 } 2500 0 Call overhead (ns) 180-185 185-190 190-195 195-200 200-205 205-210 210-215 215-220 220-225 225-230 (ns) 17 Performance Programing Module I: Measuring Program Performance ProgramProgram ProfilingProfiling withwith gprofgprof Application profiling Special form of timing measurements that shows which func- tions account for large parts of application runtimes Should be used on multiple and representative test cases gprof - standard UNIX profiling utility Can be used for profiling executalbes and shared libraries Based on Program Counter (PC) sampling at periodic intervals Requires recompilation with -pg (Linux, Solaris, Tru64) or -G (HP-UX) After the run the data is collected in gmon.out file Profiling results displayed with gprof command 18 Performance Programing Module I: Measuring Program Performance gprofgprof OutputOutput Output includes Absolute time spent in a function Percentage of total run time spent in a function Number of calls to the function Average time per call Functions can be sorted by time they consume together with their descendants (commul- ative or inclusive time) time spent executing the function itself (self or exclusive time) % cumulative self self total time seconds seconds calls ms/call ms/call name 66.4 65.70 65.70 186116 0.35 0.35 dmmch_ [4] 15.2 80.72 15.02 20448 0.73 0.73 dmake_ [8] 10.9 91.51 10.79 16924 0.64 0.64 dgemm_ [9] ... 19 Performance Programing Module I: Measuring Program Performance ProfilingProfiling UsingUsing CoverageCoverage AnalysisAnalysis Coverage analysis tools annotate source code with the number of times each line was executed Basic block profiling Results can be accumulated for multiple runs Information about hot loops in the code and branches taken Code coverage for quality assurance DO 350 L = LL, LL+ LSEC- 1 150483840 -> F11 = F11 + T1( L- LL+ 1, I- II+ 1 )* $ T2( L- LL+ 1, J- JJ+ 1 ) Available on UNIX platforms Linux/GNU: gcov Solaris: tcov IRIX: cvcov, cvxcov Tru64: pixie AIX: tprof 20 Performance Programing Module I: Measuring Program Performance AdvancedAdvanced ProfilingProfiling ToolsTools Measurement parameters and features Measurements based on hardware counters Profiling by functions basic blocks lines of high level code assembly instructions Source code annotation Capabilities to work with parallel programs synchronization overhead, load balancing monitoring Available tools Tool Vendor Platforms VTune Intel NT Analyzer Sun Solaris SpeedShop SGI IRIX DCPI DEC Compaq HP Tru64, NT 21 Performance Programing Module I: Measuring Program Performance Example:Example: SunSun PerformancePerformance AnalyzerAnalyzer (1(1 ofof 3)3) Profiling by function and module (no recompilation) 22 Performance Programing Module I: Measuring Program Performance Example:Example: SunSun PerformancePerformance AnalyzerAnalyzer (2(2 ofof 3)3) Annotated source (recompilation with -g) and disassembly (no recompilation) 23 Performance Programing Module I: Measuring Program Performance Example:Example: SunSun PerformancePerformance AnalyzerAnalyzer (3(3 ofof 3)3) Hardware counter overflow profiling 24 Performance Programing Module I: Measuring Program Performance ProcessProcess MonitoringMonitoring ToolsTools Tracing tools Linux: strace (ltrace for dynamic library calls) Solaris: truss (sotruss for dynamic library calls) IRIX: par Tru64: atom -tool ptrace procfs-based tools pmap: prints the address space of the program pldd: lists the dynamic shared objects linked into the process (including ones explicitly attached using dlopen) pstack: prints a stack trace for each LWP in the process pflags: prints the /proc tracing flags ptree: process trees containing specified pids or users pwait: wait for specified processes to terminate pcred: prints the credentials (effective, real, saved UIDs and GIDs) 25 Performance Programing Module I: Measuring Program Performance Example:Example: profilingprofiling systemsystem callscalls truss on Solaris Reports the number of system calls for a process and associated time 26 Performance Programing Module I: Measuring Program Performance SystemSystem MonitoringMonitoring ToolsTools Tools for various UNIX platforms vmstat, vm_stat, memvis - virtual memory and CPU sta- tistics mpstat, mpvis - parallel memory/CPU statistics netstat, nfsstat, nfsvis - network status and statistics iostat, dkvis - I/O statistics sar - system activity report top, prstat - list of most active processes systat - system activity stats lockstat - kernel lock statistics dkstat - file status information 27 Performance Programing Module I: Measuring Program Performance vmstatvmstat -- VirtualVirtual MemoryMemory StatisticsStatistics Available on HP-UX, Tru64, Solaris, Linux, FreeBSD, etc. Example on Alpha/Tru64 Memory Paging Usage Activity CPU Usage Idle System 28 Performance Programing Module I: Measuring Program Performance HardwareHardware CounterCounter MeasurementsMeasurements Hardware performance counters allow for the runtime low-overhead measurements of various hardware events Cache references Cache misses Pipeline stalls Branch misprediction statistics D-TLB (Data Translation Lookaside Buffer) misses I-TLB (Instruction Translation Lookaside Buffer) Bus statistics including DMA and cache coherency transac- tions on a multiprocessor systems Others Only several events can be monitored at the same time 29 Performance Programing Module I: Measuring Program Performance CodeCode InstrumentationInstrumentation APIs can be used directly in the code High-resolution timing of performance-critical parts of the pro- gram Access to HW performance counters Example (Solaris) if (cpc_take_sample(&before) == -1) exit(-1); for (k = 0; k < N-1; k++) sum = sum + a[k]*b[k]; if (cpc_take_sample(&after) == -1) exit(-1); Counters specified by setting PERFEVENTS environment variable example% setenv PERFEVENTS pic0=Load_use,pic1=Load_use_RAW Works on UltraSPARC CPUs
Recommended publications
  • Software Process Validation: Quantitatively Measuring the Correspondence of a Process to a Model
    Software Process Validation: Quantitatively Measuring the Correspondence of a Process to a Model JONATHAN E. COOK New Mexico State University and ALEXANDER L. WOLF University of Colorado To a great extent, the usefulness of a formal model of a software process lies in its ability to accurately predict the behavior of the executing process. Similarly, the usefulness of an executing process lies largely in its ability to fulfill the requirements embodied in a formal model of the process. When process models and process executions diverge, something significant is happening. We have developed techniques for uncovering and measuring the discrepancies between models and executions, which we call process validation. Process validation takes a process execution and a process model, and measures the level of correspon- dence between the two. Our metrics are tailorable and give process engineers control over determining the severity of different types of discrepancies. The techniques provide detailed information once a high-level measurement indicates the presence of a problem. We have applied our process validation methods in an industrial case study, of which a portion is described in this article. Categories and Subject Descriptors: D.2.6 [Software Engineering]: Programming Environ- ments; K.6.3 [Management of Computing and Information Systems]: Software Manage- ment—software development; software maintenance General Terms: Management Additional Key Words and Phrases: Balboa, process validation, software process, tools This work was supported in part by the National Science Foundation under grants CCR-93- 02739 and CCR-9804067, and the Air Force Materiel Command, Rome Laboratory, and the Defense Advanced Research Projects Agency under Contract Number F30602-94-C-0253.
    [Show full text]
  • Oracle® Developer Studio 12.5
    ® Oracle Developer Studio 12.5: C User's Guide Part No: E60745 June 2017 Oracle Developer Studio 12.5: C User's Guide Part No: E60745 Copyright © 2016, 2017, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.
    [Show full text]
  • Using the GNU Compiler Collection (GCC)
    Using the GNU Compiler Collection (GCC) Using the GNU Compiler Collection by Richard M. Stallman and the GCC Developer Community Last updated 23 May 2004 for GCC 3.4.6 For GCC Version 3.4.6 Published by: GNU Press Website: www.gnupress.org a division of the General: [email protected] Free Software Foundation Orders: [email protected] 59 Temple Place Suite 330 Tel 617-542-5942 Boston, MA 02111-1307 USA Fax 617-542-2652 Last printed October 2003 for GCC 3.3.1. Printed copies are available for $45 each. Copyright c 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being \GNU General Public License" and \Funding Free Software", the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled \GNU Free Documentation License". (a) The FSF's Front-Cover Text is: A GNU Manual (b) The FSF's Back-Cover Text is: You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development. i Short Contents Introduction ...................................... 1 1 Programming Languages Supported by GCC ............ 3 2 Language Standards Supported by GCC ............... 5 3 GCC Command Options .........................
    [Show full text]
  • Software Analysis Handbook: Software Complexity Analysis and Software Reliability Estimation and Prediction
    Technical Memorandum 104799 Software Analysis Handbook: Software Complexity Analysis and Software Reliability Estimation and Prediction Alice T. Lee Todd Gunn (NASA-TM-I04799) SOFTWARE ANALYSIS N95-I1914 Tuan Pham HANDBOOK: SOFTWARE COMPLEXITY Ron Ricaldi ANALYSIS AND SOFTWARE RELIABILITY ESTIMATION AND PREDICTION (NASA. Unclas Johnson Space Center) 96 p G3159 0023056 August 1994 ..0 National Aeronautics and Space Administration Technical Memorandum 104799 Software Analysis Handbook: Software Complexity Analysis and Software Reliability Estimation and Prediction Alice T. Lee Safety, Reliability, & Quaflty Assurance Office Lyndon B. Johnson Space Center Houston, Texas Todd Gunn, Tuan Pham, and Ron Ricaldi Loral Space Information Systems Houston, Texas National Aeronautics and Space Administration Thispublication is available from the NASA Center for AeroSpace Information, 800 Elkridge Landing Road, Linthicum Heights, MD 21090-2934, (301) 621-0390. Summary The purpose of this handbook is to document the software analysis process as it is performed by the Analysis and Risk Assessment Branch of the Safety, Reliability, and Quality Assurance Office at the Johnson Space Center. The handbook also provides a summary of the tools and methodologies used to perform software analysis. This handbook is comprised of two sepa- rate sections describing aspects of software complexity and software reliability estimation and prediction. The body of this document will delineate the background, theories, tools, and analysis procedures of these approaches. Software complexity analysis can provide quantitative information on code to the designing, testing, and maintenance organizations throughout the software life cycle. Diverse information on code structure, critical components, risk areas, testing deficiencies, and opportunities for improvement can be obtained using software complexity analysis.
    [Show full text]
  • Oracle® Developer Studio 12.6
    ® Oracle Developer Studio 12.6: C++ User's Guide Part No: E77789 July 2017 Oracle Developer Studio 12.6: C++ User's Guide Part No: E77789 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.
    [Show full text]
  • Programming by Brian W
    6sun® • microsystems PrograInIning Utilities for the Sun Workstation® Sun Microsystems, Inc. • 2550 Garcia Avenue • Mountain View, CA 94043 • 415-960-1300 Credits and Acknowledgements The chapters of this manual were originally derived from the work of many people at Bell Laboratories, the Univer­ sity of California at Berkeley', and other noble institutions. Their names and the titles of the original works appear here. UNIX Programming by Brian W. Kernighan and Dennis M. Ritchie, Bell Laboratories, Murray Hill, New Jersey. Lint, a C Program Checker by S. C. Johnson, Bell Laboratories, Murray Hill, New Jersey. Make -A Program for Maintaining Computer Programs by S. I. Feldman, Bell Laboratories, Murray Hill, New Jersey. The M4 Macro Processor by Brian W. Kernighan and Dennis M. Ritchie, Bell Laboratories, Murray Hill, New Jersey. Lex - A Lexical Analyzer Generator by M. E. Lesk and E. Schmidt, Bell Laboratories, Murray Hill, New Jersey. Yacc - Yet Another Compiler-Compiler by Stephen C. Johnson, Bell Laboratories, Murray Hill, New Jersey. Source Code Control System User's Guide by L. E. Bonanni and C. A. Salemi, Bell Laboratories, Piscataway, New Jersey. Source Code Control System by Eric Allman, Formerly of Project Ingres, University of California at Berkeley. Trademarks Multibus is a trademark of Intel Corporation. Sun Workstation is a trademark of Sun Microsystems Incorporated. UNIX is a trademark of Bell Laboratories. Copyright © 1983, 1984, 1985, by Sun Microsystems. This publication is protected by Federal Copyright Law, with all rights reserved. No part of this publica­ tion may be reproduced, stored in a retrieval system, translated, transcribed, or transmitted, in any form, or by any means manual, electric, electronic, electro-magnetic, mechanical, chemical, optical, or otherwise, without prior explicit written permission from Sun Microsystems.
    [Show full text]
  • Fortran Programming Guide
    Sun Studio 12: Fortran Programming Guide Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. Part No: 819–5262 Copyright 2007 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. All rights reserved. Sun Microsystems, Inc. has intellectual property rights relating to technology embodied in the product that is described in this document. In particular, and without limitation, these intellectual property rights may include one or more U.S. patents or pending patent applications in the U.S. and in other countries. U.S. Government Rights – Commercial software. Government users are subject to the Sun Microsystems, Inc. standard license agreement and applicable provisions of the FAR and its supplements. This distribution may include materials developed by third parties. Parts of the product may be derived from Berkeley BSD systems, licensed from the University of California. UNIX is a registered trademark in the U.S. and other countries, exclusively licensed through X/Open Company, Ltd. Sun, Sun Microsystems, the Sun logo, the Solaris logo, the Java Coffee Cup logo, docs.sun.com, Java, and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the U.S. and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc. The OPEN LOOK and SunTM Graphical User Interface was developed by Sun Microsystems, Inc. for its users and licensees. Sun acknowledges the pioneering efforts of Xerox in researching and developing the concept of visual or graphical user interfaces for the computer industry.
    [Show full text]
  • Read the Thesis
    Making compiler tests based on compiler source code coverage Jelle Witsen Elias [email protected] January 19, 2021, 33 pages Academic supervisor: Clemens Grelck, [email protected] Daily supervisors: Jos´eLuis March Cabrelles, [email protected] Remi van Veen, [email protected] Host organisation: Solid Sands, www.solidsands.nl Universiteit van Amsterdam Faculteit der Natuurwetenschappen, Wiskunde en Informatica Master Software Engineering http://www.software-engineering-amsterdam.nl Abstract Compilers are important elements in software infrastructure. It is therefore important that these complex pieces of software are tested. We found a way of making C compiler tests that is different from the usual approach of doing this. With our new process we base new tests on their coverage of compiler source code, instead of constructing them by solely looking at the rules defined in language standards. This way, we manage to make tests with constructions that were overlooked when building our existing compiler test suites. We built a tool that takes source code of a C application as input, along with a C compiler test suite. The tool outputs pieces of code which, when compiled, cover parts of compiler source code that the test suite does not yet cover. With this output, we can construct new tests for inclusion in our existing test suite. Our process is as follows: we take an open source C application and compile its sources with an open source compiler. This compiler has been instrumented to enable source code coverage analysis. After compilation, we compare the coverage of compiler source code of the application with coverage of our existing test suites.
    [Show full text]
  • Assignment 10 — 18.11.2020 – V1.2 Dynamic Program Analysis
    SMA: Software Modeling and Analysis Prof. Dr. Oscar Nierstrasz A2020 Pascal Gadient, Pooja Rani Assignment 10 — 18.11.2020 – v1.2 Dynamic Program Analysis Please submit this exercise by email to [email protected] before 25 November 2020, 10:15am. You must submit your code as editable text, i.e., use plain text file(s). Exercise 1: Theory (1 pt) a) Suppose you have an application and you want to test all code paths with dynamic analysis. Is this approach reasonable? Justify! b) Is monkey testing a dynamic analysis technique? Justify! Exercise 2: Contracts (3 pts) In this exercise, we use the syntax and features from jContracts available here. Consider the Java code below. /** * @pre number >= 100.0 * @post return == true * @inv number < 0 || number >= 0 */ public boolean add(int number) f if (number < 10) f this.number = this.number + number; return true; g else f return false; g g a) Are the contracts for add(int number) valid, i.e., exists a configuration that passes all three checks? If yes, which configuration succeeds? If no, what is the problem? b) Can the invariant contract be removed without any side effects? If yes, why do no side-effects occur? If no, which side-effects would occur? c) Suppose you have a Java method that calculates from a given number the number multiplied by itself as shown in the code below. Design a post contract that validates the result, i.e., the contract must be violated whenever a result is wrong. public float square(int number) f return number * number; g page 1 of 5 SMA: Software Modeling and Analysis Prof.
    [Show full text]
  • C Programmer's Guide
    C Programmer's Guide Part Number: 800-3844-10 Revision A of 27 March, 1990 Trademarks Sun Workstation® is a trademark of Sun Microsystems, Incorporated. SunOS1M is a trademark of Sun Microsystems, Incorporated. Copyright © 1989 Sun Microsystems, Inc. - Printed in U.S.A. All rights reserved. No part of this work covered by copyright hereon may be reproduced in any fonn or by any means - graphic, electronic, or mechanical - including photocopying, recording, taping, or storage in an infonnation retrieval system, without the prior written permission of the copyright owner. Restricted rights legend: use, duplication, or disclosure by the U.S. government is subject to restrictions set forth in subparagraph (c)(I)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 52.227-7013 and in similar clauses in the FAR and NASA FAR Supplement. The Sun Graphical User Interface was developed by Sun Microsystems, Inc. for its users and licensees. Sun ack­ nowledges the pioneering efforts of Xerox in researching and developing the concept of visual or graphical user inter­ faces for the computer industry. Sun holds a non-exclusive license from Xerox to the Xerox Graphical User Interface, which license also covers Sun's licensees. This product is protected by one or more of the following U.S. patents: 4,777,485 4,688,190 4,527,232 4,745,407 4,679,0144,435,7924,719,5694,550,368 in addition to foreign patents and applications pending. • eo: Contents Chapter 1 U sing The Sun C Compiler ...................................................................... 1 1.1. Basics - Compiling and Running C Programs ...........................................
    [Show full text]
  • Fortran Programmer's Guide
    Fortran Programmer’s Guide Fortran 77 4.2 Fortran 90 1.2 SunSoft, Inc. A Sun Microsystems, Inc. Business 2550 Garcia Avenue Mountain View, CA 94043 USA 415 960-1300 fax 415 969-9131 Part No.: 802-5664-10 Revision A, December 1996 Copyright 1996 Sun Microsystems, Inc., 2550 Garcia Avenue, Mountain View, California 94043-1100 U.S.A. All rights reserved. This product or document is protected by copyright and distributed under licenses restricting its use, copying, distribution, and decompilation. No part of this product or document may be reproduced in any form by any means without prior written authorization of Sun and its licensors, if any. Portions of this product may be derived from the UNIX® system, licensed from Novell, Inc., and from the Berkeley 4.3 BSD system, licensed from the University of California. UNIX is a registered trademark in the United States and other countries and is exclusively licensed by X/Open Company Ltd. Third-party software, including font technology in this product, is protected by copyright and licensed from Sun’s suppliers. RESTRICTED RIGHTS: Use, duplication, or disclosure by the U.S. Government is subject to restrictions of FAR 52.227- 14(g)(2)(6/87) and FAR 52.227-19(6/87), or DFAR 252.227-7015(b)(6/95) and DFAR 227.7202-3(a). Sun, Sun Microsystems, the Sun logo, Solaris, SunSoft, Sun WorkShop, Sun Performance WorkShop and Sun Performance Library are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc.
    [Show full text]
  • Oracle® Solaris 11.3 Linkers and Libraries Guide
    ® Oracle Solaris 11.3 Linkers and Libraries Guide Part No: E54813 March 2018 Oracle Solaris 11.3 Linkers and Libraries Guide Part No: E54813 Copyright © 1993, 2018, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S.
    [Show full text]