IBM UNCLASSIFIEDOS/2 Warp 4 Capacity Planning and Performance Tuning Guide Page 1 OS/2 Warp 4 Capacity Planning and Performance Tuning Guide Document Number: WARP4TTT December 5, 1996 Personal Software Products Duc J. Vianney, Ph. D., Senior Programmer OS/2 External Performance, Austin, TX Tony White, OS/2 Performance Consultant Personal Systems Solutions Center, Dallas, TX Preface This paper was produced to assist you in improving the performance of your OS/2 system by providing information on OS/2 Warp 4, its various subsystems, and practical performance tuning tips and techniques. It begins by familiarizing you the new features and enhanced functions of OS/2 Warp 4. It will then introduce you to the concepts and terminology needed to successfully tune an OS/2 system. You will learn to recognize the symptoms of many common performance problems. You will also learn how to create and use a repeatable process for analyzing a system's performance problem and understand the many tuning parameters and techniques used to fully optimize your system. The tuning tips and techniques are divided into 3 sections targeted to different levels of complexity: basic OS/2 tuning, advanced OS/2 tuning, and tuning tips for a networked OS/2 workstation. This paper documents the procedures used and knowledge obtained from performance evaluation and measurement activities. Some procedures have been recorded in documents previously published by OS/2 development and support groups within IBM. It should be considered a working document subject to forthcoming changes without notice as additional information is obtained. The information contained in this paper represents the interpretation of IBM on the issues discussed based on the measurement results as of the date of publication. Since the results are applicable only to the system under test, IBM makes no commitment nor guarantees the accuracy of any data measured after the date of publication. The authors wish to express their sincere thanks to the comments, suggestions and reviews made by Michael Martino, Cyndi Kubich, Rich Wahl, Robert Paulsen, Jimmy DeWitt, Ivan Eisen, Bob Russell, Steve Woodward, Lannes Robinson, Valerie Jackson, and many others that have involved with OS/2 Warp products. For further references, please refer to the following documents. [1] OS/2 Warp 4 Readme [2] OS/2 Warp 4 Reference and Commands [3] OS/2 Warp 4 Tasks [4] "Performance Tuning OS/2 Warp," Ron Cadima, ISV Development Assistance, IBM Boca Raton, FL, 1995. [5] "OS/2 2.1 Performance Tuning for End Users," IBM, May 1993. [6] "OS/2 Warp Performance Pentium Pro P6 Performance Benchmark Guide," Duc Vianney, IBM TR54.915. [7] "OS/2 Client Tuning Worksheet," Tony White, IBM, Personal Systems Competency Center, May 1996. Trademarks The following terms are trademarks or registered trademark of the IBM Corporation in the United States or other countries OS/2, OS/2 Warp, OS/2 Warp Connect, OS/2 Warp Server, OS/2 LAN Server, DB/2, LAN Server 4.0, Bonus Pak, Personal Communications/3270 , Visual Age and Visual Builder, ThinkPad, NetFinity, OpenDOC, WebExplorer, SOM/DSOM, DIVE, System Performance Monitor/2 (SPM/2) The following terms are trademarks of other companies: TRADEMARK OWNER DOOM id Software Intel Intel Corporation Master of Orion MicroProse Myst Cyan, Inc. NetWare Novell, Inc. Pro AudioSpectrum Media Vision, Inc. QuickTime Apple Computer, Inc. Sound Blaster Creative Labs, Inc. THE 7th GUEST Virgin Interactive Entertainment, Inc. TIE Fighter Lucasfilm, Ltd. Western Digital Western Digital Corporation Windows, Win32s Microsoft Corporation Windows NT Server, Windows 95 Windows for Workgroups TME, TME 10 Tivoli Systems, Inc., an IBM Company OpenGL Silicon Graphics Amipro, L 1-2-3 Lotus Corp. BRender Argonaut Technologies Ltd. BYTEmark Byte Magazine. ColorWorks SPG Inc. Describe Describe Corp. MicroStation Bentley Systems, Inc. Pentium and Pentium Pro Intel Corp. SAS SAS Institute Inc., Cary, NC, USA. LANtastic Artisoft JAVA Sun Microsystems HyperACCESS Hilgraeve FaxWorks Keller Group Inc. CompuServe Information Manager CompuServe Pegasus Resource Monitor for OS/2 OnDEMAND Software, Inc. OS/2 Resource Monitor C.O.I. Consulting, Ltd. CPU Monitor BonAmi Software Corp. Performance 2.1 Clear and Simple, Inc. All other marks are the property of their respective companies. Notices References in this publication to IBM products, programs, or services do not imply that IBM intends to make these available in all countries in which IBM operates. Any reference to an IBM product, program or service is not intended to state or imply that only IBM's product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any of IBM's intellectual property rights or other legally protectable rights may be used instead of the IBM product, program, or service. Evaluation and verification of operation in conjunction with other products, programs, or services, except those expressly designeated by IBM, are the user's responsibility. IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to the IBM Director of Licensing, IBM Corporation, 500 Columbus Avenue, Thornwood NY 10594, U.S.A. The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS DOCUMENT "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimers of express or implied warranties in certain transactions; therefore, this statement may not apply to you. This publication could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this paper at any time. It is possible that this publication may contain reference to, or information about, IBM products (machines and programs), progamming, or services that are not announced in your country. Such references or information must not be construed to mean that IBM intends to announce such IBM products, prograaming, or services in your country. Requests for technical information about IBM products should be made to your IBM authorized reseller or IBM marketing representative. (C) Copyright International Business Machines Corporation 1996. All rights reserved. Note to U.S. Government Users. Documentation and programs related to restricted rights - Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corporation. Table of Contents 1 Introduction 1.0 Why OS/2 Warp 4? 7 1.1 OS/2 Warp 4 features and functions 7 1.2 Performance differences from previous OS/2 versions 9 1.3 Software prerequisites 10 1.4 The software configuration menu 10 2 Capacity Planning 2.0 Capacity planning 12 2.1 OS/2 Warp 4 resource requirements 12 2.2 Main reasons for causing system performance bottlenecks in OS/2 Warp 4 13 2.3. Hardware issues 13 2.3.1 CPU 13 2.3.2 Memory 16 2.3.3. Disk drive 17 2.3.4 Video subsystem 20 2.3.5 COM port 20 2.4 Software issues 21 2.4.1 Planning for growth 21 3 Performance Monitoring and Tuning 3.0 Response time 22 3.1 Performance monitoring 22 3.2 Benchmarking 22 3.3 OS/2 Warp 4 performance tools 23 3.3.1 CHKDSK 23 3.3.2 Hard Disk Drive Monitor 23 3.3.3. PROFILER 24 3.3.4 PSTAT 25 3.3.5 SYSLEVEL 25 3.3.6 RMVIEW 26 3.3.7 TRACE 26 3.4 OS/2 external monitoring tools 3.4.1 System Performance Monitor/2 (SPM/2) 27 3.4.2 Simple CT 27 3.4.3 CPU Monitor 28 3.4.4 OS/2 Resource Monitor 28 3.5 Performance tuning 28 3.5.1 Problem definition 28 3.5.2 Identifying bottlenecks 28 3.6 Tuning Methodology 29 3.6.1 Define the problems 29 3.6.2 Hypothesize solutions 29 3.6.3 Design tests 30 3.6.4 Set values and run tests 30 3.6.5 Analyze the results 30 4 Basic OS/2 Tuning Procedures 4.0 Introduction 31 4.1 General system changes 31 4.1.1 The OS/2 Warp Center 31 4.1.2 The OS/2 Warp Guide 31 4.1.3 Animation 32 4.1.4 Changing display drivers 32 4.1.5 Minimize applications and folders 32 4.1.6 Starting applications 33 4.1.7 Use startup folder 33 4.1.8 Multitasking considerations 33 4.1.9 Schemes and color palette 33 4.1.10 Sounds 33 4.1.11 Font palette 33 4.1.12 System logo 34 4.1.13 Mouse 34 4.1.14 Desktop utilization 5 Advanced OS/2 Tuning 5.0 Introduction 35 5.1 Tuning tips for the Workplace Shell 35 5.1.1 The PMSHELL environment 35 5.2 Task scheduling 35 5.3 The CONFIG.SYS file 36 5.4 Single input queue 49 5.5 The AUTOEXEC.BAT file 49 6 Improving Application Performance 6.0 Application software 51 6.1 Tuning tips for OS/2 applications 51 6.1.1 SOMobjects 52 6.1.2 VisualAge C++ performance 52 6.2 Tuning tips for Windows applications 53 6.2.1 Win-OS/2 environment 53 6.2.2 Windows groups and Windows programs folders 53 6.2.3 Win-OS/2 virtual DOS sessions - common Vs. separate 53 6.2.4 Win-OS/2 standard and enhanced compatibility modes 53 6.2.5 Settings for Windows applications 54 6.2.6 Win32s support 55 6.2.7 Win-OS/2 setup 55 6.2.8 Win-OS/2 specific settings 56 6.2.9 General Win-OS/2 tips 57 6.2.10 Tuning tips for games 58 6.3 Tuning tips for DOS applications 60 6.3.1 DOS environment 60 6.3.2 Full screen vs. windowed 60 6.3.3 Multitasking DOS sessions 60 6.3.4 Tuning the DOS settings 61 6.3.5 Video settings 68 6.3.6 Mouse and touch sensitive settings 71 6.3.7 Settings affecting communications applications 72 7 Performance Exploitation of the Underlying Hardware 7.0 Introduction 75 7.1 Video display resolutions 75 7.2 Tuning tips for printing performance 76 7.2.1 Printer object settings 76 7.2.2 Fonts impact print speed 77 7.2.3 PRINTMONBUFSIZE 78 7.2.4 OS/2 spooled printing 78 7.2.5 Printing from DOS 79 7.2.6 Printing from WIN-OS/2 79 7.2.7 Printing from OS/2 applications 80 7.3 Tuning tips for speech performance 81 7.3.1 Hardware requirements 81 8 Tuning Tips for a Networked OS/2 Workstation 8.0 Introduction 82 8.1 Multi-protocol transport service 82 8.1.1 SOCKS support 83 8.2 OS/2 LAN Server/Requester 83 8.3 OS/2 Netware Requester 84 8.4 TCP/IP client tuning 85 8.5 DB2 client tuning -- SQL database performance 85 8.6 Lotus Notes client tuning 86 Appendix 1 - CONFIG.SYS File Insights 87 Chapter 1 Introduction 1.0 Why OS/2 Warp 4? IBM's goal is to provide a more responsive OS/2 that is simpler and more intuitive to use, and provides easy connectivity. To achieve that end, OS/2 Warp 4 addresses three major issues: Ease of use - changes to the Workplace Shell interface Voice Navigation and Dictation Ease of connecting to whatever networked environment you wish 1.1 OS/2 Warp 4 features and functions OS/2 Warp 4 contains the following new features and functions: Voice Navigation and Dictation - Combining speaker independence and continuous speech, OS/2 Warp voice-enabled the operating system to navigate OS/2 and macros can be created to simplify repetitive tasks. Internet-Aware Desktop - New desktop objects for HTML, URL, Java class and FTP servers. These objects enable drag-and-drop from the Internet to the desktop and vice versa. The FTP object provides a folder view of a FTP directory. 256-color Exploitation - Visuals use more colors to give the user a 3D experience using texture, shadowing and curved edges. More System Fonts - A new condensed font style is added that uses less desktop real estate while improving legibility. File and Print Services Client - Converge LAN Requester and Peer for OS/2 to provide a single administration workstation. Users can share peer resources and administer peer and LAN resources. Objects on the desktop will inherit peer functionality in their context menus. The File and Print Client can connect to IBM-compatible networks such as: OS/2 Warp Server OS/2 LAN Server Windows NT Server PC LAN Program OS/2 Warp Connect Windows NT Workstation Windows 95 Windows for Workgroups LANtastic for OS/2 LANtastic for DOS PCOM Lite - Personal Communications/3270 (PC/3270) and Personal Communications/5250 (PC/5250)-- TCP/IP Entry Level 4.1 are replacements for TN3270, TN5250 and PMANT. The new emulators feature 32-bit code, full font set and automatic font sizing, custom color palette, improved cut and paste, APL support, command line (IND$FILE) file transfer, context sensitive help, popup keyboard, hot spots, PCMCIA and support problem determination aids. Users are limited to two sessions. Support for JAVA(tm) Applications - Full support for the Java language, Java runtime and Java applets. TrueType Engine - New support for TrueType, a ready source of inexpensive fonts. OpenDoc(tm) - Runtime support for cross-platform compound documents. Open32 Support - Support for subset of a Win32 APIs and messages to ease the porting of Windows applications. OpenGL - A high quality, portable 3D graphics API that will primarily enable technical and engineering applications (CAD/CAM) to be ported to OS/2 Warp. DPMI 1.0 Subset - Enablement for support of Win32s 1.25a compatibility and support of Borland 4 tools. Plug-and-Play (PnP) Support - Automatic detection and resource allocation for enabled devices as well as legacy ISA devices. An application is provided to view resource assignments. The framework has been established for more sophisticated operations in future releases. OS/2 Warp's PnP support does not include dynamic installation and configuration. Warm Plug/Warm Docking - Support for docking/undocking and the swapping of diskette drive and CDROM drive in specific models of IBM ThinkPad 755 series. Infra-red (IR) Support - ThinkPad-specific support for IR supporting the IrDA interface. Graphics Device Driver Model (GRADD) - New device driver model that reduces the IHV development effort and improves time-to-market. Device Driver Pak (DDPak) - A collection of OS/2 device drivers available from IBM and third-parties offered as-is for customer convenience. Display Data Channel (DDC) Support - DDC2 support for automatic enabled-display recognition and refresh rate setting. Realtime Musical Instrument Digital Interface (MIDI) - Framework and API for delivering high quality, realtime relative MIDI applications. Security Enabling Services (SES) - Enablement for operating system security services. System Dump Formatter - Utility to read and format system dump information. First Failure Support Technology (FFST) Probes - Capture all data relevant to the error at the time it occurs. DMI Interface - Support for the Desktop Management Interface, an industry standard way to manage Pcs. TME NetFinity - Software to allow administrators to view, monitor and initiate actions to ensure the smooth operation of PCs. Software Registration (ART) - Online registration tool to encourage customers to register the software electronically via a modem or the Internet, FAX, mail or even the telephone. Users are gently reminded periodically until registration is completed. Retrieve Software Updates - Automatic software retrieval and install of fixes and upgrades via the Internet. XPG4/ULS Support - Provide ability for easier application adaptation of international requirements such as native languages, local customs and coded character sets. Bonus Pak Changes - Collection of personal productivity applications including word processor, spreadsheet, charting, report writer, database, calendar, monthly planner, appointment book and phone book. IBM Works 3.0 contains fixes, memory management improvements, updated help, HTML support, updated word processor and graphics filters and a button bar for commonly used features. Remote Support for OS/2 - Allows IBM service representative to dial into your system to assist with problem determination and resolution. HyperACCESS Lite - Async communications program to access bulletin board services. The update includes maintenance and other refinements such as user-defined modem strings and more colorful icons. CompuServe Information Manager - Provides access to the CompuServe online service. CIM 2.03 includes fixes and removes the OS/2 registration requirement. HP JetAdmin and MarkVision for OS/2 delivers an advanced network printing solution that enables you to easily install, configure, query, and troubleshoot network-attached printers from your OS/2 Desktop. FaxWorks - Allows FAXes to be sent and received. Includes features of a basic answering machine. Supports drag-and-drop. FAX/data integration through a new interface for data applications to pass answered call to FaxWorks. AskPSP - AskPSP consists of an expert system with a natural language interface. It can be used to resolve customer problems on OS/2 Warp. This tool is also used by IBM Service and Support. The technical database, updated monthly, is available by subscription to the OS/2 Technical Connection CDROM. The following features and functions have been updated in OS/2 Warp 4: Integrated install - Updated for OS/2 Warp, the install program gives the user an easy and an advanced path. The user can also selectively install, re-install or uninstall components. Controls and Visuals Visuals - Use more colors to give the user a 3D experience using texture, shadowing, and curved edges. Dialogs - File Open and Close dialogs provide tree views of directories and allow for filetype selection. Horizontal Style Notebook - Notebook settings add a horizontal tab option. This new style allows information to be presented more concisely without taking up much space. Close Button - Close applications with a single click. Folder Menu Bars - Menu bar access for common operations within folders. Users can also utilize the context menu (Mouse Button 2) for these same operations. User Interface Redesign Background Bitmaps - Bitmaps with texture and color schemes. Exploit use of more colors for higher degree of texture and depth. Arrange Options - Desktop and folder icon alignment according to user preferences. Pointers - Greater selection of pointers for user customization. Font Palette - System-defined or user-defined selection of fonts for text Color Palette - System-defined or user-defined selection of colors for visual controls. Scheme Palette - System-defined or user-defined selection of fonts and colors. Sound Schemes - System-defined or user-defined selection of sounds for system events. System Tutorials Update - Designed to help users get up-to-speed, with a focus on getting connected. Also includes a section on speech. Help System Updates - Enhancements to give the help author more control over content, presentation, and navigation. Migration Database - Database of optimal settings for popular OS/2, DOS and Windows applications. The database is used during install to migrate previously installed applications. Includes additional Windows and new Win32s applications. Async Read-Ahead - File system studies disk read patterns, anticipates a disk read and makes it available in memory to improve system throughout. Network Transports - NDIS device driver support for a variety of LAN adapters. Netware Client 2.11+ for OS/2 - This is the same level of code that was shipped in OS/2 Warp Connect 3.0 and OS/2 Warp Server 4 with fixes. TCP/IP DHCP/DDNS Client - Dynamic Host Configuration Protocol eases network administration by dynamically allocating and reusing IP addresses. Dynamic Domain Name Service simplifies network access, operation and change with dynamic resolution of IP addresses to IP hosts. Socks Security - Permits TCP/IP applications to access the Internet through many standard firewalls. FTP and TFTP Client and Server - File transfer to and from a remote host. Telnet Client and Server - Logon to and from a remote host. Client is now based on PC/3270. REXEC and RSH Client and Server - Execute command on and from a remote host. SNMP Agent and Manager - Communicate and obtain status information and manage network resources. WebExplorer - WebExplorer 1.1a supports HTML 3.0 and contains numerous fixes and updates. Remote Access Client - The Remote Access Client provides LAN access via dial connections (asynchronous, synchronous, ISDN or X.25). The Remote Access Client can dial into either a LAN Distance Connection Server or OS/2 Warp Server. In addition, a Remote Access Client can dial directly to another Remote Access Client to establish a virtual network. Mobile Office Services - Mobile Office Services transparently caches files while connected to an IBM-compatible or NetWare network and allows the user to continue using these files even when disconnected. When the network connection has been re-established, Mobile Office Services detects the differences between the cache and the files on the network and prompts the user for resolution. Win32s 1.25a Support - Win32s 1.25a application support. SOM/DSOM - Provides a language independent, cross platform architecture for sharing objects. Device Driver Update - Updates of many device drivers shipped in previous versions of OS/2. PCMCIA Enhancements - The latest level of code that supports IBM PCC and other OEMs. This consists of card and sockets services, cardbus and multi-function card support, an enhanced user interface as well as updates to warm docking. Advanced Power Management 1.1- Update to support suspend, resume and device management and control. Enhanced IDE Support - Enhanced to support the SMART standard for hardware failure alert and DMA capabilities for PCI IDE hard drives. Printer Support - New printer device drivers included. Multimedia Support - Direct Audio Routines (DART) used by speech navigation and dictation. DIVE Enhancements - Enhancements for hardware video accelerators, video capture, MPEG playback and full-screen support for applications needing high frame rates. 1.2 Performance differences from previous OS/2 versions Some of the changes that gave OS/2 Warp 3 better performance than previous OS/2 versions are as follows. A new link parameter, /EXEPACK, which was used on many system files when OS/2 Warp was compiled, compresses resource and message files by 20 to 30%. These files load 2 to 3% faster, on average. Some page frames are "zero compressed" (similar to PKZIP) and put in areas of memory that is already allocated but that has extra space. This allows a page frame to be swapped from RAM to RAM (which happens in nanoseconds) versus swapping from RAM to the hard disk (which takes milliseconds). Up to 250 of these pages can be moved to different areas of RAM instead of the SWAPPER.DAT file. Many system DLLs (dynamic link libraries) are now being swapped out to the hard disk. This makes it much quicker to recall them. A lot of overhead is required to load a shared DLL from the file system versus saving it and its associated system data in the SWAPPER.DAT file. The SWAPPER.DAT file, when initialized, is put in the largest contiguous space of the FAT file system. Previously the system was not concerned with swapper fragmentation. The internal file system in the SWAPPER.DAT file now has a 4 KB cluster size instead of 2 KB. This change makes swapping a 4 KB page more efficient. Some system DLLs have been merged, so less overhead is needed to load them into memory and notify all tasks of their locations. For example, PMMERGE.DLL contains three old system DLLs: PMGRE.DLL, PMSHAPI.DLL, and PMWIN.DLL. Although these DLLs are still in OS/2 Warp, their function is simply to forward their calls to PMMERGE.DLL. Some other DLLs that are merged are DOSCALL1.DLL and MMPM.DLL. A method of addressing called basing puts some system DLLs at an absolute address to reduce the overhead of finding them in memory. OS/2 Warp 4 contains all of the aforementioned changes as well as enhancements to the FAT file system (FAT deserialized and optimized asynch read ahead), CD-ROM asynch read ahead, page tuning many system DLLs, single input queue, as well as changes to the memory caching default size and system loader fixup scheme. Furthermore, there are changes made to improve TCP/IP throughput and faster response time for network administration commands. 1.3 Software prerequisites OS/2 Warp 4 can be installed over the following systems. OS/2 1.3 OS/2 2.0 and 2.1 OS/2 for Windows OS/2 for Windows plus Service Pak DOS 3.1 or greater with Windows 3.1, 3.11 DOS 3.1 or greater with Windows for Workgroups 3.10 or 3.11 OS/2 Warp V3.0 OS/2 Warp with WIN-OS/2 V3.0 OS/2 Warp Connect V3.0 OS/2 Warp Connect with WIN-OS/2 V3.0 over itself in a totally empty partition TIP: OS/2 Warp 4 shipped at the equivalent of OS/2 Warp 3 with Fixpak 20 level. 1.4 The software configuration menu Many OS/2 parameters can be modified during or after installation. This section overviews those paramters that can be modified during the installation process. Each of these tunable parameters will be discussed in greater detail later in this document. From the OS/2 Setup and Installation panel, there will be three menus: Options, Software Configuration, and Help. NOTE: From the Options menu bar choice, you can: Install the selected features Format other drives Access an OS/2 command From the Software Configuration menu bar, you can specify the location for the swap file. You can also change the OS/2 and DOS configuration settings of your system. The OS/2 parameters that you can change are: Printer monitor buffer size Buffers Disk cache Maxwait Swap Minfree Threads Memman Protect Memman Swap Priority The DOS parameters that you can change are: Break Open FCBS Protected FCBS RMSize Chapter 2 Capacity Planning 2.0 Capacity planning The OS/2 operating systems, in particular OS/2 Warp 4, have evolved to take advantage of new technologies and strategies, such as client/server, voice navigation and dictation, internet aware desktop, JAVA support, etc. The resulting changes in the software infrastructure and system platforms require careful system planning to ensure OS/2 Warp 4 performs as a cost-effective information technology platform. Personal computers have limited resources to handle increasingly complex operating systems and applications. Resources such as CPU, disk, and memory must perform well together and deliver adequate response times to satisfy a user's requirements. Hence, capacity planning becomes an important issue when determining the impact of OS/2 Warp 4 on your system. To ensure the correct level of resource to meet and support your computing needs, you need to: Assess the current performance levels of your system. Identify any additional computing needs you will have in the near future. Determine the performance impact these needs will have on the existing configuration. If the performance impact is not acceptable, tune the current configuration for optimal performance and perform step 3 again. If performance is still unacceptable, a more detailed performance analysis becomes necessary to determine where the performance bottleneck is occurring. Additional hardware may be required. By employing validated performance analysis and tuning methodologies and systems tools, you can accurately measure the utilization of your computer resources. This will the smooth integration of OS/2 Warp 4 into your existing environment. 2.1 OS/2 Warp 4 resource requirements Your system performance depends largely on how OS/2 Warp 4 and the underlying hardware work together. The 32-bit OS/2 Warp 4 operating system exploits the Intel 32-bit X-86 architecture through the flat memory model, native protected mode and virtual 8086 mode though paging and multiple virtual DOS machine sessions. The flat memory model allows for a very large (4 GB) single address space referred to as flat memory. Call/return times are reduced by eliminating the need to switch segments manifested in a typical 16-bit application. While all previous 16-bit APIs are still completely supported, the remaining OS/2 Warp 4 APIs are now 32-bit, thus improving performance and enhancing function. In addition, OS/2 also provides support for advanced disk hardware, Direct Memory Access for its parallel port, and many industry standard audio and video devices. Like previous versions of OS/2, OS/2 Warp 4 supports all existing 16-bit and 32-bit OS/2 applications, most DOS applications including those that use EMS, XMS or DMPI memory in the full screen or windowed virtual DOS machine session. Windows application support is also included in OS/2 Warp by providing both Windows 3.1 and Win32s environments for running Windows applications seamlessly on the OS/2 workplace shell, in concurrence with DOS and OS/2 applications. Several of OS/2 Warp 4's new features and enhanced functions require a powerful processor, more physical memory, and a larger hard drive. If you experience sluggish response time after installing OS/2 Warp 4 you can use some of the performance tools shipped with OS/2 Warp 4 to determine the cause of the problem and apply the following guidelines to obtain the best performance out of OS/2 Warp. Without Voice Navigation and Dictation: Intel 486 DX 33MHz or higher processor 12MB to 16MB of RAM Installation by selecting options requires 100MB-300MB disk space Easy Installation (OS/2 Warp preselected options) requires 200MB disk space 640x480 resolution display with 256 colors recommended (SVGA monitor) IBM compatible mouse is required OS/2 compatible CDROM drive and 1.44MB 3.5" diskette drive "A" 14.4K or higher modem or network connection for Internet access OS/2 supported sound card for multimedia With Voice Navigation and Dictation, OS/2 Warp 4 requires For speech navigation, Intel Pentium 75MHz or higher with 4MB additional memory For speech navigation and dictation, Intel Pentium 100MHz or higher with 8MB-12MB additional memory Installation by selecting options requires 100MB-300MB disk space Easy Installation (OS/2 Warp preselected options) requires 200MB disk space 640x480 resolution display with 256 colors IBM compatible mouse is required diskette drive A and CDROM driver 14.4K or higher modem or network connection for Internet access Sound card for multimedia or speech High quality microphone for speech (requires Active Noise Cancellation feature, ANC, for optimal performance.) 2.2 Main reasons for causing system performance bottlenecks in OS/2 Warp 4 There are three areas where performance can be constrained: memory, disk, and processor. Memory constraints occur when you attempt to run more programs in memory than there is actual memory. The hardware allows OS/2 to execute beyond the real memory by allowing paging or swapping, i.e., to allow code and data to be moved from memory to disk. As memory becomes scarce, system performance degrades as access time to code or data written to disk now includes the disk access time required to read back into memory information that was moved out. It probably also required moving off to disk some information to make room for the returning information. This activity can cause extremely poor performance. Disk constraints occur when your application requires large number of disk accesses quickly. Since the hard disk must complete one I/O request before starting the next request, multiple requests can start to queue, causing poor performance. Between I/O requests, the hard disk must move the head from one location to the next. Thus a hard drive with slow seek time will become a major bottleneck if the support for high I/O rate is required. The processor constraints occur when processor-bound instructions and multiple concurrent tasks require heavy processor time. Since OS/2 is a true multitasking system, the likelihood of becoming CPU constrained is increased as the number of concurrent task execution increases. In the following sections, we will examine the functions of major system components and how each would contribute to the overall system performance. 2.3 Hardware issues 2.3.1 CPU The CPU plays a vital role in system performance. It is responsible for processing the millions of instructions necessary to produce work. The speed of the microprocessor (and also the amount of installed memory) typically has the largest effect on the performance of the computer system. The microprocessors system clock rate, measured in millions of clock steps per second, or Megahertz (MHz) dictates the speed at which the system runs. The faster the clock rate, the faster the performance. Most CPU's in today computer systems are at least 80486 chips. The 80386SX, SL and SLC, as well as the 486SLCx have an external data path of 16 bits while 80386DX and 486DX and above processors have an external data path of 32 bits. This distinction becomes significant as the shift towards 32-bit software begins to proliferate the market. 32-bit instructions, processing on a 16-bit CPU must become two 16-bit instructions in order to be processed. The processor with a 16-bit external data path can result in about 10% lower performance than an identical processor of the same speed with a 32-bit data path. The following charts illustrate the various processor chips, their respective speeds and their cache option. Comparison of 386 Processors Comparison of 486 Processors Note: The 486SLC2 processor runs internally at twice the speed of the rest of the system, such as 40/20MHz producing performance faster than a 25MHz 486DX, but less than a 50MHz 486DX. It is up to 271% better than a 20MHz 386SX, up to 99% faster than a 20MHz 386SLC, up to 53% faster than a 20MHz 486DX and up to 20% faster than a 25MHz 486DX. The 50/25MHz 486SLC2 is faster than an Intel 33MHz 486DX. The 75/25MHz 486SLC3 processor is up to 40% faster than the 50/25MHz 486SLC2, 187% faster than a 20MHz 386SLC and up to 424% faster than a 33MHz 386SX. The 486SLC is identical to the 486SLC2 in all respects, except clock doubling. It is approximately equivalent in performance to a 486DX, but adds power management features the 486DX lacks. The 486DX2 processor runs internally at twice the speed of the rest of the system, such as 50/25MHz or 66/33MHz, producing performance faster than a 33MHz 486DX, but less than a 50MHz 486DX. The 486DX4 processor runs internally at three times the speed of the rest of the system, such as 75/25MHz or 100/33MHz, producing performance in excess of a 486DX2. Comparison of Pentium Processors The Pentium Pro processor (also known as the P6 processor) is the latest generation processor family from Intel. The Pentium Pro processor includes significant architectural innovations and enhancements, like Dynamic Execution, multiple branch prediction capabilities, 256K L2 cache in the package, etc. The result is a significant boost in system performance -- especially with 32-bit software. Since OS/2 and especially OS/2 Warp 4 is a 32-bit operating system, the Pentium Pro processor delivers optimal performance with 32-bit OS/2 applications. Summary of performance data for P6-150 and P5-133 A summary of the performance data between P6 and P5 is given below. The experiment was done on a P6 processor running at 150 MHz, 256 KB Level 2 cache, 32MB of physical memory, 1.28 GB IDE hard drive, Matrox PCI display adapter card. All measurements were done with the display resolution set at 1024x768x256 except where it is noted. The P5 system is from Micron Technologies. It has a P5 processor running at 133 MHz, 256 KB Level 2 cache, 32 MB of physical memory, 1 GB SCSI hard drive, and Matrox PCI display adapter card. Again, all measurements were done at 1024x768x256 resolution except where it is noted. OS/2 Warp Connect was used on both systems with no special options or setup. OS/2 Warp was installed with multimedia support using the default installation options. The FAT file system was used in the study with default dynamic disk cache size. There are five types of benchmarks used in the study: Trade magazines benchmarks such as BYTEmark from BYTE Magazine Industry Standard benchmarks such as the OPENGL CDRS and DX from the Graphics Performance Council 32-bit OS/2 applications benchmarks such as VisualAge from IBM, SAS from SAS Institute Inc., MicroStation from Bentley Systems, and ColorWorks from SPG Inc. Multimedia benchmarks such as software MPEG playback, direct video APIs interface DIVE and 3-D driver interface BRender from Argonaut Technologies Inc., and finally The mix 32- and 16-bit OS/2 business applications such as Describe, Amipro, Lotus 1-2-3 and IBM C++ used in OS/2 program development. In general, the average ratio of performance improvement for P6 over P5 is 1.63. In particular, the ColorWorks and DIVE benchmarks seem to gain the most, more than 2X improvement, while others tend to gain somewhere around 50%. The BRender 3-D library from Argonaut Tech which is built upon DIVE seems to take the full advantage of the P6 floating-point performance. Its ratio of performance is around 1.88, almost twice of that P5. It is also observed that applications that are computational intensive such as 3-D graphics rendering in the MicroStation benchmark gain about 1.5X on the P6 platform. The industry standard graphics test from GPC using the CDRS and DX viewsets also scores well on the P6, around 1.5 times over P5. The legacy OS/2 applications benchmark which is a mix of 32- and 16-bit code ran only 30% faster on the P6. The chart below illustrates the average measurements and the performance ratio between the two systems. System bus The bus is the internal pathway along which signals are sent from one part of the computer to another. Personal computers typically have one of three bus architectures: Industry Standard Architecture (ISA) bus, often referred to as "AT bus". This bus is the 16-bit bus initially developed for IBM's AT (Advanced Technology) computers. The bus includes 8-bit slots for downward compatibility with earlier adapters, but includes 16-bit slots for improved, AT-compatible adapters such as 16-bit VGA adapters. It supports data rates of 8MB/sec. Micro Channel Architecture (MCA) bus. A proprietary 32-bit bus used in IBM PS/2 computers. This bus operates at 10MHz with burst data rates of up to 80MB/sec. Enhanced Industry Standard Architecture (EISA) bus. A 32-bit bus that, unlike the MCA bus, is backward compatible with ISA adapters. Peripheral Component Interconnect (PCI) bus. A 32-bit bus standard used in most new computers. This bus provides the greatest performance of all the above, operating at 33MHz with burst data rates of up to 132MB/sec. The system bus plays an important role in balancing system performance. If you have a high speed CPU and video adapter on an ISA bus system, this system is not well balanced. The CPU is a great deal faster than the system bus. For example, if your processor is a 486DX 33MHz CPU and you have an ISA bus VGA video adapter (remember, ISA is 16-bit), the system has the capability to transfer data at speeds greater than 33MB/second but the ISA bus can only transfer data at 8.33MB/second. While this isn't a very practical example, it illustrates the potential for an imbalanced system caused by a system bus that is slower than the processor, particularly when running I/O intensive applications such as databases. 2.3.2 Memory Memory, often referred to as random-access memory (RAM), is the computer's primary storage space used to execute instructions. Memory is generally available on the system board and/or on adapter cards. The speed of the memory is expressed in nanoseconds, with the lower the value the better. Memory speed is important in that faster memory provides faster access to the information stored there. Memory location is also important. Memory on the system board (motherboard) can generally be accessed by the processor faster than memory located on an adapter card. The adapter card memory requires access through the system bus, slowing down the time from processor to memory. Having adequate memory in a system will also reduce the disk access because paging or swapping is decreased. If the operating system does not have to handle paging I/O requests, system performance will improve. If the swap file is large, and changing from one application to another results in I/O requests, the system would benefit from additional memory or performance tuning. A cache is a small group of very high speed memory chips and the support circuitry that manages them. Some microprocessors have a built-in cache while others have it residing outside the microprocessor on the system board. Others have extended the cache built into the microprocessor with a second-level cache designed to feed information into the microprocessors internal cache more efficiently. This is called a "level 2" cache. The memory cache increases the overall performance of the computer system by automatically gathering commonly needed information, such as program instructions and data, and then very quickly providing it to the microprocessor the next time the data is requested. Since the memory cache can respond much more quickly than the system's memory, the system's performance is improved every time the information contained in the cache is used. A small internal cache is faster than a larger external cache, due to the delay in accessing an external cache. OS/2 Warp 4 memory working set The working set for OS/2 Warp 4 is defined as the set of memory (pages) referenced in the last n time of certain measurement intervals. The working set includes both resident and locked pages. The following data represent the working set of different OS/2 Warp systems running under different environments, connected (with TCP/IP and NetBIOS installed) and not connected (base operating system only). The test was performed on a 486/33 system with 16MB of memory, 1.6GB IDE hard drive, FAT file system, and Tseng SVGA ET4000 display adapter. OS/2 Warp 3 3,996KB OS/2 Warp 3 Connected 6,212KB OS/2 Warp 4 4,996KB OS/2 Warp 4 Connected 6,860KB It is important to note that the number of unique pages accessed during a sliding window of 12 snapshots (1 minute) taken on the same system but with 40MB of memory (unconstrainted memory scenario) is as follows. OS/2 Warp 3 12.68MB OS/2 Warp 3 Connected 19.97MB OS/2 Warp 4 Connected 25.27MB 2.3.3 Disk drive Fixed disk performance is important to the overall performance of a computer. The performance of a fixed disk refers to the rate at which information can be located and transferred between the fixed disk and the memory. The disks average seek time, average latency and data transfer rate determine how the disk subsystem will contribute to or hinder overall system performance. These disk performance statistics are generally available from the disk manufacturer. Data on a fixed disk is stored in concentric rings, or tracks, on the disk surface. To read from a fixed disk, the actuator must first move the read/write head to the proper track. The average time it takes for the actuator to move the read/write head over the proper track is called the average seek time - usually expressed in milliseconds. Once the read/write head is located over the right track, it must wait until the disk rotation brings the right part of the track under the read/write head. The average time it takes for this to happen is the average latency of the drive - also expressed in milliseconds. Finally, after the proper track and proper part of the track are positioned under the read/write head, the information is transferred between the disk and the disk controller circuitry, one bit at a time in a continuous stream as the disk surface passes underneath the read/write head. The speed at which this is done is called the data transfer rate and is expressed in millions of bytes per second (MB/second). It is important to consider the disk drives performance statistics when purchasing a computer system. These statistics play an key role in the overall performance of the system. The shorter the seek time and latency the better. The higher the data transfer rate the better. All of these factors determine how the disk subsystem will contribute to or hinder overall system performance. OS/2 Warp 4 provides significant new function compared to OS/2 Warp Connect. Depending on the selections you make during installation, this version will require a maximum of 350 megabytes of hard disk space. The following table indicates how much disk space is consumed by each selectable component. It will be very useful in planning your installation. NOTE: If you have a very large partition (> 1 GB) formatted for FAT, the install will require 550 MB due to the large cluster size required by the FAT file system. Failure to provide sufficient hard disk space will result in installation failures and will require re-installation. ===> DO NOT ATTEMPT INSTALLATION WITH BARELY ENOUGH SPACE. During the installation process, you will be asked to select which of the following install options: Advanced Install or Easy Install. If you selected the Advanced installation option then you would see the OS/2 Setup and Installation screen which enables you to configure the software. The list of software that you can select in OS/2 Warp 4 is as follows. TIP: Selecting All Features During Advanced Install - A Full install requires approximately 275 megabytes for code and data, 25 megabytes for SWAPPER.DAT, and 50 megabytes for any additional programs and applications. Deselecting Features During Advanced Install - A single 350 megabyte partition is the least complex environment. You can deselect some features or install some features to partitions other than the OS/2 boot partition. The following features allow partition selection during install: Speech BonusPak Connect Java Multi-Media Windows Emulation Using Easy Install - Easy install selects a subset of OS/2 features for installation on the C: partition. This selection is based on the hardware configuration. For example, Multi-Media is installed if a sound device is detected. Some features that are not installed during Easy Install are: Opendoc Java Toolkit and Samples BonusPak Security Some optional BITMAPS Some documentation for Command Reference and REXX The selection panel for Connect allows installation of features consistent with the connection hardware and software. Easy install requires between 150 and 200 megabytes depending on your selections and hardware configuration. 2.3.4 Video subsystem Computers can provide video support on the system board or on an adapter. Video support is identified by the mode and resolutions that they can support. The greater the resolution and number of colors, the better the picture. Unfortunately, better resolution and more colors usually translate into slower system performance. VGA (Video Graphics Array) was introduced in 1987 and soon became a popular video standard. VGA systems are capable of displaying 16 colors at a resolution of 640x480. SVGA (Super VGA) refers to a group of high-resolution analog video adapters. SVGA provides higher resolutions and more colors than VGA adapters. Most SVGA adapters with 1MB of video memory are capable of displaying 256 colors in a resolution of 1024x768. XGA (Extended Graphics Array) was introduced by IBM in 1990. It is an accelerated analog video adapter which uses a coprocessor to provide hardware-assisted drawing functions. XGA-2 is a newer version of XGA which includes performance improvements, higher refresh rates, non-interlaced mode and support for resolutions of 1360x1024 with 16 colors. Many new video adapters are coming available that can't be classified as VGA, SVGA or XGA. They are using new and more powerful chipsets that show improved performance over SVGA by using on-board processors for some graphics functions. These chipsets are called accelerators. They include previously discussed XGA chipsets, as well as new accelerated SVGA chipsets such as S3, Weitek P9100, Mach 8/32 and Tseng W32i. Two main features on your graphics card affect video performancethe first, the card's onboard memory, and the other the card's accelerator chip and bandwidth. There are three common types of onboard memory found on graphics cards, Dynamic RAM (DRAM), Window RAM (WRAM), and Video RAM (VRAM). DRAM is cheap, but its single-ported design requires a system clock cycle to reset the chips before each refresh of screen data. VRAM is dual-ported, able to deliver data and reset in a single clock cycle for inherently faster performance. It's also more expensive than DRAM. WRAM is a form of VRAM that does faster fills and accellerates video playback and animation. WRAM is not only dual-ported, but also requires fewer transistors than VRAM, hence lowering costs while providing a few graphics-specific speed-ups such as support for aligned bit-block transfers (BitBlts). The type of graphics memory you choose is almost as important as the amount. DRAM is the least expensive, but its single-ported design makes it relatively slow; dual-ported VRAM is more costly, but much quicker for true-color work. A variety of other single-ported (such as EDO DRAM and SDRAM) and dual-ported (such as WRAM) variations fall between the two on the price/performance scale. The graphics accelerator cards architecture, or more specifically, it's bandwidth also plays a crucial role in graphics subsystem performance. Bandwidth is defined as the amount of information that can move along the cards data path. The bandwidth between the graphics card's accelerator chip and its display memory can be as wide and quick as graphics card manufacturers care to make it. Over the last several years, 32-bit graphics accelerators have yielded largely to 64-bit accelerators, with 128 bit cards becoming more and more common. To keep refresh rates high, team a fast 64-bit or 128-bit accelerator with dual-ported display memory to handle the volume of data that true-color and multimedia applications demand. 2.3.5 COM Port Machines with a buffered UART (Universal Asynchronous Receiver/Transmitter), for example the 16550A will have better communications performance than machines without buffering, for example the 16450. The performance of DOS communications programs is particularly impacted by using systems with these buffered communications chips on their COM ports. The MODE command can be used to determine whether your system has this buffered UART. A buffered UART at level 16550A or equivalent is nearly essential for high speed communications. Use the command: MODE COMx, where x is the communications port number. If you see "BUFFER=N/A" then you do not have a buffered UART for that port. 2.4 Software issues 2.4.1 Planning for growth File systems OS/2 Warp supports two file systems for use on your hard disks: FAT and HPFS (High Performance File System). The HPFS file system supports file and directory structures different from the FAT file system. The OS/2 Warp HPFS file system is much better than the old FAT system used in DOS, although FAT is retained for backwards compatibility reasons and is used for diskettes. HPFS is faster, allows long file-names, is less likely to lose data and uses disk-space more efficiently than does FAT. Another advantage of HPFS over FAT is in the area of Extended Attributes (EAs). EAs are data attached to a file and used to provide information about the file they are attached to. For example, the name of an object that appears in an OS/2 folder or on the OS/2 Desktop is stored in EAs. In HPFS, EAs are part of the HPFS file control block which is read when the file is opened. In FAT, EAs are stored in a separate file in separate clusters and require additional I/O to access them, and are therefore slower. HPFS has two limitations. Native DOS applications can't see HPFS formatted disks (although DOS programs running in OS/2 Warp can and there exists a driver to read HPFS disks from plain DOS), and the HPFS driver takes approximately 264KB of memory. TIP: Install only the file system needed by the operating system accessing your data. If you plan to boot a DOS or Windows system natively (via the dual boot option), then any data that will be accessed must exist on a FAT disk partition. However, If you will only be running DOS and Windows applications in an OS/2 Warp VDM (Virtual DOS Machine), then the file system can be either HPFS or FAT. Also, when accessing a file on a server, and the server file system is HPFS, you do not need to install HPFS on your local client machine. HPFS only needs to be installed on a computer when a partition on a local hard disk is formatted as HPFS. FAT is best suited for disk partitions that are 80 MB or less in size or that have a limited number of files installed. Usually, 256 files is a good target, with up to 500 acceptable. The number of files become important because FAT files are allocated based on a cluster size. The cluster size is determined by the size of the disk partition and can be 2K, 4K, 8K or higher. Since most file sizes are not an exact multiple of the cluster size, disk space is not optimally used. For example, installing DOS, Windows and OS/2 Warp on a 100MB partition resulted in 2.2 MB of disk space that could not be used. A 100MB partition will use a 2K cluster size. If you were to use a 540MB partition size, then your cluster size would be increased to 16K and a significantly greater amount of disk space will be lost. HPFS files are allocated based on a 512 byte granularity instead of a cluster size, therefore fragmentation is greatly reduced. Also HPFS is especially efficient when handling large partition sizes, > 100 MB, and large numbers of files, > 500. One thing you should look out for is to not allocate more than 5000 files in a sub-directory or directory. Allocating more than 5000 files can lead to degraded performance. The HPFS file system shipped with the OS/2 Warp product has a cache limit of 2 MB. It is recommended that HPFS be installed on systems with 16MB of memory or more and large disk partitions. If HPFS is not being used, you should remark the HPFS driver from the CONFIG.SYS file. This driver uses 264KB of RAM. If the HPFS statement configures a HPFS cache, the maximum amount of RAM consumed by the cache and the driver could be at much as 2312KB (264KB for the file system driver + 2048KB for the max cache size = 2312KB). Even if there is no HPFS partition on your system, it will cost between 200 and 250K in working set memory, as well as the space for the HPFS cache. If you are installing OS/2 Warp on an existing DOS and or Windows system, you should not install HPFS. When your system is up and running, you can check the working set of your system. If there is enough free memory and you wish to create a HPFS partition, then you can use selective install to install the HPFS support. Remember that any data stored in the HPFS partition can not be accessed if you boot your machine under DOS. Use HPFS if your application uses many small files or a very large data file like in database applications. Both FAT and HPFS file systems have disk caching, lazy writing and read-ahead. File system parameters can be changed after installation. The default values set by the installation procedure are good for average users. It is recommended that when you set up your hard disk, you create a minimum of 3 partitions. One will be for the operating system(s), one for your applications and static data files, and another for dynamic data files and temporary files. Decide whether you want to use Boot Manager or Dual Boot. If you select Dual Boot, then OS/2 must be installed with the FAT file system. Chapter 3 Performance Monitoring and Tuning 3.0 Response time Response time is the key indicator used in measuring and tuning a system. It can be defined as the time interval from when a user initiates a process until that process has completed. For example, response time can be measured as the interval of time from when a user presses the enter key to initiate a database query until the data is displayed on the screen. The productivity of a OS/2 Warp 4 user is largely dependent on adequate system response time. The user should be able to interact freely with the application without having to wait for the system to respond. Response time requirements may vary among users and even among applications. A three to fifteen second response time may be adequate for a complex inquiry application that is only run occasionally, but a sub-second response time may be required for more frequently used applications such as word processors or spreadsheets. This section introduces the concept of performance monitoring, measurement, and tuning. It also covers performance tools shipped with OS/2 Warp 4 as well as tools available from external sources. 3.1 Performance monitoring Monitoring the performance of critical system resources is invaluable in identifying the cause of performance problems. Performance monitoring is the first step to take in solving performance-related issues. There are numerous performance monitoring tools that measure response time, disk activity and other variables that impact the performance of the system. These tools will assist in understanding possible causes and subsequent resolution of the problem. Once the problem has been identified, the process for alleviating it can begin. This process, or tuning methodology, needs to be well thought out and documented through to resolution. 3.2 Benchmarking A benchmark is a test that measures the performance of a system or subsystem on a well-defined task or set of tasks. Test scenarios, or benchmarks, are designed to achieve consistent repeatable results during the tuning process. Benchmarks are necessary for creating an effective, systematic approach to performance tuning your system. The benchmark should represent a work environment very similar to the one being tuned. Benchmarking is essential for measuring progress while tuning a system. Characteristics of a good benchmark include: Each test is repeatable. Each iteration of a test is started in the same system state. There are no functions or applications active in the system outside the ones being measured unless the scenario includes some amount of other activity going on in the system. Do not even have them started and sitting idle, since this will use up RAM resources and increase the likelihood of swapping. Benchmarks can also be used as monitoring and diagnostic tools. By running a benchmark and comparing the results against a known configuration, you can potentially pinpoint the cause of poor performance. Similarly, a developer can run a benchmark after making a change that might impact performance to determine the extent of the impact. 3.3 OS/2 Warp 4 performance tools The OS/2 WarpCenter provides a CPU monitor utility that shows the system activity and a disk space monitor program that shows the amount of disk space available in all partitions. In addition, there are many other operating system utilities that you can use to check your system integrity if you perceive a performance degradation has occurred. They are as follows. CHKDSK - disk integrity checking HDMON - hard disk monitoring PROFILER - file repairing PSTAT - process monitoring RMVIEW - resource allocation monitoring SYSLEVEL - operating system and corrective service level analyzing TRACE - events tracing 3.3.1 CHKDSK CHKDSK can detect lost clusters on your disk. These are parts of files that the system did not save completely and that take up space on your disk. If CHKDSK finds these, it prompts you with a message asking if you want to convert lost chains to files. If you type a Y (yes), CHKDSK converts these parts into files that you can examine and delete to save space on your disk. If you type an N (no), CHKDSK deletes these parts of files from your disk. The files CHKDSK creates from lost chains follow this naming convention: FILEnnnn.CHK (nnnn is a sequential number starting with 0000). TIP: To start chkdsk, type the following command in any OS/2 window. CHKDSK /x where x = F or V or C or F:n The /C and /F:n parameters shown at the end of the CHKDSK command syntax are only used with the High Performance File System. Type this command at a DOS command prompt to produce a memory storage report. CHKDSK gives accurate information only when a hard disk is not in use. CHKDSK does not work in DOS sessions on drives that have an ASSIGN, JOIN, or SUBST command in effect. Also, CHKDSK does not work on network drives. You should run CHKDSK occasionally on each disk to check for errors. If errors are found, CHKDSK displays the error messages and produces a status report. If you enter a file name after CHKDSK, the OS/2 operating system displays a status report that gives the number of noncontiguous areas occupied by the file. CHKDSK also produces a storage report. To search for and recover lost file clusters on the drive that is the hard disk from which you normally start the OS/2 operating system, follow these steps: Insert the system installation diskette in diskette drive A. Restart the system. When the Logo panel appears, remove the installation diskette and insert diskette 1. Press Enter to continue. Insert diskette 2 when requested. At the first text panel that appears (Welcome to OS/2), press Esc. If the drive to be searched is a drive formatted for HPFS, the file UHPFS.DLL has to exist on the same diskette as CHKDSK, or UHPFS.DLL has to exist in a directory in the LIBPATH statement. To display the LIBPATH statement, enter TYPE \CONFIG.SYS in the drive of the disk that the system started from. In order for the system to display error messages, the file OSO001.MSG has to be on the same disk as CHKDSK or it has to exist in a directory in your DPATH statement. To display your DPATH statement, enter DPATH at the command line. Run CHKDSK from drive A, specifying drive C as the drive to be checked. To recover lost clusters on the drive that contains CHKDSK, you can also copy CHKDSK to another drive and run it from that drive by specifying the drive and path. If the /F parameter is not specified and there are open files, CHKDSK may report lost clusters on the disk. This happens when open files have been written to but the file allocation table (FAT) is not updated. If many clusters are reported as lost, use the /F parameter to search the disk. 3.3.2 Hard Disk Drive Monitor The Hard Disk Drive Monitor uses Self-Monitoring, Analysis, and Reporting Technology (SMART) to monitor the status of physical drives in the system. A hard disk drive must be SMART-compatible for the Hard Disk Drive Monitor to be able to detect potential failures in that drive. NOTE: To start the monitor, type the following command in an OS/2 window. HDMON TIP: The Hard Disk Drive Monitor program periodically checks the status of the SMART-compatible drives being monitored. In the Configuration screen, you can specify how frequently the status is checked. To view the Configuration screen, click on Options from the menu bar, and then click on Configuration. The value shown in the Configuration screen is the monitoring interval, in minutes. Click on the up-arrow or down-arrow button, or type a new value, to change the monitoring interval to any value from 1 to 60. The Hard Disk Drive Monitor checks status only if disk activity has occurred during the monitoring interval. The APM Scan option, which is enabled and disabled in the Configuration screen, allows the Hard Disk Drive Monitor to monitor drives while the computer is in an Advanced Power Management (APM) reduced-power state. If the APM Scan option is enabled, the Hard Disk Drive Monitor will check the drives every four hours, even if the computer is in a reduced-power state and no disk activity has occurred. If the APM Scan option is disabled, monitoring will occur only if disk activity has occurred during the monitoring interval. To enable the option, click on the radio button that reads, "Enabled." If the Hard Disk Drive Monitor indicates that a drive has a potential failure condition, you should back up that drive immediately, to avoid losing valuable software and data if the drive actually fails. However, the Hard Disk Drive Monitor is not to be used as a substitute for regular backups of the drive and may not detect all predictable failure conditions. Hard drives will also fail for reasons that are not predictable through use of SMART. In some situations, the Hard Disk Drive Monitor will not detect a potential failure condition soon enough to allow you to back up the drive before it fails. The main Hard Disk Drive Monitor screen displays a Drive icon for each hard disk drive being monitored. The colored indicator on each Drive icon indicates the status of that drive, as follows: Green indicator - OK The Hard Disk Drive Monitor has not detected any degrading or potential fault conditions in the drive. Flashing red indicator - Alert The Hard Disk Drive Monitor has detected a degrading or potential fault condition in the drive. In this case, you should back up the information on the disk immediately. Grayed-out indicator - Not SMART-compatible The drive is not SMART-compatible. The Hard Disk Drive Monitor can return basic information (in the Drive Information screen) about drives that are not SMART-compatible, but it cannot detect degrading or potential fault conditions in these drives. 3.3.3 PROFILER Analyzes files on the specified drive and displays information about unusually fragmented files that do not meet the multimedia format requirements. You can use the PROFILER utility to correct files that do not meet multimedia requirements. A fragmented file, although logically intact, is divided into blocks that are stored in different physical locations on the disk. Fragmentation is often necessary for the efficient use of disk space, but unusually fragmented files (those divided into small, scattered blocks) are not well suited for multimedia applications. TIP: To start the utility, type the following command in an OS/2 window. PROFILER /x d:/pathname where x=C corrects file that do not meet the multimedia requirements x=Q turns off the display of progress information x=R analyzes all files in the subdirectory tree below the specified path name x=V displays fragmentation information about every file analyzed The PROFILER utility fixes a file that fails to meet the multimedia format requirements by copying it to a temporary file, deleting the original file, and then renaming the temporary file. This process reduces the amount of fragmentation in the file. The amount of fragmentation that is reduced depends upon the fragmentation of the drive's free space. If the 386 HPFS Local Security is installed, ADMIN privilege is required to execute the PROFILER utility. To capture all of the information displayed by the PROFILER utility, redirect its output to a file (for example, PROFILER /V D:\DIR > C:\PROFILER.OUT). 3.3.4 PSTAT PSTAT displays process status information, such as current processes and threads, system semaphores, dynamic-link libraries, and shared memory. PSTAT helps you determine which threads are running in the system, along with their current status and current priorities. TIP: This command also aids you in determining why a given thread is blocked (waiting for a system event), or why the thread's performance is slow (low priority compared to other threads.) Moreover, it displays the process ID that has been assigned from each process. The process ID can then be used as input to the TRACE utility program for tracing on a per-process basis. To start PSTAT, type the following command in an OS/2 window PSTAT /C displays the current process and thread -related information PSTAT /S displays system semaphores information for each thread PSTAT /L displays DLL libraries for each process PSTAT /M displays shared information for each thread PSTAT /P:id displays information related to the ID of the specified process Enter this command without a parameter to display information about the following: Current processes and threads System semaphores Shared memory for each process Dynamic-link libraries 3.3.5 SYSLEVEL This utility displays operating-system service level TIP: To start the program, type the following command in an OS/2 window. SYSLEVEL The following message will appear while SYSLEVEL checks the current corrective service level of your system Please wait... Once the corrective service level has been determined the following will be displayed on your monitor. C:\OS2\INSTALL\SYSLEVEL.OS2 IBM OS/2 Base Operating System Version 3 Component ID 562107701 Type 0 Current CSD level: XR00000 Prior CSD level: XR00000 An example of the information displayed and an explanation of the displayed items follows: C:\OS2\INSTALL\SYSLEVEL.OS2 The subdirectory and file containing the information. IBM OS/2 Base Operating System The system name. Version 3, Component ID: The version, release, and modification number, followed by the Component ID of the system. Current CSD Level: nnnnnnn The current corrective service level. Prior CSD Level: nnnnnnn The prior corrective service level. 3.3.6 RMVIEW This utility displays the allocation of the hardware resources in your computer. TIP: This is useful when resolving resource conflict or when installing a new piece of hardware on your computer. Type this command at an OS/2 prompt followed by any of its optional parameters. If no parameters are entered, RMVIEW defaults to the physical view which can also be specified with the /P parameter. This is useful when resolving resource conflict or when installing a new piece of hardware on your computer. RMVIEW Command: /P Parameter Displays the physical view. If no parameters are entered, this is the default view. This view displays the physical components in your computer, such as adapters, along with the resources claimed the physical component. RMVIEW Command: /P1 Parameter Displays the physical view with planar chip set devices. RMVIEW Command: /D Parameter Displays the device drivers that have registered with the Resource Manager along with the physical resources and logical devices that they claim. RMVIEW Command: /DA Parameter Displays the driver view with snoopers. RMVIEW Command: /D1 Parameter Displays the device drivers with planar chip set devices. RMVIEW Command: /DC Parameter Displays the detected view of the current boot tree only. RMVIEW Command: /DP Parameter Displays the detected view of the previous boot tree only. RMVIEW Command: /L Parameter Displays the logical view of your computer resources. RMVIEW Command: /IRQ Parameter Displays the claimed interrupt levels (IRQ) sorted by value. RMVIEW Command: /IO Parameter Displays the claimed IO ports above hex 100 sorted by value. RMVIEW Command: /IOA Parameter Displays all claimed IO ports sorted by value. RMVIEW Command: /DMA Parameter Display the claimed memory regions sorted by value. RMVIEW Command: /MEM Parameter Displays the claimed memory regions sorted by value. RMVIEW Command: /HW Parameter Displays the hardware tree showing the hardware configuration of your computer. RMVIEW Command: /SO Parameter Displays /IO, /IOA, /IRQ, /DMA, /MEM sorted by owner. RMVIEW Command: /R Parameter Displays raw data. When this switch is used with /P, /P1, /D, /D1, or /L, the Resource Manager data is displayed in a lower level format. 3.3.7 TRACE The System Trace facility is used to record a sequence of system events, function calls, or data. The record is usually produced for debugging purposes. After the trace data is recorded, the System Trace Formatter is used to retrieve it from the system trace buffer and format the data to your display, printer, or file. NOTE: This command is intended to be used with the assistance of your technical coordinator. TIP: The OS/2 operating system processes TRACE statements in the order in which they appear in the CONFIG.SYS file; the effects of the statements are cumulative. If any part of a statement is incorrect, the OS/2 operating system ignores the statement. If you do not specify TRACE in the CONFIG.SYS file, events are not traced. However, if you have a TRACEBUF statement in CONFIG.SYS, this allocates a trace buffer. Then, you can trace events by entering the TRACE command at the OS/2 command prompt. If TRACE=OFF or TRACE=ON appears in the CONFIG.SYS file without a TRACEBUF statement, the system allocates a 4KB trace buffer. If you do not specify TRACE or TRACEBUF statements in the CONFIG.SYS file, OS/2 does not allocate a trace buffer and system tracing is not available. If a system problem can be duplicated without a system failure, the TRACE OFF function allows tracing to be stopped after the problem has been re-created. This allows the state of the trace buffer to be preserved from the time the TRACE OFF command is processed. The tracing mechanism is performance critical; therefore, no statistical processing of recorded data is performed by the tracing routines. If you need to use the System Trace facility, your technical coordinator will provide the buffer size. When the trace is complete, you can use the trace formatter (TRACEFMT) to organize the data into a report. This helps you isolate causes of problems in the OS/2 system by formatting the information placed in the trace buffer by the Trace facility. An OS/2 enhancement to the Trace utility program allows you to trace a given process or set of processes, so that you can focus on the events of the specified process without intermixing events from other processes in the system. This reduces the possibility of trace-buffer overflow by minimizing the number of events which are recorded. Analyzing the formatted trace data is quicker and easier because only events of the specified process are recorded and displayed. You use the TRACEFMT utility program to format the information placed in the trace buffer by system trace. TRACEFMT is a Presentation Manager application running in a window. TRACEFMT can capture the current contents of the trace buffer, or can read an unformatted trace file. This trace entries can be searched, or a subset can be chosen to narrow the displayed entries to only those of interest. The TRACEFMT application provides choices on the menu bar. Your technical coordinator will analyze the formatted data to help diagnose your problem. You can use TRACEFMT as many times as required to diagnose a problem without having to restart the system. TRACEGET is used to capture the contents of the trace buffer into a file. This file can then be loaded into the trace formatter, or sent to your service coordinator. A technical coordinator will analyze the formatted data to help you diagnose problems. 3.4 OS/2 external monitoring tools There are several useful external tools for monitoring and tuning the performance of an OS/2 system some of which are discussed in the following. 3.4.1 System Performance Monitor/2 (SPM/2) - IBM Corp. SPM/2 2.0 is an integrated package of powerful facilities that enable you to monitor resources such as CPU, RAM and disk on your local and remote OS/2 systems. SPM/2's ability to graph this resource information enables you to look at real-time data as well as saved data for any monitored workstation on the LAN. SPM/2 performs the following tasks: Collects critical resource utilization data from the CPU, memory, file I/O, swap file, FAT and HPFS cache, physical disk, printer, and communication ports. Records performance data to disk for processing at a later time. Provides a real-time or historical graphical representation of how system resources are being used (CPU, disk, RAM,and swap activity); it also has the ability to play back previously recorded data. Produces detailed resource utilization reports from recorded data that can be summarized by workstation, application, process or thread. Provides in-depth OS/2 memory analysis information that includes the working set and a view of OS/2 control blocks. Monitors remote OS/2 LAN Requesters and servers. 3.4.2 SimpleCT - Clear and Simple, Inc. This tool, excellent for novice users, is a simple aid for tuning your system. It provides a way to change the CONFIG.SYS file and remove unnecessary files to free disk space. 3.4.3 CPU Monitor - BonAmi Software Corp. CPU Monitor offers a selection of performance and analysis tools for OS/2 users. Using Presentation Manager graphics, CPU Monitor displays real-time information for estimated CPU utilization, OS/2 process relationships, and more. CPU Monitor enables you to dynamically suspend and resume execution for individual threads and helps you detect and stop runaway, invisible, and background programs. 3.4.4 OS/2 Resource Monitor (OSRM/2)- C.O.L. Consulting, Ltd. This integrated group of applications is designed for real-time tracking and performing capacity planning functions for system resources including CPU, disk, memory, and applications. OSRM/2 monitors most of the paramters that SPM/2 does but it also works on symmetric multiprocessor (SMP) systems. 3.5 Performance tuning In general, performance tuning consists 4 steps: define the performance problem identify the bottlenecks by using monitoring and measurement tools remove bottlenecks by applying a tuning methodology, and finally repeat steps 2 and 3 until a satisfactory resolution is found. 3.5.1 Problem definition A sound understanding of the problem is critical in monitoring and tuning the system. You should understand the problem in detail rather than at a high level like "the system is slow". Ask specific, pointed questions, like: If the system is slow, how slow is it? What activity is slow? How long does the activity usually take? Does the problem occur when using a particular application, when accessing a disk, or communicating remotely? What performance do you expect or believe is reasonable? Be able to quantify the problem and when possible, obtain supporting data. As you are obtaining additional data, your problem description should become more focused. You should also find out all you can about what has recently been done to this system that may have affected its performance. You may find that additional software has been installed, additional communications sessions were defined, or even that some of the memory has been removed. Also consider the environment this system is working in. Environmental factors that can affect performance might include: Stand-alone or LAN environment Communication links Hardware configuration (memory, disk space, CPU, coprocessor) Applications running concurrently Once you understand the problem, you should define a realistic goal for improvement. How will you know when the performance is acceptable? It may be easy to identify your desired goal, but you might not immediately know whether this goal is realistic. 3.5.2 Identifying bottlenecks After you have identified the problem and the environmental factors that affect it, you can narrow down possible causes and solutions. This involves identifying possible bottlenecks, verifying whether they are indeed bottlenecks, and devising possible solutions to alleviate them. Be aware that once a bottleneck is identified and steps are taken to relieve it, another bottleneck may suddenly appear. This may be caused by several variables in the system running near capacity. Bottlenecks occur at points in the system where requests are arriving faster than they can be handled, or where resources, such as buffers, are insufficient to hold adequate amounts of data. Finding a bottleneck is essentially a step-by-step process of narrowing down the causes of the problem: Identify the hardware component In a networked environment, try to determine whether the bottleneck is occurring on the client or the server. If neither system seems to have a problem, check the physical network and all connectivity devices. Identify the resource that is affected A performance monitoring tool can be used to monitor system resources and indicate which resource is being overused. Consider what is happening internally when the function is performing poorly Consider all the steps undertaken by the poorly performing function. For example, if the system is sorting a remote database file, there should be heavy CPU and memory utilization. If you see a lot of disk activity this may indicate excessive memory paging and/or poor cache utilization. 3.6 Tuning methodology Now that you have identified potential bottlenecks and have selected a performance monitoring tool, you need to have a plan to move forward into the tuning process. There are five basic components in a performance tuning methodology that apply to all cases: Define the problem Hypothesize solutions Design tests Set values and run tests Analyze the results 3.6.1 Define the problem Use the process described earlier in this chapter to ensure a complete and thorough understanding of the problem. 3.6.2 Hypothesize solutions Narrowing in on the cause of a performance problem is an iterative process, involving identification of possible bottlenecks and verification of whether they are indeed bottlenecks. It is important to make sure the correct bottleneck has been identified before pouring in resources to alleviate it. If not, unnecessary expense may be incurred by adding resources that do nothing to improve performance. For example: RAM could be added to a database server in order to increase the size of the buffer pool, only to find out that the problem is inappropriate indices, not a small buffer pool. A faster CPU could be purchased, hoping to improve response time. Although response time may indeed improve slightly with a faster CPU, it might later be discovered that the real bottleneck is insufficient buffer space on the adapter card or a slow fixed disk (in the case of an I/O intensive application). Hence, it is important to think through several possibilities and test them out. Once a bottleneck is identified, and resources have been applied to relieve it, another bottleneck may suddenly surface. This may be because several things in your system are running near capacity. Note however that there will always be something in the system that is the gating performance factor. Depending on the workload, this factor may or may not be an actual bottleneck. To increase the capacity at a bottleneck, think of ways to offload the work arriving there or improve its capacity, through hardware or software. From there, come up with hypotheses of things that may relieve bottlenecks and improve performance. Possible examples follow, though in no particular order. Note that changing the values of system parameters may only be one avenue to pursue. Faster hardware - e.g. CPU, DASD, communications medium (i.e. adapter or connection) Parameter tuning Additional RAM or disk space Changing the topology - i.e. how many workstations are going through (or to) what servers, controllers, etc. Using or increasing a memory cache In a swapping system, perhaps reducing the size of buffers or numbers of active applications. Application redesign 3.6.3 Design tests Given the possible solutions, design tests to try them out. Make sure that these tests are repeatable. Approach the testing effort methodically, testing each hypothesis one at a time. Prioritize your ideas from "most likely to have an impact with minimal effort" to "least likely to have an impact with great effort". Start with a single hypothesis and decide what you are going to do to prove whether it is true or false. For example, if your hypothesis is to "add more buffer space," then only change the parameter needed to accomplish this. If the hypothesis is proven false, restore the parameter and move to the next hypothesis and start the cycle again. 3.6.4 Set values and run tests Setting new variable values and running tests is probably the most iterative part of the entire process. In this stage, response time should be measured for specific, repeatable events, both before and after changing a value. Change only ONE thing at a time. Changing more than one variable will cloud results, since it will be difficult to determine which variable has had what effect on system performance. The general rule may perhaps be better stated as "change the minimum number of related things." In some situations, changing "one thing at a time" may mean changing multiple parameters, since changes to the parameter of interest may require changes to related parameters. (For example, in Database Manager, changing the BUFFPAGE parameter may require an increase to the SQLENSEG parameter.) Start in the same state. Start each iteration of your test with your system in the same state. For example, if you are doing database benchmarking, make sure that the values in the database are reset to the same setting each time the test is run. Check for Control. You can never control your testing too much. This mainly involves carefully documenting each step in your tests - to the point of being scientific. This will ensure that you're not doing things differently from run to run, and that you're not introducing new variables that could cloud the results. Writing things down is also essential for going back and recalling exactly what you have and have not tested since it is easy to forget! Work on one problem at a time. It is easy to lose control and focus when working with a large number of parameters and components. Additionally, it is likely that anomalies or problems will come up during testing, such as functional problems. While it will be necessary to resolve problems that obstruct your goal of identifying bottlenecks and improving performance, problems that are not directly related to this may need to be put aside for a while, or given to another group to work on in parallel. The point here is to maintain your focus. 3.6.5 Analyze the results Analyzing the results of your tests involves being able to interpret and explain the data you obtain in order to understand what's going on in the system. Information explaining the results should be available with the software tools used for the testing. SPM/2 has very detailed help screens that explain all the parameters it monitors. Chapter 4 Basic OS/2 Tuning Procedures 4.0 Introduction After installation, there are changes that you can make to improve the performance of OS/2 Warp 4. Some of these changes like changing desktop settings are general in nature and will make slight improvements in the overall system performance. These changes can be done by any user and are listed in this section. Other changes are more specific for certain system components such as the system swap file, file systems, the CONFIG.SYS file, etc. These changes require certain knowledge of how various OS/2 components interact with each other. Such changes are listed in the next section, "Advanced OS/2 Tuning." 4.1 General system changes 4.1.1 The OS/2 WarpCenter The OS/2 WarpCenter is a customizable, object-based status bar that can remain on top of all maximized windows. You can use the OS/2 WarpCenter to perform OS/2 desktop operations and display information about your system. You can display battery usage, system activity, and disk space monitors. OS/2 WarpCenter monitors the CPU activity on your computer and displays it through the system activity pulse. It indicates periods of low, medium, and high activity. TIP: The system activity monitor program runs at a very low priority level, therefore, it does compete with your application for CPU cycles. For optimal system performance, you can turn the monitor program off. To turn the system activity monitor program off: Select "OS/2 System" -> "WarpCenter" Click on the right mouse button and select "Properties" Click "Monitors" Remove the check from Show system activity pulse Exit 4.1.2 The OS/2 Warp Guide OS/2 Warp 4 provides the OS/2 WarpGuide folder which contains guidance objects for selected computer tasks. Some objects have cue cards available to assist you with each step of the task. NOTE: OS/2 WarpGuide is a task-mentor who uses cue cards or wizards to help you complete a task. As a result, anytime you start a task that OS/2 WarpGuide knows about, a OS/2 WarpGuide button appears on the title bar of the window you are using. If your profile indicates you are a novice for the current task, OS/2 WarpGuide automatically shows you cue cards and shades unneeded parts of the window. The shading does not change the way a window works. You can still click on the areas under the shading. If your skill level is intermediate, OS/2 WarpGuide shows only cue cards. If you are an expert, cue cards are not shown, but you can access a cue card for the current task by clicking on the OS/2 WarpGuide button. TIP: The appearance of the cue cards will affect your system performance because it requires processing time. Therefore, you should turn the cue cards off if you feel you don't need the OS/2 WarpGuide assistance. To permanently turn cue cards off: Display the pop-up menu for the OS/2 WarpGuide folder. Click Properties, and then click Appearance. Remove the check from Assist Me with selected tasks. 4.1.3 Animation Animation is the process of drawing boxes on the screen that appear to grow in size culminating in an open folder or session. This gives a nice appearance when drawing the screen objects. Disabling animation will save a small amount of system resource that would otherwise be used to expand and contract graphical brackets around folders as they are opened or closed TIP: On memory constrained systems, the performance when opening folders and starting sessions can be improved by disabling animation. To disable desktop animation: Select "OS/2 System" -> "System Setup" -> "System" -> "Window" Select "animation" -> "Disabled" Exit 4.1.4 Changing display drivers During installation, OS/2 Warp detects your system display adapter hardware and installs the appropriate display drivers and resolutions. However, the higher the resolution, the more memory that is used. Very high resolution and color support can require 100 to 200K of physical memory. Since the display drivers and resolutions have great impact on your system performance, you can tune your display subsystem as follows. To change the display resolution: Select "OS/2 System" -> "System Setup" -> "System" -> "Screen" Select the desired resolution Exit Shutdown and reboot the system To change the display driver: Select "OS/2 System" -> "System Setup" -> "Install/Remove" -> "Selective Install" Click on Primary Display -> Click OK Chose the desired display type Follow remaining selections Shutdown and reboot the system TIP: If you are changing from one type of SVGA hardware to another type, it is best if you change the display driver to VGA before you change hardware, then change back again to the correct display driver type. This will keep you from having a display/hardware mismatch that could necessitate reinstalling OS/2. You can also revert to VGA during system boot. 4.1.5 Minimize applications and folders The OS/2 system responsiveness may be better if you minimize frequently used applications between use since accessing a minimized application is always faster than starting the same application. This is also true when frequently working with the same folders. TIP: When you have applications or folders that you use often, leaving them open at shutdown (or placing them in the startup folder) will cause them to be loaded at system boot time, thus allowing you to access them much faster. However, placing the application in the startup folder will prolong the system boot time because it has to start the application. You can use the Minimized Window Viewer to view the applications and folders that have been minimized. 4.1.6 Starting applications Performance when starting applications can be improved by reducing the application load time. TIP: To reduce the search time for OS/2 to locate the application, start the application from its own directory or call the application with a fully qualified path. Using the icon to start the application is optimal because the icon will have the exact path for the executable file if properly installed. 4.1.7 Use startup folder Applications and folders can be opened several ways. You can open your application faster if you know how to take advantage of the Startup Folder and the OS/2 multitasking feature. TIP: Applications that were left open at shutdown will reopen at boot time after the Workplace Shell is started. Applications placed in a STARTUP.CMD file will also be processed at boot time, after the Workplace Shell is started. Applications and folders placed in the Startup Folder will be opened with the processing overlapping the startup of the Workplace Shell. 4.1.8 Multitasking considerations OS/2 is true multitasking operating system. It manages multiple applications running concurrently by sharing system resources. If your resource is limited, e.g., memory, processing power, then you would see performance degradation when executing multiple applications. To alleviate these problems, you can use the following tips. TIP: Run only programs that are necessary. Close all applications that are not needed. Verify that the settings are correct for the application, especially DOS applications that may poll, so that useful tasks are always processing. Limit background processing to improve foreground performance by increasing or reducing the application's session priority. 4.1.9 Schemes and color palette You should use solid colors and avoid the use of bitmaps for desktop and folder backgrounds. These particular options use more memory and require more processing time to display them. 4.1.10 Sounds Deselect the System Sounds options, unless you like the sounds when opening and closing your folders. It costs between 250 and 300K in working set just to hear the sound. An additional 40K or so of working set can be saved by executing DINSTSND.CMD in an OS/2 command session. This will unhook the system sounds from the OS/2 desktop. To get them back, you would execute INSTSND.CMD. 4.1.11 Font palette There are many fonts supplied with OS/2 and even more supplied with various word processing and graphics applications. Avoid the temptation of installing more fonts than are necessary by installing only the ones that you will use. You can always install others later if you should need them. This simple exercise of restraint will improve performance when loading applications that use fonts. Each installed font uses at least 2KB of memory, even if it is not being used. This number increases significantly when you actually use the font in an application. When you have a choice of choosing which kind of fonts to install on your system, remember that outline fonts are more efficient than bitmapped fonts because the characters are cached into memory. With bitmapped fonts, the entire character rendering is loaded into memory. Bitmapped fonts are defined for a specific screen resolution and display type, whereas outline fonts are scaleable and tailored to the specific device installed on the system. 4.1.12 System logo Setting the System Logo option to none can save some time when loading applications that check this parameter to see how long to display their applications logo. 4.1.13 Mouse Mouse pointers are basically bitmaps. The amount of memory used will be affected by which mouse pointer style you choose. If you activate the comet cursor, this will cost additional memory and processing time whenever the mouse is being used. 4.1.14 Desktop utilization It is important to close folders and applications when they are no longer being used. Although a large portion of unused programs will be swapped out, some portion of every program is non-swappable and will use memory for as long as the program is active. The more active programs in the system, the more memory will be used. As placed ( or Flowed) icon views offer faster performance than Gridded views for folders containing multiple objects. The operating system has to retrieve an objects coordinates from the OS2.INI if a Gridded view is being used. Flowed views display one object after another without keeping track of specific coordinates. You should also restrict the use of programs which, as a class are more decorative than useful. That is, the amount of function they provide is low compared to the memory they use. These programs, like screen savers, clocks and animated icons should not be used on systems with a limited amount of memory. Chapter 5 Advanced OS/2 Tuning 5.0 Introduction There are many more tuning parameters for an OS/2 system than discussed in the previous section. This section will detail advanced tuning parameters and explain how they can be used to further improve your system performance. This chapters focus will be on tuning parameters that optimize the Workplace Shell, task scheduling, CONFIG.SYS and AUTOEXEC.BAT files. 5.1 Tuning tips for the Workplace Shell This section discusses the workplace shell and its tuning tips. 5.1.1 The PMSHELL environment The Workplace Shell starts automatically when OS/2 is booted. The Workplace process is the one under which all the Workplace Shell classes are loaded and initialized. Therefore, objects representing Workplace Shell classes and their subclasses must run on this process. The Workplace process is actually launched from the Shell process, which is the process indicated in the SET PROTSHELL= statement in the CONFIG.SYS file. Once the Shell process is running, it starts the Workplace process. The Shell process is responsible for restarting the Workplace process in the event that it is ended as a result of a trap. NOTE: The PROTSHELL= statement in the CONFIG.SYS file indicates which process is to be launched as the Shell process. The SET RUNWORKPLACE= statement in the CONFIG.SYS file indicates which process is to be the Workplace process. In the default configuration, both the PROTSHELL and RUNWORKPLACE environment variables are set to PMSHELL.EXE. PMSHELL.EXE is designed to distinguish between being started as the Shell process versus being started as the Workplace process. 5.2 Task scheduling The OS/2 operating system performs prioritized, preemptive, multitasking. Prioritized means that the operating system does not divide CPU time equally among all threads. All programs do not get equal access to the CPU. A prioritizing, time-slicing strategy is used to allocate access to the CPU among competing threads. Each thread has a priority and the operating system executes the highest priority thread that is ready to run. Programs with higher priorities (a real-time robotics application, for example), are given access to the CPU before programs with lower priorities. If a thread with a higher priority than the currently running thread becomes ready to run, the current thread is stopped immediately, or preempted, and the higher priority thread is given the CPU. The lower priority thread does not get to complete its time slice until later. Threads of equal priority are given CPU time in a round-robin manner. Preemptive means that the multitasking activity needs no cooperation from the executing programs. The operating system maintains control over executing programs, and stops, or preempts, them when their time slice with the CPU is over or when a higher priority program is ready to run. CPU scheduling is based on the following four priority classes, ranked in order from lowest priority to highest: Idle-time (priority 1) Regular (priority 2) Server (priority 4) Time-critical (priority 3) Each class has 32 levels of execution ordering. Scheduling parameters are user-selectable at the time the system is started or can be varied dynamically based on system load. Depending on a thread's priority class and level, the operating system periodically gives each thread in each process a small slice of CPU time. Threads with higher priorities always run before threads having lower priorities. A thread runs until its time is up or until a thread with a higher priority is ready to run. At that time, the operating system preempts the thread and starts another thread. Threads can also voluntarily relinquish the CPU (for example, by calling DosSleep). The amount of time in each time slice is defined by the TIMESLICE command in the CONFIG.SYS file. The TIMESLICE command can be used to customize the size of the time slices that a thread gets. The default is for the operating system to dynamically vary the size of the time slice based on the activity of the thread and the overall system load. When a thread is created (using DosCreateThread), it inherits the priority of the thread that started it. DosSetPriority enables threads to change their priority classes and levels in response to changes in their execution environments. DosSetPriority enables a thread to change its own priority, or the priority of any thread within its process. DosSetPriority also enables changing priorities for the entire process and for descendant processes. Within each class, the priority level of a thread can vary because of a DosSetPriorty request or, if dynamic priority variation is being used, because of action taken by the operating system. TIP: The TIMESLICE command in CONFIG.SYS sets the minimum and maximum amount of processor time allocated to processes and programs for both OS/2 and DOS sessions. The first parameter selects the minimum TIMESLICE value in milliseconds. This value is the minimum amount of time a thread is to be processed before yielding the processor to a thread of the same priority level. This value must be an integer greater than or equal to 32. The second parameter selects the maximum TIMESLICE value in milliseconds. The value of this parameter is the maximum amount of time a thread can be processed before yielding processor time. This value must be an integer greater than or equal to the minimum value, and less than 65536. The default is dynamic time slicing, which varies the size of the time slice depending on system load and paging activity. Dynamic time slicing is designed to give the best performance in most situations. 5.3 The CONFIG.SYS file OS/2 provides a considerable amount of flexibility in the settings in the CONFIG.SYS file. You can change these settings for exploration and exploitation of OS/2 performance. If properly done, customizing the CONFIG.SYS file will improve OS/2 Warp 4 performance and reduce memory requirements significantly. NOTE: After making your change and before rebooting the system, make sure you save three files CONFIG.SYS, OS2SYS.INI, and OS2.INI. You need those files to recover to the last saved setup. If the system fails to reboot after changes were applied, use the ALT-F1 feature to get back to the OS/2 prompt for recovery. The following is a list of statements in the CONFIG.SYS file that you can change to impact performance. BASEDEV= The BASEDEV statement is used to load base device drivers. Device support for disks, diskettes, printers connected to the workstation, and other devices, is loaded with the BASEDEV statement. A device driver is a file that contains the code that the OS/2 operating system needs to recognize a device and correctly process information received from or sent to that device. A base device driver is one that is needed when the OS/2 operating system is first started. NOTE: Unlike the DEVICE statement, the BASEDEV statement cannot contain either drive or path information because the OS/2 operating system cannot process such information at the stage of the startup sequence when the BASEDEV statements are processed. The root directory of the startup partition is first searched for the specified file name, then the \OS2\BOOT directory of the startup partition. If drive or path information is included in a BASEDEV statement, an error is generated. In addition, BASEDEV statements are not necessarily processed in the order in which they appear in your CONFIG.SYS file. The extensions of the file names specified in the BASEDEV statements are examined; the statements are then processed in the following order of file name extensions: SYS BID VSD TSD ADD I13 FLT DMD Files with other file-name extensions will not be loaded. TIP: If several BASEDEV statements load file names with the same extension, those files will be loaded in the order in which they appear in the CONFIG.SYS file. Remark any BASEDEV statements that supports devices that are no longer used on the system being tuned. Swap file tuning Applications consist of groups of segments that can be either loaded into physical memory at the same time or called when needed. Memory over commitment occurs when a program requires more memory than is actually available in the computer. The operating system handles memory over commitment by moving some of the information stored in memory off to a file known as the swap file located on the hard drive. This activity is called swapping or paging. Swapping makes it possible for applications to overcommit the amount of physical memory in the system. In OS/2, the file where the data is written to is the SWAPPER.DAT file. Although an application cannot control swapping, you can specify whether the system can swap memory by including the MEMMAN command in the CONFIG.SYS file. NOTE: If the system is started from a hard disk, swapping (SWAP) is the system default; from a diskette, the default is no swapping (NOSWAP). TIP: Be aware that disabling swapping will severely limit the number of applications that the user will be able to run concurrently; if there is not enough physical memory present, the operating system might not even boot. The following discusses the two commands MEMMAN and SWAPPATH in the CONFIG.SYS file that you can use to tune the swap file. MEMMAN= If the MEMMAN command specifies SWAP, the operating system writes selected memory pages to the SWAPPER.DAT file whenever insufficient physical memory exists to satisfy an allocation request. This is the default choice. If the MEMMAN command specifies NOSWAP, the operating system does not swap memory. TIP: To permit swapping, type the following in the CONFIG.SYS file: MEMMAN=SWAP To run a time-dependent application and prevent the OS/2 operating system from swapping the contents of storage to disk, type the following in the CONFIG.SYS file: MEMMAN=NOSWAP To permit swapping and enable a program to receive an error return code when there is not enough space in the swap file for the program to run, type the following in the CONFIG.SYS file: MEMMAN=SWAP,COMMIT To permit swapping and enable APIs to allocate and use protected memory, type the following in the CONFIG.SYS file: MEMMAN=SWAP,PROTECT SWAPPATH= The exact amount of memory available to an application depends on the amount of physical memory in the machine and the amount of free disk space on the partition that contains the SWAPPER.DAT file. The location of the SWAPPER.DAT file can be specified by including the SWAPPATH command in the CONFIG.SYS file. NOTE: With the SWAPPATH command, you can specify the location of the SWAPPER.DAT file, the amount of free disk space to reserve in the partition which will contain SWAPPER.DAT, and the initial size of SWAPPER.DAT. The operating system adjusts the size of SWAPPER.DAT as necessary, leaving other files on the drive and the requested free space untouched. SWAPPATH=drive:\path minfree initial TIP: To store the swap file in the C:\OS2\SYSTEM directory, type the following in the CONFIG.SYS file: SWAPPATH=C:\OS2\SYSTEM To specify 512KB (minfree) as the amount of free space left for other applications, type the following statement in your CONFIG.SYS file: SWAPPATH=C:\OS2\SYSTEM 512 To specify 18MB as the initial size of a swapper file on a partition with 20MB of free space and a minfree value of 2MB, type the following in the CONFIG.SYS file: SWAPPATH=C:\OS2\SYSTEM 2048 18432 Minfree value There are two parameters in the swappath statement: minfree and initial. Both are expressed in KB, and the system rounds them to megabytes at boot time. The minfree value determines at what time you will receive a warning message that disk space has been reduced too low. If the remaining amount of free space after the swapper.dat file extension, is less than the amount (in megabytes) of the minfree value, a warning message is displayed. TIP: The default minfree value is 2048 KB. The best minfree value for a system running several concurrent applications is generally 4096KB. If you are working with large databases, increase the value to 6144 KB or larger. This value gives you plenty of time to handle warning for a shortage of DASD space for the SWAPPER.DAT. Initial value The initial swap file size is preallocated to a minimum size during system boot up, depending on the amount of physical memory installed in the system. This helps prevent the excessive overhead of growing the swap file during paging operations. TIP: The default initial value is 2048 KB When your applications are being executed, a larger swap file might be needed than what has been preallocated. The OS/2 kernel will increase the size of the swap file in 1 MB increments if more swap space is needed. When one or more pages need to be swapped out from memory, the kernel will determine if these pages already have swap space allocated in the swap file. If yes, the swap manager will simply write them into the allocated swap space. If not, then new swap space will be allocated in the swap file. If there is no space left in the swap file, the swap file has to grow. The swap manager then writes the pages to their new swap space. Swap space in the swap file is normally not freed up until the corresponding memory is deallocated. When the swap file grows beyond the initial size, then the system must manage the swap file to determine when compaction can take place. This additional overhead will cause a performance penalty. TIP: To keep system performance optimal, make sure the initial swap file size is large enough to handle your applications. To determine the correct size of your swap file, check the size of the SWAPPER.DAT file occasionally. The size specified in the CONFIG.SYS should be at least 1 or 2 MB larger. The following data taken on a 486/33 with 16MB of physical memory represents the size of the SWAPPER.DAT file after OS/2 Warp is booted: OS/2 Warp 3 2,048KB OS/2 Warp 3 Connected 6,144KB OS/2 Warp 4 12,288KB OS/2 Warp 4 Connected 18,432KB To create a contiguous swap file - If you are using the FAT file system, IPL your system under DOS, delete the SWAPPER.DAT file, defragment the disk partition where the swap file will be located, and then IPL your OS/2 system. This should keep your swap file from getting fragmented. The swap file begins compaction when the amount of free swap space in the swap file exceeds 1.5 MB. The compaction is done at system idle time. During compaction, free swap space will be moved to the end of the swap file. After compaction, when the amount of free space at the end of the swap file is greater than 1 MB, the swap file will be decreased, in 1 MB decrements. NOTE: The swap file never gets smaller than the initial size. BREAK= BREAK instructs the system to check if you pressed the Ctrl and Break keys together before the system carries out a program request. Pressing and holding the Ctrl and Break keys together stops a command from completing its task. NOTE: BREAK can be entered in the CONFIG.SYS file, in a batch file, or at the command prompt. If BREAK is ON, processing might be slower, but the operating system will probably intercept Ctrl+Break faster. Setting BREAK=ON allows you to leave a program even if it produces few or no standard device operations (such as a compiler). For example, if a program is being compiled and it meets an error or loop, it is important to have a way to stop compilation. The default is OFF To have the system check for Ctrl+Break when you request it, enter the following statement in your CONFIG.SYS file: BREAK=ON BUFFERS= Sets the number of disk buffers that the system uses. NOTE: The disk buffer is a 512-byte block of storage the system uses to read and write blocks of data that do not occupy an entire sector. You can increase the speed of your system by increasing the value specified for BUFFERS. However, when you increase the number of disk buffers, you decrease your available memory. You might want to experiment with the number of buffers to get maximum performance. Additional buffers can cause some applications to run more slowly because there is less memory available for the application to keep data. More frequent read and write requests than are otherwise necessary might then result. By using the disk buffer, the operating system can read and write blocks of information into the buffer in preparation for processing the information. While the information is in the buffer or being processed, the input device can begin reading new pieces of information so the processor does not have to wait unnecessarily to process information and program instructions. The processor can complete its operation, because the next block of information to process is already in the buffer area. Some other situations might also occur. For example, suppose the processor completes its work and there is no information in the buffer to process. The processor must wait until the next block of information is read into memory by the input device. Similarly, if the input device reads information into the buffer before the system has time to process the records, the buffer might reach its capacity and have to wait until the system accepts more information to process. TIP: Depending on how many programs you work with at a given time, you might want to experiment with this number the number of disk buffers to maximize performance on your system. If you run many programs in OS/2 sessions, you can increase the speed of your system by increasing the value specified for BUFFERS (for example, BUFFERS=70). However, remember that when you increase the number of disk buffers, you decrease your available memory by 512 bytes for each buffer specified. Additional buffers might cause some programs to run more slowly because there is less memory available for the program to keep information. This can result in more frequent memory swapping, which will slow down performance. Buffers is also considered as a cache for FAT entries. It should not be reduced below 60, even on low memory systems because it will, as a result, increase the number of disk reads that are done to the FAT directory entries and therefore bring down your system performance. CODEPAGE= Selects the system code pages (defined character sets) to be prepared by the OS/2 operating system for code-page switching. You must include the appropriate DEVINFO statements (for keyboard and video display) for both code pages in the CONFIG.SYS file. NOTES: The display and printers each default to a native device character set. The keyboard and country information default to the national language code page supported by the country code specified in the COUNTRY statement. When your computer displays output, the characters used are defined by a specific code page. Each code page contains letters, numbers, symbols, and other characters common to a particular country. Each character has a number (1 to 255) assigned to it. For example, character number 212 might display one character in the U.S. code page (437), but a different one in the Portuguese code page (860). Therefore, you should use your default national-language code page unless you are working with files that were created using another code page or unless you are planning to send files to other countries. When using a file that was created in another code page, you can switch to that code page or to the multilingual code page. We recommend you use the multilingual code page (850) whenever possible because it supports many languages. For example, suppose you create a file using code page 850 and send it to someone in another country. When that file is viewed or printed using code page 850, it is identical to your copy. If, however, the file you send was not created using the multilingual code page, the receiver will need to switch to the code page that it was created with. Once code pages are defined on your system, you can switch back and forth between the prepared code pages. In the OS/2 operating system, a program or user can change the active code page. Two pages can be active simultaneously. Code pages for the keyboard and display can be set independently; however, code-page switching can take place only in displays that support code-page switching, including the following products: IBM Enhanced Color Display IBM Personal System/2 Displays IBM Enhanced Graphics Adapter IBM Personal System/2 Video Graphics Array IBM Personal System/2 Display Adapter IBM Personal System/2 8514/A If you plan to switch code pages and are using a code page other than 850, we recommend that you do not name your files or subdirectories with accented characters. To ensure you will be able to access files prepared with another code page, be sure to use only the characters A-Z and 0-9 when naming files and directories. This prevents file access problems when switching between code pages that have different character capitalization rules. TIP: Incorrect, partial, or mismatched setup of statements for code-page selections, country code, keyboard layout, display, or printer can cause ineffective switching between code pages. This will in turn cause performance degradation. If your printer is correctly set up for code-page switching, print jobs started in a DOS session or in the current OS/2 session, after a successful CHCP command is issued, will print in the new code page. DEVICE= Installs a device driver by specifying the path and complete file name of the device driver in your CONFIG.SYS file. NOTE: A device driver is a file that contains the code needed so that the OS/2 operating system can recognize the device and correctly process information received from or sent to that device. It loads standard default drivers that support standard system display terminals, keyboards, printers, diskette drives, hard disk drives, and serial devices. You can, however, replace these or add other devices by coding and loading a device driver using DEVICE statements in the CONFIG.SYS file. DEVICE statements are processed in the order in which they appear in the CONFIG.SYS file. The default device drivers are: ANSI.SYS - Allows extended screen and keyboard support for DOS sessions. COM.SYS - Allows OS/2 application programs or system programs, such as SPOOL, to use serial devices. EGA.SYS - Allows DOS programs that require Enhanced Graphics Adapter support to be run. EXTDSKDD - SYS Allows access to an external diskette drive referencing a logical drive letter. LOG.SYS - Allows system error logging using the SYSLOG utility program. MOUSE.SYS - Provides support for pointing devices. OS2ASPI.DMD - Supports existing device drivers written to Adaptec's ASPI interface. OS2CDROM.DMD - Provides CD-ROM support for OS/2 sessions. PMDD.SYS - Provides pointer draw support for OS/2 sessions POINTDD.SYS - Provides mouse pointer draw support. TOUCH.SYS - Provides support for touch devices. VDISK.SYS - Installs a simulated disk called a virtual disk. VEMM.SYS - Provides DOS Expanded Memory Manager. VXMS.SYS - Provides DOS Extended Memory Specification. TIP: Install only device drivers that are needed. For example, if you do not plan to run DOS and Windows applications, you can remove VEMM.SYS and VXMS.SYS. The following are potential candidates for removal from the CONFIG.SYS file. VDISK COM and VCOM CDROM and VCDROM PCMCIA BASEDEV=IBM2FLPY.ADD BASEDEV=IBM1FLPY.ADD BASEDEV=IBM1S506.ADD BASEDEV=IBM2ADSK.ADD BASEDEV=IBM2SCSI.ADD BASEDEV=OS2SCSI.DMD BASEDEV=PRINT01.SYS BASEDEV=PRINT02.SYS APM.SYS and VAPM.SYS EGA.SYS EXTDISKDD.SYS. TOUCH.SYS Change the DEVICE=\OS2\MDOS\VEMM.SYS statement to VEMM.SYS 0. This statement loads a driver that provides Expanded Memory Support (EMS) for DOS sessions. Adding a 0 variable causes OS/2 to not allocate EMS to a DOS session unless you override the setting in that session's DOS Settings. Most programs do not require EMS, so disabling EMS by default will save RAM. Change the DEVICE=\OS2\MDOS\VXMS.SYS statement to DEVICE =\OS2\MDOS\VXMS.SYS /XMMLIMIT=4096,0 /UMB. This will allocate a maximum of 4MB of SMS for the entire system, but it will not give any XMS memory to a DOS session unless you override the setting in an individual session's DOS Settings. DOS sessions won't get XMS by default, which will save memory (since most DOS programs can run without XMS). If you replace /UMB with /NOUMB, no DOS session will be able to use upper memory blocks. If you want DOS=HIGH to be the default, use /XMMLIMIT=4096,64 /UMB instead. Each session will need at least 64KB of XMS. DEVICEHIGH= Loads a specified DOS device driver into an available upper memory block (UMB) for a DOS session. NOTE: DOS device drivers are normally loaded into low memory (below 640KB) in DOS sessions. However, when you type the DEVICEHIGH= statement into your CONFIG.SYS file, the operating system will attempt to load the specified DOS device driver into an available upper memory block (UMB). If a UMB is not available, the device driver will be loaded into low memory as is done for a DEVICE= statement. To enable UMBs, type the DOS=UMB statement in the CONFIG.SYS file. TIP: You should load DOS device drivers onto UMB to preserve low memory for DOS applications. DISKCACHE= The disk cache has the potential for dramatic performance gains. The disk cache allows a portion of system storage to be used as an additional hard-disk buffer. DISKCACHE speeds up application programs that read hard disks by keeping hard disk data frequently accessed in a cache buffer. When an application program requests hard disk data that is already in the cache buffer, the disk cache sends the data directly to the application program. This method of accessing data is much faster than if the data had to be read from the disk each time. A disk-cache size is preselected by the system based on installed memory, disk size, and file systems installed. Any memory set aside for the disk cache is memory that is taken away from the free memory available for programs. Therefore, it is recommended that you determine the amount of memory required for normal operation of your system, then dedicate as much of the remaining memory to a disk cache. This requires that you have a good understanding of the working set requirements of your system. For example, a computer with 6MB or more of RAM should use a disk-cache size of 256KB. The DISKCACHE default sizes for FAT are as follows: For systems with 4MB or less of memory, the value d is set to 48KB. For system memory above 4MB and up to 5MB, the value d is set to 64KB if more DASD is formatted for HPFS than for FAT. If more DASD is formatted for FAT than for HPFS, the value d is set to 48KB. For system memory above 5MB and up to 6MB, the value d is set to 128KB. For system memory above 6MB and up to 8MB, the value d is set to 512KB. For systems with more than 8MB of memory, the value d is set to 5% of the memory size up to a limit of 14MB. NOTE: Default sizes for DISKCACHE are set up by the installation program. The dependencies are the amount of physical memory and the number of partitions formatted for either file system. The minimum disk cache size for the FAT file system is 0KB (you can select not to use a cache). The maximum is xxKB. The maximum cache size fo FAT is 14.4MB. You need to select Shut down from the menu of the desktop before turning off your system. Failure to do so can cause loss of data if the contents of the cache buffers have not been erased and written to disk. The amount of storage required for control information is determined by the total size of one or more hard disks. When the amount of storage you specify in the DISKCACHE statement is not available, the system displays an error message. When the amount of storage you specify in the DISKCACHE statement is not sufficient to support the total hard disk size, the disk cache does not work. The disk cache is allocated at system startup, and there is no dynamic adjustment of its size. It is recommended that the threshold size be set at 32 unless the software product you are using is disk intensive and the manufacturer supplies information on the block size required. If the block size is defined in terms of byte count, divide the byte count by 512 and round up the quotient to the nearest whole number to determine the threshold value. There are four parameters in DISKCACHE=D,T,LW,AC: to specify the amount of real memory used for caching disk data. D specifies the cache size, T specifies the cache threshold, i.e., the largest data block placed in the cache. LW means Lazy Write, i.e., write data to disk only when system is not busy as opposed to right away. AC: tells the system to run checkdisk if the machine encounters power failure or otherwise is not shut down correctly. TIP: Modifying this statement can increase the speed of your system. If no DISKCACHE statement is specified, no cache storage is allocated. When you increase the size of your disk cache, you also decrease the size of available memory for other usage. For this reason, you may want to experiment with the cache size to get maximum performance. When disk cache is set to dynamic, sizes are based on the amount of memory that is available in the system and how many partitions are formatted for the FAT file system, not on the disk size. You need to select Shut down from the menu of the desktop before turning off your system. Failure to do so can cause loss of data if the contents of the cache buffers have not been erased and written to disk. The DISKCACHE default cache sizes for FAT are as follows: For systems with 4MB or less of memory, the value d is set to 48KB. For system memory above 4MB and up to 5MB, the value d is set to 64KB if more DASD is formatted for HPFS than for FAT. If more DASD is formatted for FAT than for HPFS, the value d is set to 48KB. For system memory above 5MB and up to 6MB, the value d is set to 128KB. For system memory above 6MB and up to 8MB, the value d is set to 512KB. For systems with more than 8MB of memory, the value d is set to 5% of the memory size up to a maximum size of x. When the amount of storage you specify in the DISKCACHE statement is not available, the system displays an error message. The disk cache is allocated at system startup, and there is no dynamic adjustment of its size. Reduce the diskcache size when running applications that provide their own caches like AutoCAD, Foxpro, or DB2. It is recommended that the threshold size be set at 32 unless the software product you are using is disk intensive and the manufacturer supplies information on the block size required. If the block size is defined in terms of byte count, divide the byte count by 512 and round up the quotient to the nearest whole number to determine the threshold value. The default threshold value is 4. Enable LAZYWRITE (LW) whenever possible. This allows disk writes to be temporarily held in memory to increase throughput. Without LW, disk writes are done immediately. LW will increase disk performance, but an unexpected power outage may cause data loss. DOS= You can load a DOS TSR program into an upper memory block (UMB) by typing the LH or LOADHIGH command at the DOS command prompt. If no UMB is available, the TSR program will be loaded into low memory (below 640KB). To enable UMBs, type the DOS=UMB statement in the CONFIG.SYS file NOTE: Specifies whether the DOS kernel will reside in the high memory area (HMA) and whether the operating system or DOS applications will control upper memory blocks. Upper memory blocks are provided by the XMS device driver. It also is necessary to include a VXMS.SYS statement in the CONFIG.SYS file to have upper memory blocks available. TIP: With a DOS=HIGH/LOW,UMB statement, the operating system controls the upper memory blocks. This means that DOS applications can be loaded into upper memory but cannot allocate UMBs. With a DOS=HIGH/LOW,NOUMB statement, the operating system will not control any UMBs. DOS applications can allocate UMBs but cannot be loaded there. FCBS= FCBS allows you to alocate File Control Blocks for DOS sessions. Most new DOS programs do not use FCBS so these values can often be lowered to save memory. NOTE: This statement has no effect in OS/2 sessions. A file control block (FCB) is a record that contains all of the information about a file (for example, its structure, length, and name). If a program tries to open more than the number of files specified in the FCBS statement, the system closes the least-recently used file control block and opens the new file. Some application programs use file control blocks to create, open, delete, read, and write to files. New programs written for the operating system usually use internal file IDs (handles) for file input/output. If a program tries to open more than the number of file control blocks specified in the FCBS statement, the system closes the least-recently used FCB and opens a new file. The files that are protected from being closed are not included in the list of least-recently used FCBs. If a program tries to read or write to a file that has been closed because it is the least-recently used FCB, the system displays an error message. FILES= Determines the maximum number of files available in DOS sessions. NOTE: This statement has no effect in OS/2 sessions. When a DOS session is started, 20 files are available to be used by all programs running in that DOS session. A file is in use when a program is processing some kind of operation in it. When a program is using a file for its operation, that file is unavailable to another program. The file is returned to availability when the program has finished its operation and the file is closed. TIP: Regardless of the FILES= setting, all DOS programs are initialized to a maximum of 20 files. It is the responsibility of an application to increase the number of files up to the maximum set by the FILES= statement. Placing a FILES= statement in the CONFIG.SYS file increases the default value for all DOS sessions. Each session can also be customized by changing the appropriate DOS setting. To specify a maximum of 40 files to be open at the same time in a DOS session, type the following in the CONFIG.SYS file: FILES=40 IFS= Installs a file system (IFS) by specifying the path and complete file name of the file system driver in your CONFIG.SYS file. NOTE: A file system driver is a file that contains code needed to manage disks and diskettes formatted for file systems other than the file allocation table (FAT). TIP: Use this command to replace the FAT file system with a file system of your choice. An example of an IFS driver is HPFS.IFS. To install the High Performance File System in a system with 128 KB cache and 4KB maximum record size, you have to place the following statement in the CONFIG.SYS file: IFS=C:\OS2\HPFS.IFS /CACHE:128 /CRECL:4 /AUTOCHECK:C If you select HPFS as your standard file system, the OS/2 installation procedure inserts an IFS statement as the first entry in the CONFIG.SYS file. System installation automatically sets up the HPFS cache for you if you format the primary partition with HPFS (using the OS2.INI file). If you format the primary partition for FAT instead, and then later want to format another partition with HPFS, you need to add an IFS statement to the CONFIG.SYS file. Keep in mind that the IFS statement is device-dependent and must be included before any DEVICE statements. If you start DOS (from outside the OS/2 operating system, that is, from a DOS partition or diskette), files on HPFS partitions are not accessible. (This means that you cannot start your system from a DOS installation diskette while using HPFS). If you start a Specific Version of DOS from within the OS/2 operating system (that is, a version of DOS running in a DOS session), then files on HPFS partitions are accessible. If your system has no HPFS partitions defined, you should disable the loading of HPFS by adding a REM to the beginning of the IFS= line in your CONFIG.SYS. Lazy writing for HPFS defaults to ON. A RUN=CACHE statement is required to change the state of lazy writing. CACHE also can be executed from a command prompt. Optimize the HPFS CACHE setting on systems using the HPFS file system or REMark it out if the system does not use this file system. The HPFS code and data space requirement is 200KB of memory plus the cache requirement (minimum cache size is 64KB). Removing this statement will save at least 264KB and as much as 2312KB. Optimize the CRECL value by experimenting with different threshold values while monitoring the HFFS cache utilization with SPM/2. This will ensure the optimum value is determined. IOPL= Allows I/O privilege to be granted to requesting processes in OS/2 sessions. NOTE: The privilege level assigned to a program determines what code segments and data segments it can access. The privilege level also limits the machine instructions a program can process. Application programs are usually assigned privilege level 3. This means that they can call routines that run at any other privilege level. However, they can access only their own data segments and cannot issue any I/O instructions. Programs that are granted I/O privilege run at privilege level 2. When IOPL is YES, a program assigned privilege level 2, such as a subsystem that needs to communicate directly with a specific device, is then permitted to send or receive instructions to or from that device. TIP: To permit I/O privileges to processing programs, type the following in the CONFIG.SYS file and restart your system: IOPL=YES To prevent I/O privileges from processing programs, type the following in the CONFIG.SYS file and restart your system: IOPL=NO To allow I/O privileges to be granted to programs named PROC2 and PROC3, type the following in the CONFIG.SYS file and restart your system: IOPL=PROC2,PROC3 PATH= Sets a search path for commands and programs. NOTE: PATH searches specified directories for commands or batch files that the system did not find when it searched the current directory. PATH only finds files that can be run, such as files with the following extensions: .COM, .EXE, and .BAT (for DOS sessions), or .CMD (for OS/2 sessions). PATH is a system environment variable. If the system cannot find an external command or program in your current directory, it queries the environment for a value for PATH. Application programs can also query the environment for the value of PATH and, depending on what they find, change their behavior. When you install the OS/2 operating system, the installation program places the following in the CONFIG.SYS file. SET PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS;C:\OS2\INSTALL;C:\; System installation also creates the following PATH statement in your AUTOEXEC.BAT file for use with DOS sessions: PATH C:\OS2;C:\OS2\MDOS;C:\; Setting the PATH in the CONFIG.SYS and AUTOEXEC.BAT files lets you avoid having to set PATH from the command prompt each time you turn on your system. As you create your own subdirectories, you can change the PATH statement in your CONFIG.SYS to reflect your new directory structure. For DOS sessions, you update the PATH statement in your AUTOEXEC.BAT file. TIP: Directory names should be placed in the order of usage. The most accessed directory should be listed first and the least accessed listed last. If programs will be executed from an object on your desktop or folder, specify the path there and not in the PATH statement. Only place directories in the PATH statement for executables that will be called from other programs or commands. DPATH= DPATH indicates what directories applications should search for their data files (if an application program uses the DPATH directory list). NOTE: DPATH is a system environment variable, which means that application programs can query the environment for its value, and, depending on what they find, change their behavior. Like the PATH command, the number of directories you can specify with DPATH is limited only by the length of the command line. The length of a DPATH command can be up to six characters less that the maximum number of characters allowed on the command line. Once you set a search path for data files with DPATH, the path remains in effect for the current command processor until you replace it with another DPATH command. TIP: Directory names should be placed in the order of usage. The most accessed directory should be listed first and the least accessed listed last. . LIBPATH= Identifies the locations of dynamic link libraries for OS/2 programs. NOTE: LIBPATH is used to identify a set of directories to be searched when the OS/2 operating system loads dynamic link libraries. Because dynamic link library modules are shared globally, this command allows path searching to be defined globally rather than on a per-process basis (as done by the PATH command). LIBPATH is not a part of the environment and therefore cannot be viewed with the SET command. Also, unlike the PATH environment variable, the current directory is not searched first. The installation program places this statement in your CONFIG.SYS file: LIBPATH=.;C:\OS2\DLL;C:\OS2\MDOS;C:\; Note: The initial period indicates the current directory. TIP: Directory names should be placed in the order of usage. The most accessed directory should be listed first and the least accessed listed last. Make sure that .; is the first directory in the LIBPATH. If possible, place the DLL used by a program in the same directory as the working directory when the program is running. Then, you do not need to add that directory to the LIBPATH statement. Also, place all directories that are on a network at the end of your LIBPATH statement in case the network goes down and they cannot be accessed. MAXWAIT= Sets the amount of time a ready-to-run thread waits before the system assigns it a higher priority. NOTE: When a regular-class thread is denied the processor for a defined number of seconds, it receives a temporary increase in priority for a period of time up to the minimum time slice. MAXWAIT has no effect if the PRIORITY command is set to ABSOLUTE. The system limits the time that a regular-class thread waits to be processed. When the time limit is reached, the system raises the priority of the thread to give it a chance to be processed. TIP: The most appropriate amount of time to set depends on the number of applications that must run concurrently and the kinds of activities the applications perform (the system default is three seconds). Experiment with this time to improve overall system performance. To cause a thread to wait up to 5 seconds before it receives a temporary increase in priority, type the following in the CONFIG.SYS file: MAXWAIT=5 You can specify a number from 1 through 255. The default value is 3. Use 2 for systems running lots of programs together or a program that runs at a higher priority with others that run at a lower priority. PRIORITY= Selects priority calculation in scheduling regular-class threads. NOTE: The system assigns a thread based on its display status (background or foreground), recent input and output activity, and frequency of processor use. Most threads are assigned Regular priority. Applications can adjust priorities, but the system has a built-in method of handling access to the processor. The default method is Dynamic. Changing this to Absolute can help achieve predictable results by determining the order of priority strictly on the basis of class and level. To change the PRIORITY statement so the OS/2 operating system varies the priorities of threads as they are running, type the following in the CONFIG.SYS file and restart your system: PRIORITY=DYNAMIC To change the PRIORITY statement so the OS/2 operating system does not vary the priorities of threads as they are running, type the following in the CONFIG.SYS file and restart your system: PRIORITY=ABSOLUTE TIP: DYNAMIC almost always offers the best performance. If DYNAMIC is not specified then each thread will receive a minimum and maximum time slice of 32 milliseconds with no additional time slices as specified in the TIMESLICE= statement. PRIORITY_DISK_IO= Specifies disk input/output priority for applications running in the foreground. NOTE: When PRIORITY_DISK_IO=YES is specified in the CONFIG.SYS file, an application running in the foreground will receive disk I/O priority over applications running in the background. This means that the application in the foreground will have a better response time than applications running in the background. To specify that applications in the foreground are to receive priority for disk access, type the following in the CONFIG.SYS file: PRIORITY_DISK_IO=YES To specify that all applications (foreground and background) are to be treated equally with regard to disk access, type the following in the CONFIG.SYS file: PRIORITY_DISK_IO=NO TIP: Changing PRIORITY_DISK_IO to NO in CONFIG.SYS will improve the performance of communications applications running in the background that are doing disk I/O, if there is foreground work being performed that is also doing disk I/O. PRINTMONBUFSIZE= Sets parallel-port device-driver buffer size. NOTE: The PRINTMONBUFSIZE= statement enables you to increase the size of the OS/2 parallel-port device-driver buffer and thereby increase performance of data transfer to devices connected to the parallel port. This device-driver monitor buffer is used only if a printer character monitor is active. The parallel port device driver will allocate and register its monitor chain buffer based upon the value specified. TIP: If you increase this value, additional system memory is used. To set the parallel-port device-driver buffer size for LPT1 as 2048 bytes, for LPT2 as 134 bytes, and for LPT3 as 134 bytes, type the following in the CONFIG.SYS file: PRINTMONBUFSIZE=2048,134,134 RMSIZE= Specifies the highest storage address allowed for the DOS operating environment. NOTE: If you specify a number that exceeds the amount of memory allowable for your system configuration, the system sends you an error message and ignores the statement. It then automatically calculates the largest default value for your system. If you do not have an RMSIZE statement in your CONFIG.SYS file, the default is the total amount of low memory installed (either 512KB or 640KB). If this total is 640KB or less, then the default size is the total memory minus the minimum required for protect-mode operations. If this total is 1024KB or greater, the default size is the amount of memory installed below 1024KB, either 512KB or 640KB. If you decided to specify PROTECTONLY=NO, you can further reduce the size of the DOS environment by specifying RMSIZE. This allows you to make the size of the DOS environment smaller than the maximum amount available if all the remaining memory below 640KB were used for DOS sessions. Specifies a number from 0 through 640, representing a multiple of 1024 bytes. To set the size of the DOS environment to 256KB, type the following in the CONFIG.SYS file: RMSIZE=256 TIP: Leave the default for optimal performance in your DOS sessions. THREADS= Sets the maximum number of independent actions, known as threads, for OS/2 sessions. NOTE: Applications consist of a series of instructions. The processor reads each instruction and performs the associated activity. The sequential execution of the instructions by the processor is called the thread of execution. More than one thread of execution can exist within a single process. Typically, OS/2 applications contain many threads. Several threads can be ready to execute at the same time, but only one thread at a time can have access to the processor. Access to the processor is managed by the system scheduler, which assigns each thread a priority. The thread that has the highest priority, and that is ready to run, is allocated to the processor. For example, if a thread is being processed, and another thread with a higher priority becomes ready to run, the system stops processing the thread with the lower priority and allocates the processor to the thread with the higher priority. That thread is processed until it relinquishes control of the processor or until a thread of higher priority is ready to run. The system supports a maximum of 4095 threads, which it allocates to itself and the applications running on it. Reducing the number of threads while running complex applications or system extensions, can force activities that COULD be performed concurrently, to be performed serially, thus slowing performance. If no THREADS statement is in the CONFIG.SYS file, the default number of threads is 64. To have the system handle up to 512 active threads, type the following in the CONFIG.SYS file: THREADS=512 If there is no THREADS statement is in the CONFIG.SYS file, the system defaults to a value of 64. TIP: Each thread requires a minimum of 4KB stack allocated by the system. OS/2 threads get priority boost when they have foreground focus. All DOS and Windows threads run at the same priority in a round robin manner. DOS and Windows disk I/O can execute on a separate thread. The basic thread priority is 200. Communications Manager and LAN server have threads that run at Time Critical and Server priority levels. Set THREADS to a value 50% larger than the actual number of threads expected to be used to avoid running out of threads. TIMESLICE= Sets the minimum and maximum amount of processor time allocated to processes and programs for both OS/2 and DOS sessions. NOTE: Unless a dispatching priority is explicitly defined by an application, the system assigns one to each thread of execution. The system uses round-robin (that is, time-distribution) time slicing to ensure that threads of equal priority are given equal chances to be processed. The first value (X) in the statement TIMESLICE=X,Y is the minimum amount of time a thread can be processed before yielding the processor to a thread of the same priority level; the second value (Y) is the maximum amount of time a thread can be processed before yielding processor time. TIP: This statement is not found in the CONFIG.SYS file after you install OS/2 but is sometimes recommended to be added. This was okay to add for OS/2 2.0, 2.1 or 2.11 systems, but not for OS/2 Warp. In OS/2 Warp, we dynamically modify a threads time slice based on actions that have occurred. For instance, if a thread took a page fault during it's time slice, we give it an extra time slice to process what is contained in the faulted page. We also give applications doing disk I/O extra time slices if the data they are reading is in the disk cache. When the TIMESLICE= parameter is used, none of these actions will occur. Instead, each thread will be given the minimum time slice of X, and its time slice will not be allowed to go beyond value Y. The default is dynamic time slicing based on system load and paging activity. Dynamic time slicing gives the best performance in all situations. To set the minimum TIMESLICE value to 32 and allow the maximum value to default, type the following in the CONFIG.SYS file: TIMESLICE=32, To set the maximum TIMESLICE value to 32 and allow the minimum value to default, type the following in the CONFIG.SYS file: TIMESLICE=,32 To change the minimum and maximum time slice allowed to 45 milliseconds, type the following in the CONFIG.SYS file: TIMESLICE=45 Note: This value must be an integer greater than or equal to the default value of 32. To change the maximum time slice allowed to 125 milliseconds to support a communication program, and the minimum time slice to 40 milliseconds, type the following in the CONFIG.SYS file: TIMESLICE=40,125 Note: This value must be an integer greater than or equal to the minimum default value of 32, and less than the maximum default value of 65536. If you do not have a TIMESLICE statement in your CONFIG.SYS file, the minimum and maximum default values are set. 5.4 Single input queue The Single Input Queue (SIQ) allows the user to take focus away from an application that is monopolizing the message queue. NOTE: When you request a focus change, e.g., by clicking on another application or pressing the Ctl+Esc, the application that has the focus should respond to the message in a certain amount of time, say x milliseconds. If the application does not respond within that time, OS/2 flags the application queue as bad. It will then switches focus to the desired application. OS/2 will monitor the queue marked as bad to see when it does start responding messages. It will mark the queue as good when this occurs. TIP: To enable the SIQ feature, place a SET PM_ASYNC_FOCUS_CHANGE statement in the CONFIG.SYS file and reboot. The parameters for the SIQ statement is: SET PM_ASYNC_FOCUS_CHANGE=ON | ON x | OFF The default is OFF (disabled). To turn SIQ on (enable), use SET PM_ASYNC_FOCUS_CHANGE=ON To change the timeout value, put the following statement: SET PM_ASYNC_FOCUS_CHANGE=ON x where x is in milliseconds. The default value is 2000 milliseconds 5.5 The AUTOEXEC.BAT file The AUTOEXEC.BAT file is specific to the DOS session and has no performance impact on OS/2 applications. You can however customize your DOS session by having DOS system commands in the AUTOEXEC.BAT file. This will start your memory resident programs and set up environment variables as required by your DOS applications. TIP: To make as much base memory as available to applications, remove all unnecessary commands from the AUTOEXEC.BAT file. You can also create several AUTOEXEC.BAT files, each file corresponds to specific DOS commands needed by each specific application. The specification of a specific AUTOEXEC.BAT file to a DOS session is done by selecting the setting DOS_AUTOEXEC in the DOS settings notebook for the application object. Chapter 6 Improving Application Performance 6.0 Application software Application software offers a great deal of flexibility in its ability to be tuned for improved performance. Skilled programmers have tremendous control over the performance of their application as well as the performance of the entire system. Applications can be written to use minimal amounts of memory and processor resources. A poorly written application can cause major problems by using excessive amounts of memory and CPU cycles. Applications usually do not have tunable options that allow a user to modify their performance. If they do, the best way to discover and implement them is to read the documentation that comes with the program. For example, Lotus Notes for OS/2 has a memory tuning parameter that when placed in the Notes.INI file, keeps the application from using all of the systems free memory. Likewise, IBM's C Set compiler has an optional command that will cause the compiler to remain in memory after it has been loaded by the first compile action. Subsequent compiles become faster because the compiler does not need to be re-loaded into memory. Under OS/2 Warp, application programmers have a great deal of control over the performance of both DOS and OS/2 programs. Some general programming rules when programming OS/2 applications include using multiple threads, checking the linker map to place functions that call each other in the same code page, and keeping your DLLs in the working directory so OS/2 will not have to search to find them. DOS programs should be designed to not poll hook interrupts, but try to limit far references and keep functions that call each other in the same segment. These techniques and more are explained in the many books focused on programming for performance. DOS application performance can be improved by maximizing the use of memory below 640KB. Drivers such as EMM386 and HIGHMEM are designed to free as much memory as possible and provide disk caching to speed up hard drive access. Since some DOS applications respond differently than others using these drivers, it is usually necessary to experiment with them and other parameters to find the optimal performance configuration. 6.1 Tuning Tips for OS/2 Applications OS/2 applications run natively on OS/2 Warp 4, therefore, no special settings nor configurations changes are required. That is, users do not need to make explicit changes to OS/2 applications. However, there are techniques that you can use to speed up the application loading or execution time. TIP: The LIBPATH, which is set in CONFIG.SYS, specifies a search path which the OS/2 operating system uses when searching for dynamic link libraries (DLLs). The LIBPATH is set during system startup and cannot be changed dynamically. Always set the path for the most frequent accessed programs first in the LIBPATH. Do not change the order of the OS/2 components set in the LIBPATH. 6.1.1 SOMobjects When SOMobjects 2.0 is installed on OS/2 Warp, the LIBPATH, PATH, and DPATH environment variables in CONFIG.SYS might be changed to place the SOMobjects directories before the operating system directories in the search order for DLLs, EXEs, and data files. This will cause the Workplace Shell to encounter an unrecoverable error the next time the system is rebooted because it requires the SOM DLLs that are contained in the \OS2\DLL subdirectory, and the performance of your system could be severely degraded. TIP: In order to allow SOMobjects 2.0 Workstation applications to run successfully, you must edit CONFIG.SYS and change the LIBPATH, PATH, and DPATH statements before rebooting the system. These statements must be changed to place the operating system directories before the SOMobjects directories. Note: This only applies to SOMobjects Workstation applications, not Workgroup applications. NOTE: The same problem will occur for any application that ships SOMobjects 2.0 DLLs if the application places its DLL directory first in the LIBPATH. Once again, the workaround is to assure that the \OS2\DLL subdirectory is before any other directory that contains earlier versions of the SOM DLLs. Any changes made to the PATH and DPATH environment variables by the application installation must also be reversed. 6.1.2 VisualAge C++ performance You can get faster compile times with Visual C++ by using some of the following techniques. TIP: Check the settings of your environment variables (LIBPATH, PATH, INCLUDE, and so on). If the VisualAge C++ directories are at the end of the paths, the compiler or linker must search through all of the other directories before it finds the required DLLs, header files, and so on. Ensure you preload the compiler with the /Tl option (it is preloaded by default). This option keeps the compiler components loaded in memory. If you are statically linking to the VisualAge C++ libraries, try dynamic linking. Use precompiled header files. See the User's Guide for details on how to structure your files so the compiler can take full advantage of the precompiled headers. Turn off all optimizations. If you are using the HPFS file system, set the IFS statement in your CONFIG.SYS file to: IFS=c:\os2\hpfs.ifs /cache:2048 /crecl:64 This allows OS/2 to keep frequently-used files in memory between compilations, which can greatly reduce the amount of time it requires the compiler to process them. Add more RAM to your system. In a memory-constrained environment, OS/2 spends more time swapping data to disk, which increases compilation times tremendously. Additional RAM allows the compiler and its data to remain in memory, which can make your builds run more quickly. Define a virtual disk (VDISK or RAM disk) with the OS/2 VDISK device driver. It creates a disk from your system's RAM. For example, placing this statement in your CONFIG.SYS file: DEVICE=C:\OS2\VDISK.SYS 2048,,256 allocates a virtual disk of 2M with 256 directory entries. You can then copy all the library and header files you need for compiling and linking to this disk and set your LIB and INCLUDE variables to point to it before any other directory. Because these files are already in memory, your compile and link times will improve. (Do not put the compiler executable files there; the compiler preloads them into memory by default, so you would then have two copies in memory.) However, there are drawbacks to using a VDISK. The data on it is lost when you reboot. Also, memory allocated for a VDISK is unswappable memory space, meaning it cannot be used as normal memory space by applications. Because C++ compilations can require a lot of memory, putting memory into a VDISK could cause excessive memory paging and slow down your compilation. If you have a large VDISK, it may be to your advantage to eliminate it or make it smaller to provide more available memory to the compiler Minimize dependencies between source files so that changes made to one file don't require you to recompile all your files. 6.2 Tuning Tips for Windows Applications This section discusses the Win-OS/2 environment which supports the execution of Windows applications. 6.2.1 WIN-OS/2 environment WIN-OS/2 is an environment that allows you run Windows programs under OS/2. There are two types available of WIN-OS/2 environments available: WIN-OS/2 Full Screen WIN-OS/2 Window (or seamless) TIP: Some DOS and Windows programs run correctly only in full-screen sessions. Any Windows program that does not use the Windows application program interface (API) function to change the video mode should be run in a WIN-OS/2 full screen session. 6.2.2. Windows groups and Windows programs folders During the installation of OS/2 Warp, if you had Windows programs already installed on your hard disk, these programs may have been automatically added to your OS/2 Desktop. Windows programs that were added during installation can be found on the Desktop in the following folders: WIN-OS/2 Groups: When you run Add Programs for existing Windows programs, the WIN-OS/2 Groups folder is created and placed on the Desktop. The WIN-OS/2 Groups folder contains folders of Windows application programs that reside in the default groups, Windows Accessories and Windows Main. A group is a set of Windows programs that are related. Windows Programs and Additional Windows Programs The Windows Programs folder and the Additional Windows Programs folder contain Windows programs that have settings optimized during the installation process to improve their performance. If these programs do not run correctly, you can specify other settings. Windows programs that do not belong to any group are added to these folders. For example, if you have CorelDraw for Windows installed, when you run Add Programs, a folder for all the CorelDraw programs is created and placed in the Additional Windows Programs folder. Now you have access to all the CorelDraw programs in one folder. 6.2.3 WIN-OS/2 virtual DOS sessions - common Vs separate A Windows application can run in a common or separate (seamless) session. Common sessions share one WIN-OS/2 kernel regardless of the number of applications loaded. Separate sessions load a new copy of the WIN-OS/2 kernel each time an application (or session) is started. TIP: If you launch an application from a separate seamless session, the time taken to load the application includes the time to load the WIN-OS/2 kernel as well. In general, it is always faster to load a Windows application in a common session because the WIN-OS/2 kernel doesn't have to be loaded for each application. 6.2.4 WIN-OS/2 standard and enhanced compatibility modes WIN-OS/2 can run in two operating modes: Standard Mode is used to run programs written for Microsoft Windows Versions 3.0 and 3.1 standard mode. Enhanced Compatibility Mode is used to run programs that require Microsoft Windows Versions 3.0 and 3.1 enhanced mode. The Enhanced Compatibility Mode enables the user to run a number of Windows 3.1 enhanced mode applications. It is important to realize that this is not an implementation of Windows 3.1 enhanced mode, but a mode specific to WIN-OS/2 that illustrates the flexibility of OS/2 and its power in blending different application environments into an integrated platform since the major benefit to Windows 3.1 users of enhanced mode was virtual memory - something which OS/2 users already have. NOTE: All Windows Version 3.0 and 3.1 standard mode programs will run in a WIN-OS/2 Enhanced Compatibility Mode session. The default setting for these sessions is Enhanced Compatibility Mode. TIP: You may want to consider changing the WIN-OS/2 session mode to standard if you are running Windows programs that do not require enhanced compatibility. Performance of Windows programs running in standard mode could be faster than those running in the enhanced compatibility mode. You can specify a mode for a WIN-OS/2 session or Windows program by changing the WIN-OS/2 run mode setting. For Windows programs that require Microsoft Windows Version 3.1 enhanced mode, set the WIN_RUN_MODE setting to 3.1 Enhanced Compatibility. 6.2.5 Settings for Windows applications The following WIN-OS/2 and DOS Settings should be used for DOS and Windows Multimedia applications: DOS/WIN INT_DURING_IO ON DOS/WIN HW_TIMER ON WIN VIDEO_SWITCH_NOTIFICATION ON WIN VIDEO_8514A_XGA_IOTRAP OFF DOS/WIN VIDEO_RETRACE_EMULATION OFF DOS DPMI_MEMORY_LIMIT 8 TIP: To improve the performance of the device, you can change any of the settings: Press the Tab key to move between the entry fields. Click on the arrow next to each field to open a pull-down menu of possible, valid values. Refer to the documentation that came with the device for information about what values you should use. Select OK when you are done. Select Cancel to exit from the window without making any changes (the default values will remain). Note: To have the settings changes take effect, be sure to select Multimedia Software Support in the OS/2 Setup and Installation window and then select Install. To enable audio support for most applications in DOS and Windows sessions, the following settings for DOS properties must be in effect: INT_DURING_IO = On VIDEO_RETRACE_EMULATION = Off AUDIO_ADAPTER_SHARING = Required AUDIO_ADAPTER_SHARING This setting allows access to audio hardware for the DOS session. TIP: Two applications cannot use an audio adapter even if one is not required to run the program. This will allow you to minimize conflicts by defining audio specifications for each DOS session. Select Optional to indicate that a program in this DOS session should use an audio adapter if one is available. Select Required to indicate that a program in this DOS session must have access to an audio adapter. Select None to indicate that a program in this DOS session does not require an audio adapter. The default setting is None. You can set this setting anytime. 6.2.6 Win32s support WIN-OS/2 supports the following levels of Win32s: 1.15 1.20 1.25 1.25a NOTE: Of the Win32s applications IBM has tested, the following are not supported. Adobe PhotoShop EndNote2 Plus TIP: We recommend that you set the DOS setting DOS_FILES to 255 on sessions that run Win32s applications. If a Win32s application states that it has run out of memory, change the DOS setting for DPMI_MEMORY_LIMIT to DECREASE the amount of DPMI memory. This will allow more room for Win32s memory. To run Visual FoxPro, change the DOS setting for DPMI_MEMORY_LIMIT to 16. 6.2.7 WIN-OS/2 setup WIN-OS/2 settings allow you to make adjustments that will improve the performance of your Windows programs. The following list identifies the types of settings you can change and they will be discussed in corresponding sections. Keyboard settings Memory settings Mouse and touch-sensitive screen settings Printer settings Video settings Hardware-related settings OS/2 allows you to specify certain settings that can be globally applied to all Win-OS/2 sessions. These settings can be accessed from the folder System Setup -> WinOS/2 Setup. NOTE: From the 3.1 Session bookmark, the Win-OS/2 setup settings notebook provides you buttons for selecting Win-OS/2 full screen or window environment. If you select Win-OS/2 window, you can further select Separate session or Common session. If you do not select Separate session (i.e., you select Common session) then you can select the Fast load option. This option if selected will create a common session and then preload it with a copy of the Win-OS/2 kernel. TIP: Use the Fast load option to speed up the loading of all Windows applications running in a seamless and common Win-OS/2 session. The Fastload option will take effect immediately after the Win-OS/2 setup settings notebook is closed. NOTE: From the Data Exchange bookmark, you can specify how data are to be dynamically exchanged between Win-OS/2 and OS/2 sessions. When the DDE setting is On, dynamic data exchange (DDE) is public. Windows programs that support DDE automatically update identical data in other Windows and OS/2 programs. Otherwise, you can share information only with other Windows programs. When this setting is set to Off, DDE is private and Windows programs cannot share DDE information with OS/2 programs. For further information, please see the tips for WIN_DDE below. Similarly, the clipboard can also be set to either public or private. When this setting is On, the clipboard is public. Windows programs can share data with other DOS, Windows, and OS/2 programs. Otherwise, you can share information only with other Windows programs in that session. When this setting is set to Off, the clipboard is private and Windows programs cannot share clipboard information with OS/2 programs. For further information, please see the tips for WIN_CLIPBOARD below. 6.2.8 WIN-OS/2-specific settings As mentioned above, the Win-OS/2 settings can be set from System Setup -> WinOS/2 Setup or from the properties associated with each session object. The following list contains the available WIN-OS/2-specific settings. WIN_CLIPBOARD WIN_DDE WIN_RUN_MODE WIN_ATM WIN_CLIPBOARD This setting allows WIN-OS/2 to share clipboard information between WIN-OS/2 and OS/2 sessions. NOTE: Select WIN_CLIPBOARD; then select the On radio button to share clipboard information among OS/2, DOS (window), and Windows programs. TIP: For better performance this setting should be set to OFF for private data exchange between WIN-OS/2 applications. However, if this setting is OFF then you will not be exchanging clipboard data between OS/2 applications and WIN-OS/2 applications. The default value is OFF (private). You can change this setting before you start the session or at any time after the WIN-OS/2 session is started. If you are running multiple Windows programs in a single WIN-OS/2 session, it is possible to share clipboard information between these programs even when this setting is Off (private). WIN_DDE This setting allows programs that support DDE to update their data automatically. NOTE: Select WIN_DDE; then select the On radio button to enable sharing of data among other OS/2 and Windows programs. TIP: If you are running multiple Windows programs in a single WIN-OS/2 session and the program supports the DDE feature, it is possible to share DDE information between these programs even when this setting is Off (private). The default value is Off (private). You can change this setting before you start the session or at any time after the WIN-OS/2 session is started. This setting is only listed in the WIN-OS/2 Setting window and does not apply to DOS window or DOS full-screen sessions. As a result, this should be set to OFF for private data exchange between DOS applications. For better performance, this setting should be set OFF, but only if you are not exchanging data via DDE between OS/2 and WIN-OS/2 applications. WIN_RUN_MODE Use WIN_RUN_MODE (Run mode) if you want to specify a mode for your Windows programs. To specify a particular mode, select either the 3.1 Standard or 3.1 Enhanced Compatibility radio button. NOTE: The default value for this setting is 3.1 Enhanced Compatibility Mode. You must change this setting before starting a WIN-OS/2 session (or starting one Windows program). To set the mode: Display the pop-up menu for the Windows program object. Select Settings. Select Session. Select the WIN-OS/2 settings push button. Select the WIN-OS/2 settings radio button; then select OK. Select the WIN_RUN_MODE setting. Select the 3.1 Enhanced Compatibility radio button. Select Save. WIN_ATM This setting loads the Adobe Type Manager fonts for Win-OS/2. NOTE: Select WIN_ATM; then select the On radio button to enable Adobe Type Manager font support for a WIN-OS/2 session. When this setting is set to Off, Adobe Type Manager will not be loaded when the WIN-OS/2 session is started. The default setting is Off. WIN_ATM cannot be reset from within a WIN-OS/2 session. To change this setting, you must end the WIN-OS/2 session, reset this setting, and restart the WIN-OS/2 session. TIP: Loading the ATM will waste memory if it is not used later. For better performance this setting should be set to OFF. Modifying the setting while the session is running will not dynamically load the ATM. 6.2.9 General WIN-OS/2 tips The following are tips for using your computer more efficiently when running Windows programs in WIN-OS/2 sessions: If you are running Windows programs in WIN-OS/2 windowed sessions, you cannot have any statement in the AUTOEXEC.BAT file that prompts the user for input (for example, "Press any key to continue"). Do not use the SETUP.EXE file shipped with Windows 3.1. Instead, use the SETUP.EXE file shipped with WIN-OS/2 to ensure your environment is properly configured for OS/2. Use the Selective Install program in OS/2 to change video device drivers for CGA, EGA, SVGA, VGA, XGA, and 8514, and for mouse device drivers. To start Selective Install, open OS/2 System, System Setup, then Selective Install. If a Windows program does not work correctly in a WIN-OS/2 session, it is likely that the program files were not all migrated properly. To fix the problem, you can reinstall the program using any WIN-OS/2 session. (Select Run on the File menu of the Program Manager and follow the program's instructions.) Or, if you know the specific files that are needed, you can copy them from the \WINDOWS directory to the \OS2\MDOS\WINOS2 directory. The value for VIDEO_SWITCH_NOTIFICATION should not be changed for an active WIN-OS/2 session. You cannot use the WIN-OS/2 Control Panel to change mouse buttons in WIN-OS/2 sessions. Change mouse button settings from the OS/2 Desktop to affect the WIN-OS/2 mouse buttons in the WIN-OS/2 environment. If you install the US English version of OS/2, and you want to change the system configuration to another country or language, run Selective Install to make the changes effective for OS/2. To make the changes effective for WIN-OS/2, start WIN-OS/2 in a full-screen session, open the Control Panel, and use the International choice to make your changes. If you are running a WIN-OS/2 full-screen session with an XGA video device driver and your WIN-OS/2 objects are not clear, use the Control Panel to select another color scheme for the WIN-OS/2 Program Manager. If you cannot paste a bitmap from the OS/2 clipboard to a WIN-OS/2 session, the program might not understand the device-independent bitmap (DIB) format of the file. For example, icons created using the Icon Editor are not understood by some Windows programs, such as Microsoft Paintbrush. If your WIN-OS/2 session is started first, you can view the bit map in the OS/2 clipboard; however, you cannot paste it. The Paste menu choice is dimmed (unavailable). Metafiles in WIN-OS/2 and OS/2 are not compatible. If you copy a WIN-OS/2 metafile to a public clipboard, it will be sent to PM and vice versa. If you want to use dynamic data exchange (DDE) using the Paste Link choice on the File menu of a program, consider the following information. The clipboard should be set to Public. The client and server must negotiate the data format to initiate the DDE link. If this negotiation fails, some applications do not display any error message and no further action is taken. If this happens, try another menu choice (for example, Link), if available. To improve performance of Lotus Applications in WIN-OS/2, change the following settings to ON: WIN_DDE ON WIN_CLIPBOARD ON DOS_BACKGROUND_EXECUTION ON 6.2.10 Tuning tips for games OS/2 recognizes over 200 of the most popular games and educational programs. Most games will run well under OS/2 if you use the customized DOS settings that are provided when you create a program object for your games using Add Programs from the System Setup folder or using the Program template from the Templates folder. If OS/2 does not recognize a game, it assigns default settings to the game. If the default settings are unsatisfactory, you can customize them to suit the requirements of the game. You can use Add Programs to create program objects for games that are already installed on your system. For each game that it recognizes, Add Programs assigns a set of customized DOS Settings to the program object, which is placed in the Games folder in the OS/2 System folder. TIP: When you install a new game, use the default subdirectory whenever possible. Then, make a note of the path and file name used to start the game. Use the Program template from the Templates folder to create a program object for the new game. Type the path and file name in the appropriate field in the Settings notebook of the new object. OS/2 will attempt to match the file name to the list of games found in the recognition database. If a match is found, OS/2 will automatically adjust all settings necessary to run the game. If you have a game or educational program that is not recognized by Add Programs and that does not use the default DOS Settings, you can customize the settings for this program by doing the following: Point to the game or program object. Press mouse button 2. Select Settings. Select the Session tab. Select DOS Full Screen. Select DOS Settings. Select All DOS Settings. Select OK. Change the DOS Settings according to the program documentation. You might want to create another DOS full-screen session with the following settings to try running games that otherwise cause problems: DOS_HIGH ON DOS_UMB ON EMS_MEMORY_LIMIT 0 or 4096 HW_NOSOUND ON HW_ROM_TO_RAM ON HW_TIMER ON IDLE_SENSITIVITY 100 INT_DURING_IO ON KBD_ALTHOME_BYPASS ON MOUSE_EXCLUSIVE_ACCESS ON VIDEO_8514A_XGA_IOTRAP OFF VIDEO_RETRACE_EMULATION OFF XMS_MEMORY_LIMIT 0, 64, or 4096 Other settings that you should consider to enhance game play include: DOS_BACKGROUND_EXECUTION DOS_FILES DOS_STARTUP_DRIVE DPMI_DOS_API DPMI_MEMORY_LIMIT DPMI_NETWORK_BUFFER_SIZE HW_NOSOUND IDLE_SECONDS KBD_CTRL_BYPASS The following tips might help you play these popular games: Master of Orion - Add a SET BLASTER statement to your AUTOEXEC.BAT file Link386 Pro - Add a SET BLASTER statement to your AUTOEXEC.BAT file DOOM 1.2 - Direct sound effects and music to a PC speaker, or set up Doom I with no sound settings DOOM II - Set up the FX selection as a PC speaker and the MUSIC selection as your audio card TIE Fighter - The application might stop after about 30 minutes of play in the training session. This occurs in the training session only. Myst and The Making of Myst - Do the following: 1. Edit the SYSTEM.INI file, which is located in the \OS2\MDOS\WINOS2 directory, and change the following statements from: SET TIMERMax386Res=10 SET TIMERMax286Res=10 to: SET TIMERMax386Res=x SET TIMERMax286Res=x where x is a variable between 8 and 20. 2. Save the file. 3. Restart the WIN32s session. 4. Get the latest version of QuickTime for Windows 3.1 from the World Wide Web at address http:/www.quicktime.apple.com. 5. Follow the instructions to download QuickTime. Note: If you have a partition with native DOS and Windows on it, you will need to take out references in the AUTOEXEC.BAT file to the Windows directories on other drives. For example: D:WINDOWS;D:\WINDOWS\SYSTEM After you have successfully installed the application you can put the references back into the AUTOEXEC.BAT file. 6. Install QuickTime for Myst and The Making of Myst To enable audio for Myst and The Making of Myst, you must enable the audio drivers. For more information, see "Adding WIN-OS/2 Audio Support" in the OS/2 Warp Desktop Guide online book located in the Assistance Center. To display the OS/2 Warp Desktop Guide, do the following: Open Assistance Center. Open Information. Open Tasks folder. Open the OS/2 Warp Desktop Guide online book. To help ensure The Making of Myst works correctly under OS/2 Warp, run The Making of Myst in a WIN-OS/2 full-screen session. THE 7th QUEST If this game does not work properly, contact the game manufacturer for the up-to-date audio drivers or files for Sound Blaster and Pro AudioSpectrum. After you receive the up-to-date audio drivers or files, do the following: 1. Add audio drivers or files to the ID\T7G directory. 2. For the Pro AudioSpectrum, do the following: Open the pop-up menu for the 7th QUEST object. Click on Settings. Click on the Session tab. Click on DOS Settings. Click on OK. Click on DOS_DEVICE. In the Value window, change the path to ID\T7G. Click on Save. Close the notebook. 3. Restart the WIN-OS/2 session. 4. Start the game again. If the game still does not work properly, do the following: Edit the ID\T7G\GROOVIE.INI file. Under the section that lists your audio card, change the DMA address from the default to your card's DMA setting. For new games (or games that will not work after using the steps above), try using the Dedicated DOS/Windows mode (session type). This requires that you have Dual Boot installed. Install the game using DOS or Windows and verify that it functions correctly, then create a program object on the OS/2 Desktop and select the Dedicated DOS/Windows Session type. Using this program object, you can now suspend OS/2 Warp to run the game and just as quickly resume your OS/2 Warp environment. 6.3 Tuning Tips for DOS Applications This section discusses tuning tips for DOS applications. 6.3.1 DOS environment OS/2 provides support for various DOS environments. These environments include DOS, DOS sessions in the OS/2 operating system, and specific versions of DOS started from diskette. As noted earlier, when you are starting a specific version of DOS from diskette, DOS mouse, XMS, or EMS driver support must be replaced with the OS/2 version of the driver, supplied in the OS2\MDOS directory. Some of the DOS properties are not processed in a DOS session started from the specific version of DOS. The ignored DOS properties are those that configure parameters that are controlled by the CONFIG.SYS file on the DOS startup diskette. These ignored properties include: BREAK DOS Device Drivers DOS Memory Size (KB) DOS Shell Simulated DOS Version Other differences include: FCB values are restricted to the minimum of the two values in the DOS and OS/2 configuration files. The EXIT command does not work when issued from the top level prompt in a DOS session started from a specific version of DOS. You need to use the EXIT_VDM command to successfully exit from a DOS session started from a specific version of DOS. There is generally less memory available in a DOS session started from a specific version of DOS. A DOS session started from a specific version of DOS will not support extended attributes on logical drives managed by the file system of that specific version of DOS. 6.3.2 Full screen vs. windowed DOS applications can be run in a full screen or windowed session. In a full screen session, data are directly written to video memory while the windowed session does not. TIP: Non-graphical DOS applications like Foxpro 1.0 runs very well in a VDM windowed session. DOS programs that are doing intensive text or graphical display will run slower in a windowed session compared to a fullscreen session. 6.3.3 Multitasking DOS sessions The OS/2 multitasking feature allows you to run multiple DOS, Win-OS/2 or OS/2 sessions at any instance of time. However, DOS applications rarely block themselves. They consume CPU timeslices even if they are in the background or appear not to be doing anything (e.g., polling keyboards or other devices). You can control this behavior by adjusting the following DOS setting parameters: IDLE_SENSITIVITY, SESSION_PRIORITY, and DOS_BACKGROUND_EXECUTION. The tuning of DOS settings are explained as follows. 6.3.4 Tuning the DOS settings You can selectively configure a DOS session by changing the session's DOS settings. Most of the settings defaulted values were set based on extensive internal testing. However, some DOS applications require certain features that can be determined by experimenting with the following: DOS_AUTOEXEC This setting allows you to select an AUTOEXEC.BAT file. TIP: Use DOS_AUTOEXEC (DOS AUTOEXEC.BAT file) if you want to specify the path and file name of a batch file other than the default AUTOEXEC.BAT file. The default AUTOEXEC.BAT file usually resides in the root directory of the startup drive. This setting is useful for specifying specific environments for individual sessions. The default is blank, which means that the AUTOEXEC.BAT file in the root directory of the startup drive is used. You must change this setting before starting the session. Specify a different AUTOEXEC.BAT for each DOS session will help reducing memory and optimize function. Overall system performance is improved when application specific AUTOEXEC.BAT files containing only the device drivers needed for that program. If application specific drivers were loaded from the CONFIG.SYS file at each boot RAM is wasted if the application is not used. DOS_BACKGROUND_EXECUTION This setting allows DOS applications to run in the background. TIP: Select DOS_BACKGROUND_EXECUTION, then select the On radio button if you want to allow DOS programs to run in the background. Selecting On means that your DOS application will keep running when it is not in the foreground. When this setting is Off, your program will be suspended when it is not in the foreground. When your DOS program is suspended, it will no longer receive interrupts. This means there will be no tasking overhead required to support this DOS session while it is suspended. Select On if you are running a DOS program that is communicating using a COM port or a network adapter. You also should select On when running WIN-OS/2 DDE or when running a Windows program on the desktop. The default value is On. You can change this setting before you start the session or at any time after the DOS session is started. DOS_BREAK This setting is used when you want OS/2 to check for the Ctrl+Break or Ctrl+C key combinations when your application is running. TIP: Use DOS_BREAK (Break); then select the On radio button if you want the operating system to check for the keystrokes Ctrl+Break or Ctrl+C while a program is processing. Then, you can press Ctrl+Break or press Ctrl+C to stop a process. For example, if you have Break set to On, and you want to stop compiling a program, press Ctrl+Break. Unless you specify otherwise during installation, the operating system places a BREAK=OFF statement in your CONFIG.SYS file. With BREAK=OFF in CONFIG.SYS, the operating system checks for the Ctrl+keys only during standard input or output operations; it does not check for Ctrl+keys while the program processes information. For example, if CONFIG.SYS has BREAK=OFF, the operating system checks for the Ctrl+ keys when the program expects input from the keyboard or the program sends information to the screen or printer. You cannot use Ctrl+Break or Ctrl+C to stop a process (such as a program compilation) if an error occurs or the process repeatedly loops through the same steps. Programs run more slowly when you set Break On. The default for this setting is Off. You must change this setting before starting the session. If you want to have the option to interrupt a DOS batch file running in a VDM in a faster way then this setting should be turned on. DOS_DEVICE Use DOS_DEVICE to modify the set of DOS device drivers that is loaded into a particular DOS session. TIP: When you select this setting, you see a list with the information about each DOS device driver specified in your CONFIG.SYS file. The information consists of the path and file name and the current value (if available) of each DOS device driver. For example: c:\os2\mdos\connect.sys /a=10 /b=12 You can: Add a DOS device driver by typing its name on a new line. Remove a DOS device driver by deleting all information about it. Add or change a value by typing the new value. You must change this setting before starting the session. Use this option to load only the DOS devices that you need. This will lower you boot time if you include the DOS device in the CONFIG.SYS file. DOS_FCBS This setting specifies the maximum number of file control blocks which may be opened by applications running in a VDM. TIP: Use DOS_FCBS (FCB count) if you load a file-sharing module and want to change the maximum quantity of file control blocks (FCBs) that a DOS session can have open. The field for this setting contains a range of values from 0 to 255 (FCBs). To change the value, drag the box, select a button, or type into the entry field. If you notice poor DOS session performance in a networking environment, use this setting to limit the number of FCBs. If you set a value for this field and your DOS session opens the maximum FCBs you specify, DOS closes the least recently used FCB when it receives the next FCB open request. You can use an additional DOS setting, DOS_FCBS_KEEP, to prevent DOS from closing one or more of the first FCBs it opens. The default value is 16. You must change this setting before starting the session. DOS_FCBS_KEEP This setting specifies the number of FCBs that will be protected against automatic closure. TIP: Use DOS_FCBS_KEEP if you want to specify the number of file control blocks (FCBs) that DOS does not automatically close. DOS closes FCBs to keep the number of open FCBs at, or below, the maximum allowed. The field for this setting contains a range of values from 0 to 255 (FCBs). To change the value, drag the box, select a button, or type into the entry field. The default value is 8. You must change this setting before starting the session. Keeping a number of FCBs protected may improve your application performance. DOS_FILES This setting specifies the maximum number of file handles which may be opened in a VDM. TIP: Use this setting to specify the maximum number of files that can be open at the same time in a DOS or WIN-OS/2 session. Specify a value of 20 to 255. The default value is 20. This setting has no effect in an OS/2 session. When a DOS session is started, 20 file handles are available to all programs running in the session. When a WIN-OS/2 session is started, the minimum number of available file handles is 48. This number can be increased by the program. A file is in-use when a program is processing an operation in it. The file becomes available when the program finishes its operation and the file is closed. You can change the setting for this session at any time. Some applications may requires a large number of files. For example, dBASE IV requires at least 40. IDLE_SECONDS This setting specifies the length of time, in seconds, the operating system waits before applying idle detection in a DOS session. TIP: Use IDLE_SECONDS to specify the length of time the operating system waits before applying idle detection processing to a DOS session. The field for this setting shows the amount of idle time allowed in seconds. Values range from 0 to 60. To change the value, drag the box, select a button, or type into the entry field. If a program appears idle, DOS gives it less time to run so that other programs can make use of the time taken from the idle program. You allow an idle period for a program, such as a game, that waits a brief time after prompting for your input but continues activity if you do not respond. If a program appears to run slowly when waiting for input, increase the value in this field. The default value is 0 seconds. When IDLE_SECONDS is set to 0, the operating system immediately applies idle detection processing after a program prompts you for input. You can change the setting for this session at any time. This setting works with the IDLE_SENSITIVITY setting to help control polling DOS applications. You can increase this value if you have an application that waits for input or at a prompt (like a game). Some programs periodically appear to be waiting for input, but then change their behavior and continue after a time. This setting disables the IDLE_SENSITIVITY function for a period of time after useful work has been detected. See also IDLE_SENSITIVITY below for more details on idle detection. If a program appears to run slowly when there is an option for the user to provide input, this value should be increased. Setting the value too high gives the DOS program more resources than it needs. A game might pause, for example, to wait for the user to make a choice, but then continues if the user does not react. IDLE_SENSITIVITY Specifies a threshold for judging when an application is considered idle. TIP: Use IDLE_SENSITIVITY if you want to specify a threshold for judging when a program is doing nothing but waiting for input. The value in this field is a percentage of the maximum frequency with which a program repeatedly checks, or polls, for input. To change the threshold, drag the box, select a button, or type into the entry field. If a program polls at a rate greater than the percentage specified in this field, the program is likely to be idle, so the operating system reduces the amount of processor time allocated to the session. By selecting a value in this field, you prevent the operating system from applying idle detection until the program reaches a percentage of this predetermined maximum. Increase the percentage if your program can receive input while running and seems to run slower than you expect. If you select 100 in this field, you turn idle detection off, and the program can poll as often as necessary without operating system intervention. The default value is 75 (percent). You can change the setting for this session at any time. Increase the percentage if the application can receive input while running and seems to run more slowly than expected. Selecting 100 in this field turns idle detection off, and the application can poll as often as necessary without operating system intervention. Be aware that polling applications are detected quicker on fast systems than on slower systems. This means that the value on different speed systems must vary -- decrease the value on faster systems. Example: If a polling DOS application with idle_sensitivity set to 50 on a 33 Mhz CPU is detected as exceeding the threshold and forced to yield its timeslice by OS/2, it may not be detected as exceeding the threshold on a 16 Mhz system with the same idle-sensitivity value. The 16 Mhz system will need to set a lower value before OS/2 will consider the same application as exceeding the threshold and cause a yield. DOS programs often "poll" for input when they are waiting for a user response. For example, a program might wait for a response by repeatedly checking to see if the user has pressed a key. In a multitasking environment such as OS/2 2.x, this wastes time when other programs could be running instead. The operating system detects idle programs by looking for a high rate of polling for input. When programs are judged to be waiting for input, they are given less time to run. For example, if idle sensitivity is set to 75%, an application repeatedly checking to see if input is available would have to do this checking at more than 75% of the maximum possible rate before it would be judged idle. Idle detection is a "best guess" of what the program is doing. It could be that the program is polling at a very high rate, but is still doing useful work in between checking. It might be that the application checks at a fairly slow rate but still is doing nothing but waiting. The idle sensitivity threshold allows adjustment of the threshold for a particular application. Also see IDLE_SECONDS. If an application receives input while running, and seems to run slower than expected, the idle sensitivity should be set to a higher value. This lets the application poll at a higher rate without being judged idle. Setting the level to 100 turns idle detection off altogether. The application will be allowed to poll for input as often as it likes. If an application is waiting for input and other applications do not appear to be running, the idle sensitivity should be adjusted downward. This lowers the threshold for judging the application idle. INT_DURING_IO This setting allows interrupts to be handled during file I/O. When set to on, this creates a second thread for the application to use for interrupt handling when the primary thread is busy with I/O operations. TIP: Use INT_DURING_IO (Interrupt During I/O) to enable or disable interrupts during disk read and write operations. Select the On radio button to allow interrupts during disk I/O. This allows programs to receive interrupts while waiting for the completion of the disk request. Many multimedia programs need interrupts during disk read and write operations. For example, while running Linkway programs on CD-ROM. When this setting is set to Off, interrupts will be disabled until disk I/O is complete. The default setting is Off. You must change this setting before starting the session. This setting is primarily designed for multimedia applications and should be turned on when running a multimedia application, MSCDEX applications, and many games. Creates extra overhead on the system for processing and memory requirements, and can cause degradation of performance for other applications. Unless your application is interrupt-sensitive, leave this setting Off. SESSION_PRIORITY This setting allows you to set priority level for the execution of your application. TIP: Selecting SESSION_PRIORITY enables you to increase the priority of separate WIN-OS/2 sessions. Change the value of priority either by entering a new value or by using the left or right arrows. The setting ranges from 0 to 31 in increments of 1 with a default setting of 0. SESSION_PRIORITY cannot be reset from within a WIN-OS/2 session. To change this setting, you must end the WIN-OS/2 session, reset this setting, and restart the WIN-OS/2 session. Memory Settings The following list contains the available memory settings that you can change to affect the performance of DOS applications.. DOS_HIGH DOS_RMSIZE (DOS memory size) DOS_UMB (DOS owns UMBs) DPMI_DOS_API (DOS API translation) DPMI_MEMORY_LIMIT DPMI_NETWORK_BUFF_SIZE EMS_HIGH_OS_MAP_REGION EMS_LOW_OS_MAP_REGION EMS_MEMORY_LIMIT EMS_FRAME_LOCATION MEM_EXCLUDE_REGIONS MEM_INCLUDE_REGIONS XMS_HANDLES XMS_MEMORY_LIMIT XMS_MINIMUM_HMA DOS_HIGH Use DOS_HIGH to load DOS outside the 640K low memory address space. NOTE: Select DOS_HIGH (Load DOS high); then select the Off radio button if your program requires that DOS is located below the 640KB address of DOS session memory. Selecting Off is similar to the statement to DOS=LOW. The default value for this setting is On, making all of the memory area from address 0 to address 640KB available to user programs. You must change this setting before starting the session. TIP: Loading DOS into high memory allows more available memory for application code and data within the 640KB address space. DOS_RMSIZE Defines the amount of conventional memory available to WIN-OS/2. NOTE: Use DOS_RMSIZE (DOS memory size) if you want to change the amount of memory available to DOS programs running in this session. The field for this setting shows the amount of memory, in kilobytes (KB), that a DOS program has for its use. Values range from 128 to 640. If you want to decrease the amount of memory available to DOS programs running in this session, drag the box, select a button, or type into the entry field. The maximum value, 640, is the default. You must change this setting before starting the session. TIP: This setting is used to decrease the amount of available memory to less than 640 KB. Do not decrease this value for WIN-OS/2 sessions. Decrease the amount of program memory if your video adapter requires some of the 640KB normally allocated to programs, or if your program cannot run properly in an area of memory only as large as 640KB. DOS_UMB Allows DOS TSRs and devices to control the upper memory blocks (UMBs). NOTE: Select DOS_UMB (DOS owns UMBs); then select the Off radio button when required to give ownership of upper memory blocks (UMBs) to certain types of terminate-stay-resident (TSR) programs and DOS device drivers. Memory addresses from 640KB to 1MB can be divided into UMBs of 16KB or more. When TSR programs and device drivers reside in UMBs, your other DOS programs can use all of memory address area 0 to 640KB. The DOS kernel normally owns UMBs and manages the loading of TSR programs and device drivers into a UMB using the DEVICEHIGH= and LOADHIGH= statements in your DOS CONFIG.SYS file. Some programs capable of loading into a UMB must own and manage the UMB. Change this setting to Off for a DOS session if you want to run a program that must own a UMB in that session. The default value for this setting is On. You must change this setting before starting the session. DPMI_DOS_API Allows you to control whether DOS API translation is enabled for DPMI applications in this session. NOTE: Select DPMI_DOS_API (DOS API Translation) if your program can use the DPMI (DOS Protected Mode Interface). The field for this setting contains a list, and the selection you make in this list determines whether requests for DOS system services are translated by the system or by your DOS program. Translating means changing the memory address of the initial request from above 1MB (protected mode memory) to below it (real mode memory) where DOS can access and fill the request. Select AUTO if some of your programs already perform this translation. You can identify a program that translates between upper memory and the lower 1MB by documentation stating that the program comes with a DOS extender based on the DPMI specification. Select ENABLED if you use programs that expect the operating system to perform the translation. An example of a program that relies on the operating system to translate is a program written for Windows. Select DISABLED if your programs do not use DPMI. The default value is Program-selectable. You must change this setting before starting the session. DPMI_MEMORY_LIMIT This setting allows you to specify the amount of DPMI memory, in megabytes, available for DOS session. NOTE: Use DPMI_MEMORY_LIMIT to define the amount of DPMI (DOS Protected Memory Interface) available to the DOS session. The field for this setting contains values expressed in 1 megabyte (MB) intervals, ranging from 0 to 512MB. To change the value, drag the box, select a button, or type into the entry field. This setting enables you to specify the amount of DPMI memory needed for your DOS programs, on a per-session basis. Select 0 if your DOS program does not use DPMI. The default value is 16 (MB). However, the value set by the installation program is 64. Increasing this setting for a WIN-OS/2 session enables more programs to run in this session. A Windows application may not be able to start or would exhibit poor performance behavior if it doesn't have enough DPMI memory. For Win32s applications, make sure you have the DPMI_MEORY_LIMIT set to at least 64. Paradox 7 and AutoCAD 13 will need 128MB of DPMI memory to run satisfactorily. You must change this setting before starting the session. DPMI_NETWORK_BUFF_SIZE Use this setting to control the size, in kilobytes (KB), of the network translation buffer for DPMI programs in this session. NOTE: The default value is 8 KB. The range is from 1 to 64 KB. This setting allows you to configure the size of the translation buffer for DPMI programs, for example, Windows programs that transfer data over a network. If a network-specific Windows program does not run correctly under OS/2, increase this setting, then restart the session. You must change this setting before starting the session. EMS_FRAME_LOCATION Use EMS_FRAME_LOCATION to change the location of the Lotus/Intel/ Microsoft Expanded Memory Specification (LIM EMS) expanded-memory region. Select the arrow to the right of the list to see all the choices. NOTE: Use this setting if your DOS session addresses a device that requires an area of memory within an automatically determined expanded-memory region. If you have a problem running a program that takes advantage of LIM EMS, change the EMS_HIGH_OS_MAP_REGION DOS setting to 0, then run your program. If the problem continues, change this EMS_FRAME_LOCATION value. Select NONE if you want to turn off the high EMS range. The default is AUTO, which enables the session to locate expanded memory automatically. You must change this setting before starting the session. EMS_HIGH_OS_MAP_REGION This setting allows you to adjust the size of an additional EMS region. NOTE: Use EMS_HIGH_OS_MAP_REGION to select an amount of memory that a DOS program can add to the 64KB expanded-memory region accessed by Lotus/ Intel/ Microsoft Expanded Memory Specification (LIM EMS). The field for this setting contains values in kilobytes units, ranging from 0 to 96 To change the value, drag the box, select a button, or type into the entry field. If you select values for the MEM_EXCLUDE_REGIONS and MEM_INCLUDE_REGIONS settings to avoid a conflict with addresses used by devices, you can set this EMS_HIGH_OS_MAP_REGION to an area that accommodates both your program and the device. To resolve an expanded-memory address conflict with a device, set MS_HIGH_OS_MAP_REGION to 0. The default value is 32. You must change this setting before starting the session. EMS_LOW_OS_MAP_REGION This setting allows you to use and to set the size of the remappable conventional memory. NOTE: Use EMS_LOW_OS_MAP_REGION to select an amount of re-mappable conventional memory. This setting affects only DOS programs capable of remapping conventional memory. The field for this setting contains values in kilobytes (KB) units, ranging from 0 to 576. To change the value, drag the box, select a button, or type into the entry field. The default value is 384. You must change this setting before starting the session. EMS_MEMORY_LIMIT This setting allows you adjust the amount of EMS memory. NOTE: Use EMS_MEMORY_LIMIT to define the amount of EMS (Expanded Memory Specification) available to the DOS session. The field for this setting contains values expressed in 16-kilobyte (KB) units, ranging from 0 to 32768. To change the value, drag the box, select a button, or type into the entry field. Select 0 if your program cannot use EMS. Select a value higher than the default for a program that requires a large amount of expanded memory. This setting enables you to limit the amount of EMS that a program reserves, which prevents a program from allocating more memory than necessary. The system does not reserve any EMS for a program until that program requests EMS. The default value is 2048. You must change this setting before starting the session. MEM_EXCLUDE_REGIONS This setting allows you to specify regions that EMS/XMS cannot use. NOTE: Use MEM_EXCLUDE_REGIONS to fill in any regions any regions between memory addresses 640KB and 1MB that you want to force the system to map to physical memory at the same address. EMS (Expanded Memory Specification), XMS (eXtended Memory Specification), or a copy of a ROM (read-only memory) program cannot use the areas you exclude. Type addresses as hexadecimal numbers. You can specify a range of memory, or you can supply a single address for the beginning address for a 4KB region. If you want to exclude several regions, separate them with commas. For example: C0000,D0000-D8000 By default, this field is empty. You must change this setting before starting the session. MEM_INCLUDE_REGIONS This setting allows you to specify regions that EMS/XMS can use between RMSIZE and 1 MB.. NOTE: Use MEM_INCLUDE_REGIONS to fill in any areas between memory addresses 640KB and 1MB that you want to designate for EMS (Expanded Memory Specification), XMS (eXtended Memory Specification), or a copy of a ROM (read-only memory) program. Type addresses as hexadecimal numbers. You can specify a range of memory, or you can supply a single address for the beginning address for a 4KB region. If you want to include several regions, separate them with commas. For example: C0000,D0000-D7FFF The include region D0000-D8000 will include the entire memory area between D8000 and D8FFF. Assign addresses to the include region when you know your DOS session does not use device drivers or hardware adapters that use memory between 640KB and 1MB. Including regions can improve the performance of programs that use EMS or XMS memory. By default, this field is empty. You must change this setting before starting the session. XMS_HANDLES This setting allows you to adjust the number of handles for XMS usage. NOTE: Use XMS_HANDLES to change the number of XMS (eXtended Memory Specification) handles set aside for use by the DOS session. The field for this setting contains values ranging from 0 to 128 (handles). To change the value, drag the box, select a button, or type into the entry field. Each XMS block has a handle (a unique number) associated with it, and the XMS facility allocates memory space to hold the quantity of handle numbers you specify. Use this setting to limit the reserved spaces. You can increase the value in this field if you expect your program to require a large number of handles. Setting aside space for a large number of handles may slow your system. The default value is 32. You must change this setting before starting the session. XMS_MEMORY_LIMIT This setting allows you to adjust the amount of XMS memory available. NOTE: Use XMS_MEMORY_LIMIT to specify the amount of memory any one DOS session can allocate to XMS (eXtended Memory Specification). The field for this setting contains values in kilobyte (KB) units, ranging from 0 to 16384. The value 16384KB is equivalent to 16 megabytes (MB). To change the value, drag the box, select a button, or type into the entry field. Specifying a large number for either the global or the per-session extended-memory limit can slow your system. The default value is 2048. You must change this setting before starting the session. XMS_MINIMUM_HMA This setting allows you to adjust the minimum allocation size of the High Memory Area (HMA). NOTE: Use XMS_MINIMUM_HMA to change the minimum of high memory area (HMA) available for use as conventional memory. The field for this setting contains values in kilobyte (KB) units, ranging from 0 to 63. To change the value, drag the box, select a button, or type into the entry field. Only one program per session can use HMA. You can use this setting to adjust the size of the minimum memory allocated to HMA. This prevents a small program from allocating HMA and wasting any area between the program size and the HMA maximum of slightly less than 64KB. Only a real-mode program can use HMA as conventional memory. If your program can run in the protected mode specified by DPMI (DOS Protected Mode Interface), you do not need this setting. The default value is 0, or no minimum, which causes the system to assign the entire HMA area to the first program requesting HMA. You must change this setting before starting the session. 6.3.5 Video settings For a DOS or Win-OS2 session, OS/2 provides the following available video settings. VIDEO_8514A_XGA_IOTRAP VIDEO_FASTPASTE VIDEO_MODE_RESTRICTION VIDEO_ONDEMAND_MEMORY (On-demand memory allocation) VIDEO_RETRACE_EMULATION VIDEO_ROM_EMULATION VIDEO_SWITCH_NOTIFICATION (Screen-switch notification) VIDEO_WINDOW_REFRESH (Window refresh interval) VIDEO_8514A_XGA_IOTRAP This setting is used to directly access the Model 9514/A or XGA video mode. TIP: Select VIDEO_8514A_XGA_IOTRAP; then select the Off radio button if you want your DOS program to access the model 8514/A or XGA (extended graphics array) video directly. If you select Off, your program might run faster, and you release the 1 megabyte (1MB) of memory allocated to saving video information in a DOS session. Certain operations such as painting a dithered background will run faster when settin if Off. If you have this setting Off and you switch from your 8514/A or XGA program, the screen image might not be correct when you return to the program. To correct this problem, set the VIDEO_SWITCH_NOTIFICATION (Screen-switch notification) DOS setting to On. This notifies your DOS program to redraw the screen. When VIDEO_8514A_XGA_IOTRAP is set to Off, you cannot copy information from that session to the system clipboard, nor can you view the program from a window. The default value is On to ensure that the screen image is restored on a screen switch. You must change this setting before starting the session. Set this to ON for all WIN-OS/2 sessions that run in 8514 or XGA video modes. VIDEO_FASTPASTE This setting is use to increase the speed of input other than the keyboard (e.g., character Cut and Paste transfers). TIP: Use VIDEO_FASTPASTE (Fast paste); then select the On radio button if you want to increase the speed of character Cut and Paste transfers between the clipboard and a DOS session. This setting does not work with programs that monitor keyboard interrupts directly. Further, if you use a program that re-buffers keystrokes internally, that internal buffer can overflow because of a large quantity of paste-transferred characters. The default value is Off. You can change the setting for this session at any time. Pasting into the DOS command prompt, or any application using DOS Console I/O functions, generally works. However, the Microsoft Editor (M) and its successor, Programmer's Workbench (PWB), can fail when using fast pasting, because they rebuffer keystrokes in an internal buffer, which can overflow. VIDEO_MODE_RESTRICTION This setting extends DOS conventional memory beyond the 640 KB address space by limiting the video mode support to text or CGA graphics. TIP: Use VIDEO_MODE_RESTRICTION if you want to remap as user ( conventional) memory the non-visible portion of video memory (beyond address 640KB) for a program that displays only text or low-resolution graphics, such as those produced by a CGA (color graphics adapter). The field for this setting contains a list. Select the arrow to the right of the list to see all the choices. Selecting CGA (for a program that is text-only or uses low-resolution graphics) adds 96 kilobytes (KB) to program memory space. Selecting MONO (for a program that uses monochrome text) adds 64KB to program memory space. This is valuable for applications that do not take advantage of EMS or XMS memory extenders. The DOS_RMSIZE (DOS memory size) setting (RMSIZE) must equal 640KB. WARNING: Do not use this setting for a program that enables video modes with higher than CGA or MONO resolutions. If you use this setting, a program that enables higher resolution video modes might change program data placed in the remapped area beyond the address 640KB. The default value is NONE. You must change this setting before starting the session. VIDEO_ONDEMAND_MEMORY This setting delays allocation of a video-save buffer which can free memory swap space for use by full screen session. TIP: Select VIDEO_ONDEMAND_MEMORY (On-demand memory allocation); then select the Off radio button if you want to ensure that a full-screen session operates in the highest resolution video modes. When you switch from a full-screen session, the system saves the full-screen video image in a reserved area of memory. Selecting Off causes the system to reserve the memory space for saving a video image at the start of a program, rather than at the time of the screen switch. Selecting Off might prevent a program from failing for lack of sufficient memory to save a high-resolution, full-screen image at the time you switch from the full-screen view. The default value is On, which (1) causes the system to reserve this memory space for saving the video image at the time you switch from full-screen, (2) enables you to start a program quickly, and (3) frees memory space for other programs. Selecting ON allows a full screen DOS session to run without pre-allocating a virtual video buffer for high-resolution graphics modes. Using this setting does not prevent execution of graphics application. It means that allocation of the buffer is delayed until it is needed. This can save a substantial amount of memory/swap space, which might be important under certain low-memory conditions. It also enables you to start a program quickly You can change the setting for this session at any time. This setting reduces swap space requirements for full screen DOS sessions If the allocation of a virtual video buffer for a full screen DOS session fails at the time the application changes video modes, the sessions will be frozen and you must switch back to the shell to free memory. Unless you are able to free memory from another session, you may be unable to get the DOS application running again. This is a concern if the application contains unsaved data. VIDEO_RETRACE_EMULATION This setting allows simulation of video retrace status port to provide faster access which improves text scrolling speed. TIP: Select VIDEO_RETRACE_EMULATION; then select the Off radio button if you want to disable frequent video retrace. When this setting is Off, retrace occurs only at the interval specific to the video mode of the running DOS program. DOS applications that poll the video retrace status port often write to the screen only during the retrace interval, even though it is safe (on EGA and VGA adapters) to draw at any time without causing interference (also known as "snow"). This feature causes most applications to write to the screen more often, and compensates for the performance drag imposed by monitoring the port in the first place. A few DOS programs run slower with VIDEO_RETRACE_EMULATION set to On. Changing this setting to Off increases the performance, but screen-switching is not as reliable. During screen-switching, the program palette may not be restored correctly; this may result in a blank screen. The default value is Off. You can change the setting for this session at any time. Set Off for games and graphics applications. This setting controls the frequency of video retrace. A few DOS applications run more slowly with this setting set to ON. When set to off, retrace occurs only at the interval specific to the video mode of the running DOS application. VIDEO_ROM_EMULATION This setting emulates text based video ROM functions (INT 10h ) for performance and codepage support. TIP: Use VIDEO_ROM_EMULATION; then select the Off radio button if you want to disable the emulation (in text mode) of these common video functions: WriteChar, WriteTTY, and full-screen Scroll. Select Off if your video read-only-memory (ROM) provides enhancements to these functions. The default value is On, Because the INT 10h ROM Video services are well documented, incompatibilities are unlikely, and the performance benefits of using the emulation are quite significant. You can change the setting for this session at any time. Provides faster output for selected video functions than ROM services typically provide. This also has a dramatic effect on the performance of those functions in a window. Some ROM might offer enhanced services that are not included in the emulation. Applications that rely on these services might not run correctly. VIDEO_SWITCH_NOTIFICATION This setting notifies the DOS program when the session switches to or from a full screen VDM session. TIP: Select VIDEO_SWITCH_NOTIFICATION (Screen-switch notification); then select the On radio button if you want to notify a DOS program about a switch between background and foreground. If you select On, programs that monitor screen-switching will save or redraw the screen on a screen-switch. Select On if the OS/2 video driver does not support all the features offered by your video adapter and used by your DOS programs. This setting allows applications that monitor this notification to redraw their screens as needed. This might be necessary for some video adapters that provide modes (and applications that use those modes) that are not fully supported by the OS/2 video driver or are slightly incompatible. It also is valuable in situations where an OS/2 video driver has not allocated a virtual video buffer (see VIDEO_8514_XGA_IOTRAP). Use this setting if you use the VIDEO_ONDEMAND_MEMORY (On-demand memory allocation) DOS setting, because concurrent buffer allocation and screen switching can make the screen go blank. For WIN-OS/2 sessions, set this setting to On. For standard monochrome, CGA (color graphics adapter), EGA (enhanced graphics adapter), and VGA (video graphics adapter) video modes, the OS/2 video driver should perform adequately with this setting at Off. If you find your program redraws too often with this setting on, select Off. The default value is Off, because most standard video modes do not use screen-switch notification. You can change the setting for this session at any time. WIN-OS/2 understands this notification and will redraw the screen when the screen is switched. For WIN-OS/2 sessions, set the setting to ON. This setting must be ON if the VIDEO_8514A_XGA_IOTRAP is set OFF VIDEO_WINDOW_REFRESH This setting adjusts the window update frequency for a specific DOS session. TIP: Use VIDEO_WINDOW_REFRESH to adjust the time that elapses before a window is redrawn. The values range from 0.1 second to 60.0 seconds (1 minute). To change the value, drag the box, select a button, or type into the entry field. Increase the value, thereby increasing the delay between screen redraws, if you run a program (such as a graphic program) that writes frequently to video memory. Increasing the delay between each write to video memory frees the processor for other program tasks. Reduce the value if you find the program hard to use or because you prefer more frequent screen image updating. This setting does not change the rate of scrolling, keyboard input display, or any video events other than refresh. To test the effect of changing the value for this setting, test the text output from a DOS DIR or TYPE command before and after adjusting the setting. The default value is 0.1, which represents the interval between window updates. You can change the setting for this session at any time. A large refresh period can make an application unusable (or at least, very hard to use). 6.3.6 Mouse and touch-sensitive settings The following list contains the available mouse and touch-sensitive screen settings. MOUSE_EXCLUSIVE_ACCESS TOUCH_EXCLUSIVE_ACCESS MOUSE_EXCLUSIVE_ACCESS Allows VDMs to run applications that maintain their own mouse pointers. Some DOS applications manage their own mouse positions and movements; in many cases, the application's values for mouse sensitivity and/or double-speed threshold are different from those of Presentation Manager. As a result, a Presentation Manager mouse pointer might be outside the VDM window while the application pointer is somewhere in the window not receiving any mouse events. This means having two asynchronous mouse pointers on the screen. TIP: Select MOUSE_EXCLUSIVE_ACCESS; then select the On radio button if you use a program that manages its own mouse positions, setting mouse sensitivity and mouse tracking speed separately from Presentation Manager mouse settings. For example, use MOUSE_EXCLUSIVE_ACCESS and select On if your screen displays two unsynchronized mouse pointers, one in the DOS session, and one in a Presentation Manager session or on the Desktop. After you select On, you must press a mouse button inside the DOS session to delete the Presentation Manager pointer. Press Alt, Ctrl+Esc, or Shift+Esc to display the Presentation Manager pointer again. You force the physical mouse driver to send its events directly to the virtual mouse driver without going through Presentation Manager. Only one mouse pointer appears when the particular VDM window has the focus The default value is Off. You can change the setting for this session at any time. However, this only marks the VDM window and does not actually activate the setting. To activate it, press a mouse button in the VDM window.The Presentation Manager pointer disappears, leaving only the application pointer. To regain the Presentation Manager pointer, press any of the hot keys (Alt, Ctrl+Esc, Shift+Esc). Examples: WordPerfect 5.1 has its own block-shaped mouse pointer that appears together with the system mouse pointer when the window has the focus. Turning MOUSE_EXCLUSIVE_ACCESS on allows the user to remove the system mouse pointer when in WordPerfect. TOUCH_EXCLUSIVE_ACCESS TIP: Select TOUCH_EXCLUSIVE_ACCESS; then select the On radio button if a program you run in a DOS Window does not respond properly when you touch a touch-sensitive display (such as the IBM PS/2 Touch Display, Model 8516) that is connected to the mouse adapter of an IBM Personal System/2. For example, if a drawing program does not draw lines when you move your finger across the display screen, you use TOUCH_EXCLUSIVE_ACCESS and select On. You do not need this setting for a program running in a DOS full screen session. When this setting is On, the DOS program reads your position in any area of the screen you touch. For example, if you touch the upper-left corner of the screen, the program reacts as though you are touching the upper-left corner of the window. To have the place you touch match the position you want to touch in the window, make the window the same size as the screen. The default value is Off. You can change the setting for this session at any time. 6.3.7 Settings affecting communications applications The following settings will affect the performance of Communications applications. COM_DIRECT_ACCESS COM_HOLD COM_RECEIVE_BUFFER_FLUSH COM_SELECT HW_ROM_TO_RAM HW_TIMER COM_DIRECT_ACCESS When set on, VCOM.SYS allows direct access to the COM ports. TIP: Use COM_DIRECT_ACCESS (COM direct access) to give a program direct hardware access for COM ports. Select the On radio button to track which COM port the DOS session is using. The default is Off, which disables direct access to a COM port. You must change this setting before starting the session. Programs that need direct access, such as AS/400 Asynch Router, FastLynx, FSDUAT, and MS Word will now work. Buffers in COM.SYS cannot be used. Characters might be lost, and some applications might suffer from the lack of buffering. The default is Off. COM_HOLD When set on, provides exclusive access to COM ports for the specified VDM, preventing other processes from using the port and preventing the operating system from releasing the port until the VDM terminates. TIP: Select COM_HOLD (Hold COM resource); then select the On radio button if you want to give exclusive use of a particular communications port (for example, COM1) to your DOS session. Selecting On prevents other sessions from using the same COM port until you end the DOS session. It also enables the DOS session using the COM port to access data files on your disk or diskette. When this setting is Off, the operating system releases the COM port as soon as the program using it ends, even if the DOS session from which you access the port is still active. Some DOS communications functions, such as accessing a computerized bulletin board, require two programs -one that dials the bulletin board, and one that enables you to exchange information with the bulletin board computer. Select On if your system sometimes disconnects a dialed connection from a DOS session. For example, select On if you have difficulty maintaining communication between a DOS program and a bulletin board. The default value is Off. You must change this setting before starting the session. If not required by the application running in a VDM, this setting might prevent their applications from accessing COM ports. The default setting is Off. COM_RECEIVE_BUFFER_FLUSH This setting allows control of the received data buffers when the DOS session is switched to the foreground, or when the DOS program enables the received data interrupt. TIP: Select COM_RECEIVE_BUFFER_FLUSH to control the content of the received data buffers when the received data interrupt is enabled by a DOS program or when a DOS session is switched from the background to the foreground. The field for this setting contains a list from which you can select Receive Data Interrupt Enable, Switch to Foreground, ALL, or NONE. Some DOS programs require that communications data be discarded when the program is switched to the foreground; other DOS programs require that the data be kept. You can use COM_RECEIVE_BUFFER_FLUSH to override the program setting and discard or keep the communication data for all programs in this DOS session. Select Receive Data Interrupt Enable to indicate that, for this DOS session, the operating system is to discard data in the received data buffer when the DOS program enables the received data interrupt. Select Switch to Foreground to indicate that, for this DOS session, the operating system is to discard data in the received data buffer when the DOS program is switched to the foreground. Select ALL to indicate that communications data be discarded when a DOS program enables the received data interrupt or the program is switched to the foreground. Select NONE to indicate that, for this DOS session, the operating system is to keep data in the received data buffer. The default is NONE. You can change the setting for this session at any time. COM_SELECT When set, allows a program to select and use one communication port. TIP: Use COM_SELECT (COM Selected Port Access) to select the COM port for this DOS session. The field for this setting contains a list from which you can select either ALL, COM1, COM2, COM3, COM4, or NONE. For example, if you select COM1, only COM1 can be accessed from this DOS session. Some DOS programs take control of all available COM ports, even though they access only one. Therefore, once this DOS program starts, a COM port cannot be accessed. COM_SELECT prevents the DOS program that takes control of the available ports from also taking control of unnecessary resources. Select NONE if you do not want any COM ports available for the DOS programs you run in this DOS session. The default is ALL, which enables all COM ports to be used from this DOS session. You must change this setting before starting the session. You can limit your program to just the COM port that it requires; some programs, such as like LapLink Pro, try to take over every available COM port. Communications that are not selected are hidden from the program. Some programs need to have access to the COM ports to work, even if they are not using them. HW_ROM_TO_RAM Enabling HW_ROM_TO_RAM causes the operating system to copy read-only memory (ROM) and run the copy in 32-bit random access memory (RAM). TIP: Select HW_ROM_TO_RAM (Copy ROMs to RAM); then select the On radio button if you want to copy the Basic Input Output System (BIOS) from read-only memory (ROM) to random access memory (RAM). BIOS might run faster in ROM than in RAM. Also, to test and debug a program, you can set break points in the RAM copy. This setting is useful if debugging the kernel. The change allows normal breakpoints to be set in ROM and allows stepping over calls and loops. If an application writes to a memory address used by the ROM while this setting is enabled, it might cause unpredictable results for that application and for every application run thereafter in the VDM. The default value is Off. You must change this setting before starting the session. HW_TIMER This setting allows an application to have direct access to the 8253 timer ports, and prevents the operating system from trapping, or intercepting, the timer request and emulating a timer. TIP: Use HW_TIMER (Timer Hardware Access) if you want to give a program direct access to hardware (model 8253) timer ports. Select the On radio button to prevent the operating system from trapping, or intercepting, the timer request and emulating a timer. Use this setting for timing-critical programs. Your program might require direct timer access to avoid the trapping overhead introduced by an emulated timer. (An emulated timer does not include in its timing the amount of time used to trap a timer request.) Further, some computers poll timer ports, introducing an additional delay that can become too long when added to trapping overhead. A program may not function properly if you select On after the program has already emulated timing. The program may not function properly if you change the setting back to Off after the program directly uses a hardware timer, because the program then fails to adjust properly for emulated timing. Selecting On for this setting for multiple DOS sessions can cause programs running in these sessions to interfere with one another. Certain timing-critical applications do not run (or run much slower) if accesses to timer ports are trapped and virtualized. In addition, the values they read do not accurately reflect the amount of time passed, because they do not take trapping overhead into account. Enabling this setting allows certain timing-dependent code to run more effectively. Applications that change the divisor before this setting is enabled, and then read the timer ports after the setting has been enabled, might not function properly. If the setting is enabled first, the VDM does not detect changes to the divisor correctly, and the simulated interrupt frequency will be incorrect. The ROM on some systems implement very brief delays by polling the timer ports. These delays become unacceptably long unless direct timer port access is allowed. The default value is Off. Most applications operate normally with timer virtualization. You can change the setting for this session at any time. It is useful to change this setting dynamically and watch for changes in application performance. Chapter 7 Performance Exploitation of the Underlying Hardware 7.0 Introduction OS/2 Warp 4 supports a variety of hardware devices for use in games, video display, input, printing, speech, multimedia, and data communications. As a result, OS/2 Warp 4 provides a number of settings which can be used to tune individual device performance. Those tuning tips are discussed in the following sections. 7.1 Video display resolutions The resolutions that can be set for a particular display adapter are dependent on the: Specific display being used Specific display adapter being used Graphics accelerator chip set on the adapter Video device driver being used Amount of video memory on the adapter Many of the accelerated video device drivers with OS/2 support the various resolutions and number of colors. Not all of the device drivers support all of the resolutions. In general, the higher the display resolution, the slower the performance would become. However, since high resolution has better visual effects, you have to decide how to compromise between visual and performance. Changing display configuration Some adapters have configuration DIP switches to select desired vertical refresh rates for high-resolution modes (800 x 600 and 1024 x 768). Others are shipped with DOS video-configuration utility programs that allow selection of refresh rates. Usual refresh rates range from 56 Hz to 72 Hz non-interlaced or 88 Hz interlaced. The display has to be capable of synchronizing to this frequency for proper mode set. Make sure you understand how OS/2 controls the display configuration discussed below before attempting to change your display configuration Controlling video display configuration SVGA display and video mode configuration under OS/2 is controlled by the SVGADATA.PMI file. This file can be provided by the display adapter manufacturer or created using the SVGA utility program. he SVGA utility program gets information from the SVGA chip set to set each video mode and captures the current state of the display adapter. This information is stored in the SVGADATA.PMI file and used when the system is started. TIP: Both the SVGA.EXE and SVGADATA.PMI are located in the \OS2 directory. To create the SVGADATA.PMI file, type one of the following commands at a DOS command prompt and press Enter. SVGA ON - Generates the SVGADATA.PMI file, which enables OS/2 SVGA support. SVGA ON DOS - Generates PMI information when executed outside the OS/2 DOS environment. This generates an SVGADATA.DOS file that can be renamed to .PMI and copied to the \OS2 directory. This entry might be required if your SVGA adapter uses DOS device drivers to configure the Trident adapters are an example. SVGA ON INIT - Generates default display information for some TSENG and Cirrus Logic based display adapters. SVGA OFF - Deletes the SVGADATA.PMI file, disabling OS/2 SVGA support. SVGA STATUS - Returns your graphics chip set, as it appears to OS/2. Note: The SVGA utility program might be affected by video configuration programs, Terminate Stay Resident programs (TSR), and switches and jumpers on the display adapter. Configure your video adapter properly before using the SVGA utility program to create the SVGADATA.PMI file. Switching to a lower capability display after installing high-resolution (SVGA) drivers might cause the system to start out of synchronization. TIP: Follow this procedure to switch to a display with less capability: Double-click on DOS Full-Screen command prompt. Run the DOS display configuration utility program supplied with your SVGA adapter to properly configure your display adapter and display. Change to the \OS2 directory on your hard disk. Type SVGA ON. Press Enter to start the SVGA utility program. This utility program saves the current state of your video configuration. Shut down your system. Restart your system to enable the new display. Note: You can also use these instructions if you start a specific version of DOS. Substitute the following step for step 4. Type SVGA ON DOS and press Enter. When the SVGA utility program finishes, type: RENAME\OS2\SVGADATA.DOS \OS2\SVGADATA.PMI Press Enter. If your system has an 8514/A adapter, you can improve the performance of your Windows programs by changing their properties. Open the Properties notebook for each Windows program and change the following WIN-OS/2 properties: VIDEO_8514A_XGA_IOTRAP to OFF VIDEO_SWITCH_NOTIFICATION to ON 7.2 Tuning tips for printing performance Printing performance can be tuned by making changes with printer and job property settings, changes to the CONFIG.SYS, and changes to the print spooler. Some of these changes are generic and affect all printing, while some affect only certain types of printing. 7.2.1 Printer object settings Every object, including the printer object, has adjustable settings. The printer object has several settings that affect performance. These are Job Properties and Printer Properties. Printer Properties can be located by turning to the Printer driver notebook page, click on the printer object you wish to view. Use mouse button 2 to display its context menu, and then select settings to see the printer properties. Job Properties can be accessed by selecting the Job Properties button on the Printer driver page of the notebook. Job Properties control things such as resolution, orientation and number of copies while Printer Properties describe the way the printer is set up, like the number of paper trays or font cartridges installed in the printer. Printer Property information is stored in the printer driver. Not all settings are supported by all printers. Queue options include Job dialogue before print, printer-specific format and print while spooling. Job dialog before print allows the user to specify job properties on a per-job basis, rather than using default job properties. Printer-specific format creates print jobs that only a specific type of printer can print correctly. These jobs take much more storage than printer-independent jobs. Print while spooling allows the job to begin printing immediately, without waiting to receive the end of job from the program. Print options includes start and stop times. Not all settings listed in this section are available for all printers, but, if available, they do change the performance of printing on your system. The following properties will affect performance. Memory (KB) By specifying the amount of memory your printer has, the printer driver can determine if compression is to be used. Compression improves performance by reducing the amount of data that has to go to the printer. Resolution This option allows you to vary the resolution of your graphics printing. The selections are usually presented in terms of "dpi" (dots per inch). The higher the number the better quality your print will be. The drawback is that it will also take longer to print. However, you can use a low number for draft output and select the highest number for printing the finished version. A printer's memory size can limit the resolution you can choose. Compression This option compresses graphic print data which has the advantage of faster printing for most jobs that contain graphics. Two common types of compression are G4 and TIFF Packet Byte. G4 - This improves the printing of graphic data that does not have large numbers of alternating bits, for example, large areas that are filled with solid color. G4 is available on all IBM 4029 printers and IBM 4019 models that support Form Feed Time Out. The 4019 models do not support G4 when printing in landscape mode. TIFF - This improves the printing of graphic data that consists mostly of repeating bytes, for example, large areas having one type of fill pattern. Fast System Fonts This option allows you to download (copy) OS/2 system bitmap fonts, to the memory of your printer. They will be copied to the printer as a device bitmap font. The advantage is that a device font uses a smaller spool file and prints quicker than a font printed in raster (graphic font) form. If overlaying system fonts with graphics, or if print output differs from that shown on the screen, then disable this option. Printer Patterns Pattern filling commands will be directly sent to the printer instead of asking the operating system to perform the pattern filling. This reduces the spool file size for pages that contain dense graphics (shaded and patterned rectangular areas), and large scaled text. These improve printing speed. This option should not be used if printer output patterns must exactly match patterns displayed on your screen, nor if there are overlapping shaded or patterned graphics in your document. HP-GL/2 This option enables HP-GL/2 output. This allows the supporting of many more graphics commands in the printer. This will allow faster printing of graphic objects such as lines and circles. This also reduces the spool file size and helps to print more quickly. For faster output, enable Page Protection (which may require additional printer memory) on both the printer and Printer Properties dialog and use HP-GL/2. Large Buffers Large Buffers allow the printer drivers to use more of OS/2's memory in order to speed up printing. Around 4 MB is used for printing so system memory should be at least 8 MB. If this option is set to OFF, then smaller memory requests, around 1 MB will be used conserving memory. If you have less than 8MB of system memory, then it is better not to use this option. Print While Spooling The Print while spooling option allows the printer to start processing the print job before the application has finished sending the entire job to the spool queue. Print jobs formatted in printer-specific format (PM_Q_RAW) can speed up printing by using Print While Spooling. This "threading" will increase throughput but could cause timeout problems while printing large files with images. To solve this problem you can disable the Print While Spooling option or you can increase the timeout value setting in the port object. The default is On. Start and Stop Time Start Time and Stop Time can be entered for each print object. For example, time settings for "lunch time", 12:00p - 12:50p, can be used which enables printing when you are not there. 7.2.2 Fonts impact print speed Fonts can be stored in several places. They can be built into the printer, housed on a cartridge that's plugged into the printer, or reside on your system and be downloaded to the printer as needed. When you use printer-based fonts, whether built-in or on a cartridge, you can print faster than if you first have to download them. Fonts are either bitmapped or scaleable. With a bitmapped font, each character is stored as a collection of individual pixels, so you need a separate definition for each point size. Scaleable fonts, also called outline fonts, are stored as algorithms. This means that the system can generate the font in any size using the algorithm. Generating scaleable fonts takes time. If you're using one font in just one size to format an entire document, the extra time may be hardly noticeable. If you're using a lot of different fonts, the time may be considerable. You can use any combination of these font variations, bitmapped or scaleable, stored in the printer or in the computer. Clearly, you'll get the fastest printing with bitmapped fonts stored in the printer (see Fast System Fonts), and the slowest with scaleable fonts stored in your computer. Despite the speed disadvantage, there are strong arguments for storing fonts on your computer and for using scaleable rather than bitmapped fonts. First, most printers have room for only one or two font cartridges. So if you want to add new fonts to your library, you have to switch cartridges when you want to use them. It's easier and much more efficient to store them on your hard disk, where they're all available at the same time. An advantage to scaleable fonts is that you're guaranteed to have the typeface available in any size you'll ever need. Scaleable fonts require far less storage space on-disk, or in your printer, than a set of equivalent bitmapped fonts in a range of sizes. 7.2.3 PRINTMONBUFSIZE The PRINTMONBUFSIZE parameter in the CONFIG.SYS file sets parallel-port device-driver character monitor buffer sizes for LPT1, LPT2, and LPT3. To speed up data transfers to devices connected to your system's parallel ports, increase the associated device-driver monitor buffer sizes. For example, PRINTMONBUFSIZE=2048,134,134 increases the device driver buffer for a device connected to LPT1 to 2048 bytes. The default is 134,134,134. 7.2.4 OS/2 spooled printing Printing through the spooler will provide the best performance on your system. Here are some suggestions and settings that can affect printing performance. OS/2 Spooler It is recommended that the OS/2 spooler be enabled when more than one print job can be sent to the printer at one time. The spooler provides flexibility while optimizing the use of the system's print resources. The OS/2 spooler can print a job in the background while you continue using the application. You can also set the spooler's print priority via the spooler object setting. The OS/2 spooler can support a number of printers simultaneously and can be configured so that jobs on a single queue can be shared among all the printers. This load balancing, called pooling, is particularly important in server environments and can be achieved without the knowledge of your applications. Jobs can also be reprioritized while they are waiting in the queue. For example, an urgent job can be given a higher priority than other queued jobs or can be selected to print next, see Changing a Print Job's Priority. If only one print job will be active on your printer at a time, you can disable the spooler. This will save memory and remove one process and one thread from your system's overhead. Spool Path If print jobs are very large, you may assign a different spooler path (drive or path) that has more space than your install drive. If your print usage is heavy, you want to place the spool file on your fastest hard disk. The spool path is a setting of the spooler object. Print Priority The OS/2 spooler has a setting called Print Priority. This allows you to vary the spooler's priority from low to high. The default setting allows printing to be balanced with your use of the desktop and your applications. If your application appears to be printing slowly, you may want to choose a slightly higher value so that printing will complete faster. If you choose a higher value, OS/2 will let print jobs print faster, but this may cause your desktop or applications to respond slower. In a print environment where very little on screen work is performed or where print performance is of utmost concern, you should increase the value. Priority changes become effective when you close the spooler object folder. Spool File Formats There are two formats of spool file data. They are the standard (PM_Q_STD) or the raw (PM_Q_RAW) spool file data formats. The standard format is much preferred as it consumes much less disk space than the raw format file. Having less data to send across the parallel port saves time in getting the data into the printer's buffer. Network traffic is also reduced if printing across a LAN. Changing a Print Job's Priority Changing a print job's priority will cause that particular print job to print before any other queued job. To do this, click on the print job you wish to change. Use mouse button 2 to display its context menu, and then select print next. You can change the priority of a print job so that it can print before or after other jobs queued. To do this, click on the print job you wish to re-prioritize. Use mouse button 2 to display its context menu. Open Settings and change the value in the Priority field. Note: Once a job has started printing, it is no longer possible to change its priority, the Settings option is not available. 7.2.5 Printing from DOS While there are no performance specific tuning options, there are two things to check. Do not use the LPTDD.SYS device driver unless necessary. (The DOS application is using INT 21h and is not closing the LPT1 handle). This will slow down your DOS printing performance. The other is the DOS setting called PRINT_TIMEOUT. This is useful for DOS applications which do not explicitly close their print jobs. This is the time that OS/2 waits before forcing a print job to the printer. A timeout of 1 or 2 seconds is sufficient for small print jobs, such as copying the contents of the screen. However, when printing large files, formatting documents, or running calculations, the value must be set high enough to allow all print results to reach the spooler before the time limit expires. If not, results go in two or more spool files instead of one, and the resulting output may be unsatisfactory. The default time is 15 seconds. 7.2.6 Printing from WIN-OS/2 You should always keep the OS/2 Spooler enabled to get the most benefit out of the OS/2 print subsystem. This will assure that even from the WIN-OS/2 environment, printing is done in a separate thread. You should also keep the WIN-OS/2 Print Manager disabled unless you are using a COM attached printer. That is, always keep the WIN-OS/2 Print Manager icon closed. The OS/2 Spooler allows multithreading and can deal with huge print files, even while you work in WIN-OS/2. Print jobs sent from any WIN-OS/2 application to a parallel attached printer won't show up in the WIN-OS/2 Print Manager. In this case if you need to view or manipulate these print jobs, use the correct OS/2 printer object on the Desktop. WIN-OS/2 Ports and Drivers You should direct application output to LPTn.OS2 (where n is 1,2,3) where possible. LPTn refers to the physical printer port. LPTn.OS2 is a file which is intercepted by WIN-OS/2 and routed directly to the spooler. This will provide improved performance over the standard LPT port assignments. You should always install equivalent printer queues in the OS/2 Desktop for your WIN-OS/2 printers even if you are only going to print to them from WIN-OS/2. If there is no equivalent OS/2 printer driver available then use the IBMNULL.DRV printer driver found in the OS/2 printer object. WIN-OS/2 COM Attached Printer If you have a COM attached printer and you would like to have your print jobs spooled, then enable the WIN-OS/2 Print Manager. This should be the only reason for you to use the WIN-OS/2 Print Manager. Remember that print jobs directed to LPTn.OS2 and LPTn will still go through the OS/2 Spooler. TIP: If your printer performance seems slow, try to increase the size of the font cache. The default setting is 96KB. For graphic arts applications, you might want to use a font cache size of 128KB or larger. The size of the font cache determines the amount of system memory available to store font information. The default setting for the font cache is 96KB. You can set the font cache from 64KB to 32000KB. If you are using many typefaces or sizes, you might want to increase the font cache size to improve performance. Experiment with the font cache size parameter to see how it affects performance. If your applications seem unusually slow when you scroll, change pages, or display fonts, your font cache size is probably too small. To change the font cache size: Double-click on WIN-OS/2 Groups. Double-click on Adobe Type Manager. Double-click on the ATM Control Panel. Click on the Up Arrow in the Font Cache field to increase the size, or select the Down Arrow to decrease the size. Click on the Exit push button. A pop-up window appears, asking whether to restart the WIN-OS/2 session or return to the current WIN-OS/2 session. You must restart the WIN-OS/2 session for your change in the font cache size to take effect. ATM can use pre-built fonts (soft fonts) or resident fonts (cartridge fonts or fonts built into the printer) when the exact font size and style are available. This reduces the amount of printer memory required to print some pages and might improve printing performance. The Adobe Font Foundry program (included with all Adobe Type Library packages) can be used to generate such soft fonts; the ATM Control Panel can then be used to turn this feature on and off. If you are using ATM with a PostScript printer, PostScript soft fonts are automatically downloaded when you print; you might want to download fonts that are not resident in your printer prior to printing. Downloading fonts before printing can increase printing performance. This feature is especially useful if you frequently use the same fonts on your PostScript printer. 7.2.7 Printing from OS/2 applications TIP: Font selection - The selection of text fonts can significantly affect printing performance. OS/2 supports two types of fonts: downloaded SYSTEM fonts and DEVICE fonts. DEVICE fonts are built into the laser printer and perform much faster. When text is formatted for the printer by the OS/2 spooler, one of two paths is taken: (1) for each SYSTEM font text character, the spooler must request a bitmap of the character from the OS/2 operating system, or (2) for DEVICE fonts, the text character is sent directly to the printer as an ASCII character. The results of certain printing tests for a 10 page Lotus WordPro for OS/2 text only document show DEVICE fonts to print 4-to-1 faster than SYSTEM fonts. It also showed 2-to-1 improvement printing a six page Lotus Freelance for OS/2 document which was mostly text with a Freelance SmartMaster background. The following is a list of fonts which may be supported by your laser printer as DEVICE fonts. The list varies between laser Universe CGTimes Antique Olive Coronet Courier Garmond Antiqua Albertus Garmond Kursiv Garmond Halbfett Letter Gothic Marigold WingDings Reg Arial Reg Symbol True Type Times New CGOmega There are a number of SYSTEM and add on fonts for OS/2 which do not perform as well as DEVICE fonts. These include Helvetica and Times New Roman which are very popular. It is suggested that you substitute the device font equivalents; for example, Univers for Helvetica and CGTimes for Times New Roman. Large Buffer - The Large Buffer option allows the OS/2 Spooler to temporarily use 4 MB of system memory to format the document for the printer, the default for OS/2 Warp Versions 3 and 4 is 1 MB. For a one page document with four large bitmaps mixed with text; the printing time with Large Buffer selected was 50% faster. Large Buffer is set in the printer JOB PROPERTIES - OPTIONS panel. Spooling format - The overall time for both spooling formats, standard or raw, to print a document is about the same. However, the STD format is sent to the OS/2 Spooler much faster than RAW format and returns control of the mouse and cursor to the user. When RAW format is used, the application must format the document in the foreground which ties up the keyboard much longer, whereas with STD format, the OS/2 Spooler formats the document in the background. The STD or RAW format selection, if available, is in the PRINT JOB PROPERTIES panel of the application. Some applications, such as Lotus WordPro for OS/2, offer only the faster spooling STD format. Spooler priority - As previously discussed, increasing the priority of the OS/2 SPOOLER has a double edged effect. Printing time can be improved up to one third when the OS/2 Spooler priority is increased, but the mouse and keyboard responsiveness decreases accordingly. If absolute printing time is important, setting the OS/2 Spooler priority to the highest setting will help. You might also consider foreground printing for a single user printer by disabling the OS/2 Spooler. Both of these options are set at the OS/2 Spooler icon which is in the OS/2 System - System Setup folder. Click on the OS/2 Spooler icon with the right mouse button. "Disable Spooler" can be selected, or click on "Settings" to open the OS/2 Spooler settings notebook to change the "Spooler Priority". Disk cache - Smaller improvements can be gained by increasing the disk cache size for the file system on which the spooler stores it's temporary files. The spooler temporary directory can be changed in the OS/2 Spooler settings notebook. Generally, sizes larger than 4096 kilobytes for a desktop PC provide little, or no improvement. Shared network printers can benefit more when the disk cache is increased on the server. Increasing disk cache permanently reduces the amount of memory available to other applications. Type "HELP DISKCACHE" for the FAT file system, and "HELP HPFS.IFS" for the HPFS file system for information on setting these parameters. Typically, the default disk cache sizes perform well for most documents. 7.3 Tuning tips for speech performance IBM VoiceType is a new and creative approach to personal computing: using your voice to communicate with your computer. VoiceType has two components: Navigation lets you use voice commands to move around the OS/2 Desktop, to manage files, folders, and windows, and to work with your programs. Dictation lets you write letters and other documents without using a keyboard. You dictate the words and they are converted to text at a rate of 70 to 100 words a minute. Use sleep mode when you want VoiceType to stop listening, but you want to be able to turn VoiceType on with a voice command. Using sleep mode when you are not using voice commands or dictation increases operating-system performance. To turn on sleep mode, use either of these methods: Say "Go-to-sleep." Click on Go to sleep on the Actions menu on the Voice Manager status window. To turn off sleep mode, use either of these methods: Say "Wake-up-please." Click on Go to sleep on the Actions menu on the Voice Manager status window. NOTE: If sleep mode is active, the microphone button shows the microphone lying down with Zzz across the top of it. 7.3.1 Hardware requirements Voice type applications are very processing and memory intensive. For acceptable performance , the hardware requirements as suggested by OS/2 Warp 4 installation are: Intel Pentium 100MHz or higher processor 24MB-32MB of RAM hard disk with at least 225MB disk space (user selectable) 640x480 resolution display with 256 colors IBM compatible mouse is required diskette drive A and CDROM driver 14.4K or higher modem or network connection for Internet access Sound card for multimedia or speech High quality microphone for speech (requires Active Noise Cancellation feature, ANC, for optimal performance.) Chapter 8 Tuning Tips for a Networked OS/2 Workstation 8.0 Introduction OS/2 Warp 4 is a critical component in IBM's vision of the complete, managed, client-sever system. It is the key element which allows the PC to become the focal point of information processing and places the user in control of this information. OS/2 Warp 4, as the integrating platform, provides a wide degree of support for many connectivity products as well as supporting other existing networking products. This chapter covers performance tuning tips for a OS/2 Warp 4 client workstation. 8.1 Multi-protocol transport service (MPTS) The OS/2's Multi-Protocol Transport Services (MPTS) allows easy integration of OS/2 Warp 4 into a number of networking environments. The MPTS implementation includes all current transport functionality found in Network Transport Services/2 (NTS/2), including LAN Adapter and Protocol Support (LAPS). All data sectors received by MPTS are stored in buffer structures called mbufs, also known as clusters. There are two types of mbufs. Small mbufs are 256 bytes long and large mbufs are 4096 bytes long. The initial number of small or large mbufs to be allocated by MPTS can be altered by modifying the line containing "RUN=x:\mptn\bin\cntrl.exe" in the MPTSTART.CMD file as follows: RUN=x:\mptn\bin\cntrl.exe /SM xx /LM yy where /SM and /LM are keywords standing for small and large mbuf, and xx and yy are the desired number of mbufs to be allocated. The /SM and /LM keywords are placed on the command line after the arguments to the /P keyword. The specified number of small mbufs is rounded up to the nearest multiple of 128 and the specified number of large mbufs is rounded up to the nearest multiple of 2. For example, if you specify 600 as the number of small mbufs, the MPTS program allocates 640 small mbufs. If you specify 65 as the number of large mbufs, the MPTS allocates 66 mbufs. TIP: The default mbuf settings are adequate for most workloads. MPTS dynamically allocates additional mbufs as needed. Consider increasing the default allocation of large mbufs for systems where MPTS is heavily used (such as file servers) and where the NetBIOS protocol is in use. If only the INET service driver is in use, the number of large mbufs can be reduced. Doing so may improve overall performance of the Distributed Computing Environment (DCE) by increasing the physical memory available to DCE server processes. A good value for the number of large mbufs is 72. If your application does many large file transfers, then you may want to increase the Maximum Transmissible Unit (MTU) size for improved performance. File transfers of 2048 (2K) or greater would benefit by increasing the MTU size. If most of your file transfers are smaller than 2K, then the default MTU size of 1500 is recommended. The MTU size can be changed with the IFCONFIG command in the TCP/IP SETUP.CMD. Set the MTU size to the desired packet size plus 40 bytes-the maximum TCP/IP header size. The desired packet size must be a multiple of 2048. For example: Desired packet size + HDR = MTU 2048 (2K) + 40 = 2088 4096 (4K) + 40 = 4136 8192 (8K) + 40 = 8232 A related parameter is the XMITBUFSIZE parameter in the token-ring section of your PROTOCOL.INI file. This parameter must be configured to support transmission of buffers that are at least the size that you specified for the MTU. By default, the XMITBUFSIZE parameter is not specified in the PROTOCOL.INI file, and the parameter value defaults to the largest size that your adapter card and ring speed allows. This parameter can be added, but the value must be greater than or equal to the MTU size. When changing these parameters, to prevent data loss, the MTU size must not be greater than the maximum that your token- ring adapter allows. Refer to the XMITBUFSIZE range in the appropriate .NIF file (IBMTOK.NIF for example) to determine valid values for both XMITBUFSIZE and MTU size. If the transport protocol to be used by an Socket/MPTS application is known in advance, additional steps can be taken to improve performance This topic offers suggestions for the INET (native) transport: If Socket/MPTS is installed on a token-ring LAN, increasing the maximum transmit unit (MTS) may improve performance of applications that transfer large amounts of data such as file transfer protocol (FTP). Use the IFCONFIG command to modify the MTU size. The IFCONFIG command is described in Manually Modifying Your TCP/IP Configuration. 8.1.1 SOCKS support A SOCKS (SOCKet Secure) server is a type of firewall host that protects computers in a business network from access by users outside that network. The SOCKS server verifies that your computer and user ID are allowed to access external networks, such as the Internet. The 32-bit client applications for TCP/IP for OS/2 that can be used with SOCKS support include Telnet, TelnetPM, FTP, FTP-PM, Sendmail, NewsReader/2, Gopher, and WebExplorer. NOTE: To use SOCKS support with FTP, you must use the FTP provided with TCP/IP for OS/2 Version 4. You can configure SOCKS defaults (including whether SOCKS support is on or off), SOCKS servers, and direct connections to hosts in your private business network by using the Configuration notebook. You can also configure the SOCKS support by manually editing the SOCKS configuration files. TIP: By default, SOCKS support is turned off. Because SOCKS support can affect performance, you should turn it off if you do not need an external connection (outside the firewall). SOCKS is intended for client systems. For any system with server responsibility, SOCKS support should be turned off. The SOCKS support code attempts to determine whether a connection request is internal or external (inside or outside the firewall). If it cannot determine which kind of connection is requested, it attempts to establish an external connection. If you are using a serial connection (SLIP or PPP) to access the Internet, you need to turn SOCKS support off. If you have a serial connection to your company's gateway and are using a SOCKS server to connect to the Internet, SOCKS support must be turned on for your system and your host IP address must be registered with your company's gateway. The SOCKS support code does not support non-blocking connections. It always waits for a connection to be completed. If you are using SOCKS support with WebExplorer, you should not have a proxy gateway or a SOCKS server enabled in WebExplorer. 8.2 OS/2 LAN Server/Requester The following changes to the PROTOCOL.INI file may improve your LAN requester performance. Set XMITBUFS to 2. This allows one buffer to fill while the other is transmitting; yielding greater throughput. Set XMITBUFSIZE to 4224. Supports sending 4096 data packets and protocol headers. The default is 2048. Set T1 to 2000. Changing this timeout value to 2000 (2 seconds) reduces the number of retransmits across the network. If transmissions don't get a response within the time specified in this timeout value, they do multiple retires, resulting in additional network traffic. Set T2 to 400. Raising this Receiver Acknowledgment Timer to 400ms reduces network session traffic by allowing a workstation time to respond without having to process retries. Set NETBIOSRETRIES to 2. NETBIOSRETRIES specifies how many times LR/LS will broadcast a request for duplicate NETBIOS names. In a reliable network, you can reduce traffic by lowering the number of retries. Set LOOPPACKETS to 2. These are internal packets on the adapter that can be used by the adapter to send packets to itself rather than transmitting them over the network. Increasing this value reduces network traffic. Set NETBIOSTIMEOUT to 500. NETBIOSTIMEOUT specifies how long LS will wait to send the next request to identify a NETBIOS duplicate name. Changing the timeout value to 500ms will improve startup time by 6 seconds and logon by 12 seconds (if previously set to 2000). Formula: NETBIOSTIMEOUT x NETBIOSRETRIES = LR start time. Double this result for the logon improvement since userid and userid/domain name each have to be registered in the NETBIOS Names table. Set RECVBUFSIZE to 256. A smaller buffer size will take better advantage of any unused portion of the 64KB NETBIOS segment. 8.3 OS/2 NetWare Requester The following recommendations are for running OS/2 NetWare Requester. Note: A few of the steps only apply to a token-ring environment. TIP: To improve performance, copy frequently used NetWare utilities to the NetWare Requester. For example: copy LOGON.EXE, LOGOUT.EXE, MAP.EXE and SLIST.EXE. The following is a sample NET.CFG. Use this configuration when you first attempt to use the NetWare requester over LAN Distance. Use the buffer size of 1514 for a token-ring environment (not 4202). NetWare Client Default Login Drive L cache buffers 30 directory server off Link Support Buffers xx 1514 For a token-ring environment, LAN Distance requires that all frames have source routing information. This means that ROUTE.NLM must be loaded on the NetWare server and ROUTE.SYS must be loaded for the NetWare requester. The NetWare requester must have a fix for NWREQ.SYS. The fix must be 7/21/94 or later. This fix can only be installed on the OS/2 NetWare Requester. The NetWare requester for OS/2 has a fixed timeout value for resending frames when there has been no response from the server. Over a slow link, this can cause frames to be retransmitted several times causing slow performance and REQ1040 and REQ1039 error messages from NetWare. NWREQ.EXE contains the 7/21/94 NWREQ.SYS fix from Novell which increases the timeout value. There is a side effect of this fix. When the LAN Distance connection is dropped, it will take several minutes for NetWare to destroy the default drive due to the longer timeout value. You may notice this when you are trying to shut down OS/2. Make sure the NetWare client for OS/2 is version 2.1 or later. Otherwise, NWDAEMON must be executed after the LAN Distance connection has been established by issuing: detach c:\netware\nwdaemon. When using packet burst for the DOS NetWare client, the latest VLM.EXE is required. VLM.EXE must be dated 5/31/94 or later. VLM11.EXE contains the 5/31/94 fix. Make sure that DOSUP9 and WINUP9 (or later) fixes have been applied for the NetWare client. In order to enable LAN Distance for NetWare during LAN Distance installation or through settings, LSL.COM and VLM.EXE must be in the NetWare directory. LAN Distance requires the use of VLM.EXE. When you run NetWare and LAN Distance in a Windows environment and you exit Windows, the machine may lock up. This has been fixed by the NetWare APAR IC07995. Novell DOS Requester running LAN Distance and Windows will lock up after exiting Windows. VIPX.386 version 1.19 has the corrections needed. An important factor in network performance is the efficiency of the network. The size of the data packet being transmitted between the client and the server has a significant impact on performance. The larger the packet size, the faster the response time. An optimized network configuration ensures that the packet size of the client matches that of all the servers it intends to connect with (and any gateways or routers in between). Currently, the client workstations are configured to transmit data packets of 1514 bytes. The domain controller/file servers are configured to transmit and receive data packets of 4224 bytes. All the network gateways and routers should be checked to determine the maximum data packet size they can independently support. Once this value is determined, the maximum common data packet size that can be supported on the gateways, client workstations, and servers should be implemented across all systems Set the Token Ring adapter's shared RAM size to 16KB. This improves performance by optimizing the throughput of the adapter. 8.4 TCP/IP client tuning The TCP/IP Version 4.0 shipped with OS/2 Warp 4 has many new features: Dynamic IP client supports the Dynamic Host Configuration Protocol (DHCP) which dynamically allocates and reuses IP addresses, and Dynamic Name Service (DDNS) which dynamically resolves IP addresses to IP hosts. Socks security which permits TCP/IP applications to access the Internet through many standard firewalls. WinSock 1.1 Open32 Support enables WinSock 1.1 to be used in conjunction with Open32 for the porting of Windows TCP/IP applications. Variable subnet routing. IP alias support enables OS/2 Warp 4 to support several web servers on a single system. Multicast allows packets to be transmitted to multiple users. TIP: You can make the following change to the TCP/IP configuration file. Set Maximum Transmission Units to 4136. If your application does many large data transfers, you should increase this value for improved performance. Note: File transfers of 2048 (2KB) or greater would benefit by increasing the MTU size. The default of 1500 bytes does not efficiently use the available network bandwidth (unless the network is Ethernet, in which case 1500 is the maximum size). If most of your file transfers are smaller than 2KB, then the default MTU size of 1500 is recommended. The MTU size can be changed from the TCP/IP Configuration object. Please see the procedure for changing the MTU size discussed in the MPTS section. 8.5 DB2 client tuning -- SQL database performance Tuning database software can make a tremendous impact on response time when retrieving information from a client workstation. Without being familiar with the relational database system being used, specific recommendations cannot be made. The following comments are based on knowledge of IBM's relational database systems. TIP: When querying large amounts of data, verify the data is being transferred in blocks rather than row by row, assuming the system allows for row blocking. Note that although the network can be tuned for a certain data packet size, the database application may or may not be configured to use it. Verify that your queries are accessing the database via an index, where applicable. The database administrators should have a tool to provide this information. If database access is heavy, there may be performance problems associated with table, page, or row locking. Again, the administrators should have tools to determine if excessive locking or lock escalation is occurring. If so, it is possible that a different isolation level could be used that would permit greater concurrency. Database tuning is very system-specific, but there are other tuning parameters, such as buffers, that can be tuned as well. If client queries are slow, it is recommend that the server be tuned and optimized for improved queries response. DB2/2 Server data for problem determination 1. Hardware Configuration - CPU - Memory - Computer make/model - Network Adapter Type - Network Speed (if TR) - Hard drive Configuration (partition sizes, file system) 2. Software Configuration - SYSLEVEL output - CONFIG.SYS - PROTOCOL.INI 3. Database Configuration Data - Output from the following commands: (use DBM rather than DB2 on older versions of DB2/2) DB2 GET DATABASE MANAGER CONFIGURATION DB2 GET DATABASE CONFIGURATION FOR xxxxx (x=database name) 8.6 Lotus Notes client tuning Starting the Notes Client application takes at least 3MB of RAM. Each time a document is opened at the client workstation, the document has to be transferred from the Notes Server (hence network optimization is very important) to the client's RAM. The document is contained in RAM until it is closed. Tune the client-to-server packet size to ensure the maximum packet size is being transmitted. Also, close all documents after using them. Redefine the Lotus Notes client hardware port to increase the amount of memory allocated to transfer data across the network. The default is 2000 bytes. Increase this value to 4000 or 6000. Increasing this value may or may not improve the efficiency of data transfer. Therefore it becomes important to measure response time before and after changing this value. Remove the TIMESLICE statement in the CONFIG.SYS file of OS/2 Warp systems. The Lotus Notes 3.0 installation program often places this statement in the CONFIG.SYS file. The default value of DYNAMIC offers the best performance. Appendix 1 CONFIG.SYS File Insights If you feel comfortable with OS/2 Warp 4 internal operations, you can make the following changes to the CONFIG.SYS file to make it leaner and less memory demand. This section was designed as a pullout section. LIBPATH, PATH, and DPATH Re-order the LIBPATH, PATH, and DPATH parameters. Directory names should be placed in the order of usage. The most accessed directory should be listed first and the least accessed listed last. There are two other environmental variables that the system uses when an application is looking for a DLL (dynamic link library). They are: SET BEGINLIBPATH=path SET ENDLIBPATH=path where path is the location of the DLLs. They are searched in the following order: BEGINLIBPATH (environmental variable) LIBPATH (CONFIG.SYS) ENDLIBPATH (environmental variable) SWAP file Relocate the SWAP file to the root directory of the most used partition and set it's initial size to a value slightly larger than it typically grows. This makes it large enough so that it does not have to grow in size while running applications. In systems using the FAT file system, this technique also minimizes fragmentation of the SWAP file on the hard drive. If more than one physical disk drive is present, relocate the SWAP file to the least used drive and place it in the root directory of the most used partition. Initial Swapper File Size. Change the third parameter (second number) to 20480 or 30920 so the swapper starts out at 20 or 30 MB. This is especially important on a FAT partition, since FAT has a tendency to fragment files that impact performance when the swapper file fragments. As a result, at startup, OS/2 will find a contiguous 20 MB area and reuses it each time. You can also use the following rule of thumb: "initial swap file size = total physical memory size + 8MB." DOS=LOW,NOUMB Ensure DOS=LOW,NOUMB. If a DOS application needs DOS to be loaded high or device drivers to be loaded in upper memory, they should be set from that applications settings notebook. Setting them in the CONFIG.SYS file forces them to be set for all DOS applications whether they need it or not. BUFFERS Set BUFFERS greater than or equal to 60 if using FAT, otherwise set to 30. Buffers are physical memory used to support partial sector reads and writes in a FAT file system environment. They are also used to cache FAT directory entries and for swap file disk I/O. Because they are used to cache FAT directory entries, they should not be reduced below 60, unless you are not using the FAT file system on any of your disks. Reducing this number will increase the number of disk reads that are done to the FAT directory entries and therefore slow down your system. MAXWAIT MAXWAIT=3. This statement specifies the number of seconds a task must wait before getting a priority boos. If your system is under a heavy load, a program may have to wait for execution time. Receiving a priority boost will put a program ahead of others that are also waiting for the processor. Decreasing this number will help programs get execution time faster, but the overall performance may suffer. Increasing this number will allow the OS/2 Scheduler to resolve requests for system time based on the true priority of the programs. PRIORITY_DISK_IO Set PRIORITY_DISK_IO=YES This allows the application that has screen focus to receive a priority boost when it's disk operation is complete. This applies to the first time slice given to the thread after the disk operation is complete. After the time slice, the state is reset for the thread and the priority boost removed. TIMESLICE TIMESLICE=X,Y This statement is not found in the CONFIG.SYS file after you install OS/2 but is sometimes recommended to be added. This was allright to add for OS/2 2.0, 2.1 or 2.11 systems, but not for OS/2 Warp. In OS/2 Warp, we dynamically modify a threads time slice based on actions that have occurred. For instance, if a thread took a page fault during it's time slice, we give it an extra time slice to process what is contained in the faulted page. We also give applications doing disk I/O extra time slices if the data they are reading is in the disk cache. When the TIMESLICE= parameter is used, none of these actions will occur. Instead, each thread will be given the minimum time slice of X, and its time slice will not be allowed to go beyond value Y. RESTARTOBJECTS=STARTUPFOLDERSONLY Add SET RESTARTOBJECTS=STARTUPFOLDERSONLY after the SET AUTOSTART statement. This eliminates numerous boot problems caused by misbehaved programs that won't close. Otherwise OS/2 starts them again. This action also decreases swapping when the system is first booted up. AUTOREFRESHFOLDERS To reduce memory and CPU usage, change the SET AUTOREFRESHFOLDERS statement to NO. When SET AUTOREFRESHFOLDERS=NO, the system will not automatically update changes you make to the folders and objects in OS/2. For example, if you delete an object from a folder after you make this change, you will have to either close the folder and reopen it or select View and then Refresh Now from the pop-up menu to observe the changes you have made. This change is recommended for computers that are used as servers not as workstations. PM_ASYNC_FOCUS_CHANGE=ON SET PM_ASYNC_FOCUS_CHANGE=ON in the CONFIG.SYS file to fix the single input queue problem. The OS/2 solution detects misbehaved applications that cause system hangs in what is often incorrectly attributed to OS/2 as the Single Input Queue (SIQ) problem. The fix is implemented at the system level as a separate OS/2 thread that monitors the status of the input queue. No modifications of applications are necessary. DISKCACHE Optimize the DISKCACHE statement on systems using the FAT file system or REMark it out if the system does not use the FAT file system. Disk caching allows a certain amount of (RAM) memory to serve as a cache for disk I/O. A cache improves performance when a particular disk file is accessed frequently. Keeping it in memory will avoid real I/O and thereby improve I/O response time when accessing that file. In memory-constrained systems, the recommendation is to decrease caching. This is not obvious but the rationale is that the benefit of using memory for disk caching is lower than the benefit of having the memory available for other processes when they are referenced. Experimenting with various DISKCACHE settings to achieve the best performance is the most effective way to determine the correct value. DISKCACHE Threshold Optimize the DISKCACHE Threshold value. It is recommended that the threshold be set at 32 unless the software product you are using is disk intensive and the manufacturer supplies information on the block size required. Otherwise, experiment with different threshold values and monitor the DISKCACHE utilization with SPM/2 to achieve the most effective value. LAZYWRITE Enable LAZYWRITE (LW) whenever possible. This allows disk writes to be temporarily held in memory to increase throughput. Without LW, disk writes are done immediately. LW will increase disk performance, but an unexpected power outage may cause data loss. HPFS CACHE Optimize the HPFS CACHE setting on systems using the HPFS file system or REMark it out if the system does not use this file system. Optimize the CRECL value by experimenting with different threshold values while monitoring the HPFS cache utilization with SPM/2. This will ensure the optimum value is determined. REMark the HPFS statement. This system does not use the HPFS file system. The HPFS code and data space requirement is 200KB of memory plus the cache requirement (minimum cache size is 64KB). Removing this statement will save at least 264KB and as much as 2312KB. THREADS Set THREADS to a value 50% larger than the actual number of threads expected to be used. Threads consume resident memory so determining the optimum value for this parameter will affect the amount of memory that is available for applications to use. One page of resident memory is need for approximately every 32 threads that are defined. As a minimum, you will need 80 threads to support the base OS/2 Warp system and 3 or 4 OS/2, DOS and or Windows applications. The system will support up to 64000 threads, but typically you will not have enough memory in your system to support more than 300 to 500 threads. 18 threads are required for LAN Server 4.0, and 12 for Personal Communications/3270. You will need an additional 2 threads for each Personal Communications/3270 session that is started. To calculate the number of threads that you will need in your system, use the formula 54+(2xN)+10 where N is the number of programs that you will run together. If the program requires more than 2 threads, add in the additional threads. VDISK Remove any VDISK parameters. A VDISK is a virtual disk made in the computers physical memory to provide quick access to often-used files and programs. These systems don't have enough memory to support using a VDISK. PRIORITY=DYNAMIC Ensure PRIORITY=DYNAMIC. This allows OS/2 to adjust thread priorities based on its display status (foreground or background), recent input and output activity, and frequency of processor use. DYNAMIC allows this calculation of priorities to support a system boost for foreground applications. This is the default. ABSOLUTE performs no calculation. There is no system-applied boost for foreground applications when this parameter is specified. COM and VCOM REMark the COM and VCOM device driver statements. These statements load support for serial ports. These drivers should only be removed if there are no immediate intentions to use such devices in this system. CDROM and VCDROM REMark the CDROM and VCDROM device driver statements. These statements load support for CD ROM devices. These drivers should only be removed if there are no immediate intentions to use such devices in this system. PCMCIA REMark the PCMCIA device driver statements. This statement provides support for PCMCIA devices. This driver should only be removed if there are no immediate intentions to use such a device in this system. BASEDEV=IBM2FLPY.ADD REMark the BASEDEV=IBM2FLPY.ADD device driver statement. This driver supports diskette drives on microchannel computers. This driver should only be removed if there are no immediate intentions to use such a device in this system. BASEDEV=IBM1FLPY.ADD REMark the BASEDEV=IBM1FLPY.ADD device driver statement. This driver supports diskette drives on non-microchannel computers. This driver should only be removed if there are no immediate intentions to use such a device in this system. BASEDEV=IBM1S506.ADD REMark the BASEDEV=IBM1S506.ADD device driver statement. This driver supports MFM, RLL, and IDE disk controllers. This driver should only be removed if there are no immediate intentions to use such a device in this system. BASEDEV=IBM2ADSK.ADD REMark the BASEDEV=IBM2ADSK.ADD device driver statement. This driver supports ABIOS-based disk devices. This driver should only be removed if there are no immediate intentions to use such a device in this system. BASEDEV=IBM2SCSI.ADD REMark the BASEDEV=IBM2SCSI.ADD device driver statement. This driver supports SCSI controllers on microchannel computers. This driver should only be removed if there are no immediate intentions to use such a device in this system. BASEDEV=OS2SCSI.DMD REMark the BASEDEV=OS2SCSI.DMD device driver statement. This is the SCSI device driver manager. This driver should only be removed if there are no immediate intentions to use such a device in this system. BASEDEV=PRINT01.SYS REMark the BASEDEV=PRINT01.SYS statement. This statement supports printer ports on non-microchannel computers. BASEDEV=PRINT02.SYS REMark the BASEDEV=PRINT02.SYS statement. This statement supports printer ports on microchannel computers. BASEDEV=IBM1S506.ADD Your system uses the IBMINT13.I13 driver, which causes your system performance to suffer. (RMVIEW /IRQ shows one of the IRQ levels being controlled by IBT13BIOS Int 13 BIOS Support. If you have an IDE hard drive, make sure the statement BASEDEV=IBM1S506.ADD is in the CONFIG.SYS. Adding it should change the IRQ owner to ST506 / IDE Controller. If it does not, you may need a third party device driver to get a performance improvement. APM.SYS and VAPM.SYS REMark the APM.SYS and VAPM.SYS statement. This statement supports Advanced Power Management (APM) but your computer doesn't use this feature. EGA.SYS REMark the EGA.SYS statement. This statement loads support for DOS applications that use EGA display registers. You only need this driver if you use DOS graphics programs that expect EGA compatibility. EXTDISKDD.SYS REMark the EXTDISKDD.SYS statement. This statement allows access to external floppy disks using a logical drive letter. This driver should only be removed if there are no immediate intentions to use such a device in this system. TOUCH.SYS REMark the TOUCH.SYS statement. This statement loads a device driver that provides support for touch screen displays. VEMM.SYS Change the DEVICE=\OS2\MDOS\VEMM.SYS statement to VEMM.SYS 0. This statement loads a driver that provides Expanded Memory Support (EMS) for DOS sessions. Adding a 0 variable causes OS/2 to not allocate EMS to a DOS session unless you override the setting in that session's DOS Settings. Most programs do not require EMS, so disabling EMS by default will save RAM. VXMS.SYS Change the DEVICE=\OS2\MDOS\VXMS.SYS statement to DEVICE =\OS2\MDOS\VXMS.SYS /XMMLIMIT=4096,0 /UMB. This will allocate a maximum of 4MB of SMS for the entire system, but it will not give any XMS memory to a DOS session unless you override the setting in an individual sessions's DOS Settings. DOS sessions won't get XMS by default, which will save memory (since most DOS programs can run without XMS). If you replace /UMB with /NOUMB, no DOS session will be able to use upper memory blocks. If you want DOS=HIGH to be the default, use /XMMLIMIT=4096,64 /UMB instead. Each session will need at least 64KB of XMS. BREAK=ON to OFF Change BREAK=ON to OFF. This statement instructs DOS sessions to check for Ctrl+Break key presses. If set to ON, Control-Break checking is more frequent, but DOS programs may run slower. FCBS=16,8 to 4,4 Change FCBS=16,8 to 4,4. This statement allows you to allocate File Control Blocks (FCBs) for DOS sessions. Most new DOS programs do not use FCB's so these values can be lowered to save RAM.