Staying out of the Swamp

Total Page:16

File Type:pdf, Size:1020Kb

Staying out of the Swamp Staying out of the server swamp Richard Baum Perforce Software October, 2001 Contents Introduction How do I tell if I'm in the swamp? Is your system CPU bound? Is your system memory bound? Is your system I/O bound? How can Perforce cause server swamp? Network Attached Storage Confusing and complex client mappings Background processes The Perforce error log Gigantic operations Conclusion Introduction Perforce runs extremely well when it is given the right resources. A Perforce server does not generally require much CPU. Memory and disk requirements correspond to the amount of data you wish to store. Conditions can sometimes conspire to change a well-performing server into a poorly-performing one. This talk will cover some of the things to watch out for to keep your Perforce server happy and healthy. The object of this talk is to familiarize you with what to look for so you can determine where the problem lies, and what to do so you can remedy the problem. In general, performance that a user will see is limited by the I/O bandwidth of the server and the speed of its connection with a client machine. A server that appears to not be responding in its typically speedy fashion may, in fact, be swamped with data and requests for data. How do I tell if I'm in the swamp? If you suspect that your Perforce server is swamped, the first things to do are to check whether it is, in fact, running, and to examine the machine that hosts the server for any obvious signs of a problem. The main areas for problems have to do with the CPU, memory, and I/O operations. Most operating systems provide tools with which you can easily get a good understanding of what is happening. A basic understanding of how these tools work will go a long way towards figuring out what is wrong with your server. Is your system CPU bound? A Perforce server running on Unix is typically run from a daemon, or parent process. That process then spawns child processes that handle user requests. The server can also be run from Inetd, eliminating the need for a parent process. Check to see whether your server system is using an abnormal amount of CPU. If there are no free processor cycles then you may have a problem, though it is not necessarily a problem with Perforce. Check to see what Perforce server processes are running. On SVR5 based Unix systems (Solaris, Linux) you can use the ps -ef command to do this. Berkely Unix systems (FreeBSD) use p4 - axl and have similar output. To determine which process is doing what, look at the output of the ps command. The second column, "PID" lists the process ID of the process. The third column, "PPID" lists the ID of that processes parent. In the example below, the parent process, 795, has spawned two children, 1909 and 1911. Abbreviated process table output chinadoll:reb% ps -ef UID PID PPID C STIME TTY TIME CMD perforce 795 680 0 10:38:39 pts/4 0:00 ./p4d -p 1667 -r . perforce 1909 795 7 11:59:25 pts/4 0:33 ./p4d -p 1667 -r . perforce 1911 795 9 11:59:41 pts/4 0:09 ./p4d -p 1667 -r . A Perforce server under Windows runs via multiple threads under a single process ID. You can use the NT or Windows 2000 task manager to determine the overall CPU utilization of your server. The system Performance Monitor (Programs->Administrative Tools->Performance Monitor) provides additional functionality and allows you to monitor individual thread performance. However, since all of the threads are a part of the same process the task manager's indication that the p4d or p4s process is using up a large percentage (or all) of the available CPU is usually enough information to proceed as you can not control threads individually. Is your system memory bound? The next step in determining what might be wrong is to take a look at the amount of physical memory in your machine, the amount of swap space defined, and the amount of each of these that is free or being used. Systems that have just enough memory may run fine for a time but a large operation may cause swapping which will slow things considerably. On Unix systems, you can determine the amount of free memory and swap space with the vmstat command. It takes an argument, the number of seconds to wait between calculations. The "avm" or "swap" column indicates the number of free virtual memory (swap) pages or Kbytes. The "free" column indicates the number of free pages or Kbytes of RAM. vmstat output of a Solaris system chinadoll:reb% vmstat 3 procs memory page disk faults cpu r b w swap free re mf pi po fr de sr dd dd f0 s0 in sy cs us sy id 0 0 0 1532968 496240 118 315 0 22000000328512154 1594 0 0 0 1532968 496240 118 315 0 20003000337514169 2593 0 0 0 1532912 496312 468 334 28 10220 028000386865173 21 8 71 0 0 0 1532760 508968 1537 315 113 84000 0950005161991 176 79 18 3 0 0 0 1532736 542296 1541 315 113 70000 0910005081909 157 81 18 1 0 0 0 1532728 557656 1402 315 102 08000 0890005051804 181 70 16 14 In order to better interpret the results you will also need to know how much swap space has been configured and how much RAM the system has in it. To determine the amount of swap space configured, use the swap -s command (Solaris) or the swapinfo command (FreeBSD). swap -s output of a Solaris system: chinadoll:reb% swap -s total: 22232k bytes allocated + 4520k reserved = 26752k used, 1534024k available From this we can see that the amount of swap space available is approximately the same amount as is configured on the system and that the system is not having a problem due to a shortage of memory. Use the dmesg command to determine the amount of physical memory installed on the server. You will likely have to wade through the output, but such information is output at boot time and should appear somewhere near the top of the output. Partial dmesg output of a Solaris system: Sep 9 21:45:42 chinadoll unix: [ID 389951 kern.info] mem = 655360K (0x28000000) Sep 9 21:45:42 chinadoll unix: [ID 930857 kern.info] avail mem = 638574592 From this and the vmstat output above, we can see that out of a total of 640MB of RAM (655360kb) there were between 496240kb and 557656kb of free memory at the time of the vmstat run. We can also see, from the last three columns of the vmstat output the percentage of user, system, and idle time the CPU had at the time of each line of output. Even without knowing the amount of memory or swap space, vmstat can tell you a lot. Look at this output from a different Solaris system as it begins to swap and then stops swapping. vmstat output of a Solaris system that is swapping: procs memory page disk faults cpu r b w swap free re mf pi po fr de sr s1 s2 s3 in sy cs us sy id 0 0 0 644688 28240 0 1263 608 5 5 0 0 103 2 5 762 4440 714 26 40 33 1 0 0 532216 18940 7 2281 226 8 8 0 0 9 2 53 511 2892 600 14 62 24 6 0 0 528912 7652 15 2159 44 232 818 3072 3027386112488 613 32 61 6 5 0 0 521648 7112 10 2369 94 222 330 1640 44 35 8 2 781 2569 742 30 70 0 6 0 0 525804 7136 21 2381 1310 672 1840 1500 599 24 5 21 637 2741 634 31 69 0 2 0 0 527992 7880 9 1349 3405 557 2066 1100 684 7 4 133 675 1457 643 16 45 39 1 0 0 530208 6780 13 1261 3553 1170 3580 1220 1079 32 4 165 725 1375 661 12 43 46 1 0 0 526996 7028 7 855 36 181 530 1576 149 10 2 4 569 4596 539 66 23 11 0 0 0 527548 8440 16 541 65 114 250 1408 55 14 1 1 505 2002 559 44 20 36 0 0 0 530664 11008 2 499 25 2 0 1032 0 16 6 1 383 1209 51161579 1 0 0 531460 35916 0 370 130 0 0 756 0 4 6 0 367 866 51932473 0 0 0 645488 123780 0 108 20 0 0 516 0 5 5 3 376 830 457 4 7 89 The output shows the system using over 100mb of swap space and then going back to not swapping. The highlighted lines show that CPU utilization peaks at the start of the swapping, with zero idle time. The CPU utilization goes down shortly thereafter as the system has to then spend a lot more time waiting for tasks to be swapped in and less time performing actual work. The page faults (pi and po) peak here while the CPU gets some breathing room. While swapping, the de column shows the number of pages of memory that the system thinks it will be short while the pi and po columns show the number of kb brought in and of of swap. Windows NT and 2000 provide a "Task Manager" facility that allows you to monitor CPU and memory utilization. You can bring it up by pressing Ctrl- Alt-Delete and selecting the "Task Manager" button.
Recommended publications
  • Useful Tools for Game Making
    CMS.611J/6.073 Fall 2014 Useful Tools List This list is by no means complete, but should get you started. Talk to other folks in the class about their recommendations. Revision Control Version control software, provides backups and easy reversion. Perforce Mac/Win GUI (p4v): Heavily used in game http://www.perforce.com/dow industry. Commercial nloads/Perforce-Software-Ver software; you can use the sion-Management/complete_l Game Lab server. ist/Customer Subversion Command line: Open source, server-based http://subversion.apache.org/ Windows GUI: http://tortoisesvn.net/ Git Command line: Open source, distributed http://git-scm.com/ Mercurial Command line: Open source, distributed http://mercurial.selenic.com/ Windows GUI: http://tortoisehg.bitbucket.org/ SourceTree Mac/Win GUI: Not a source control system, http://www.sourcetreeapp.co just a GUI for Git and m/ Mercurial clients Revision Control Hosting SourceForge http://sourceforge.net/ git, mercurial, or subversion BitBucket https://bitbucket.org/ git or mercurial GitHub https://github.com/ git, has own (painful) GUI for Git 1 Image Editing MSPaint Windows, pre-installed Surprisingly useful quick pixel art editor (esp for prototypes) Paint.NET Windows, About as easy as MSPaint, but http://www.getpaint.net/download much more powerful .html Photoshop Mac, Windows New Media Center, 26-139 GIMP Many platforms, Easier than photoshop, at http://www.gimp.org/downloads/ least. Sound GarageBand Mac New Media Center, 26-139 Audacity Many platforms, Free, open source. http://audacity.sourceforge.ne
    [Show full text]
  • Jenkins Job Builder Documentation Release 3.10.0
    Jenkins Job Builder Documentation Release 3.10.0 Jenkins Job Builder Maintainers Aug 23, 2021 Contents 1 README 1 1.1 Developers................................................1 1.2 Writing a patch..............................................2 1.3 Unit Tests.................................................2 1.4 Installing without setup.py........................................2 2 Contents 5 2.1 Quick Start Guide............................................5 2.1.1 Use Case 1: Test a job definition................................5 2.1.2 Use Case 2: Updating Jenkins Jobs...............................5 2.1.3 Use Case 3: Working with JSON job definitions........................6 2.1.4 Use Case 4: Deleting a job...................................6 2.1.5 Use Case 5: Providing plugins info...............................6 2.2 Installation................................................6 2.2.1 Documentation.........................................7 2.2.2 Unit Tests............................................7 2.2.3 Test Coverage..........................................7 2.3 Configuration File............................................7 2.3.1 job_builder section.......................................8 2.3.2 jenkins section.........................................9 2.3.3 hipchat section.........................................9 2.3.4 stash section...........................................9 2.3.5 __future__ section.......................................9 2.4 Running.................................................9 2.4.1 Test Mode...........................................
    [Show full text]
  • DVCS Or a New Way to Use Version Control Systems for Freebsd
    Brief history of VCS FreeBSD context & gures Is Arch/baz suited for FreeBSD? Mercurial to the rescue New processes & policies needed Conclusions DVCS or a new way to use Version Control Systems for FreeBSD Ollivier ROBERT <[email protected]> BSDCan 2006 Ottawa, Canada May, 12-13th, 2006 Ollivier ROBERT <[email protected]> DVCS or a new way to use Version Control Systems for FreeBSD Brief history of VCS FreeBSD context & gures Is Arch/baz suited for FreeBSD? Mercurial to the rescue New processes & policies needed Conclusions Agenda 1 Brief history of VCS 2 FreeBSD context & gures 3 Is Arch/baz suited for FreeBSD? 4 Mercurial to the rescue 5 New processes & policies needed 6 Conclusions Ollivier ROBERT <[email protected]> DVCS or a new way to use Version Control Systems for FreeBSD Brief history of VCS FreeBSD context & gures Is Arch/baz suited for FreeBSD? Mercurial to the rescue New processes & policies needed Conclusions The ancestors: SCCS, RCS File-oriented Use a subdirectory to store deltas and metadata Use lock-based architecture Support shared developments through NFS (fragile) SCCS is proprietary (System V), RCS is Open Source a SCCS clone exists: CSSC You can have a central repository with symlinks (RCS) Ollivier ROBERT <[email protected]> DVCS or a new way to use Version Control Systems for FreeBSD Brief history of VCS FreeBSD context & gures Is Arch/baz suited for FreeBSD? Mercurial to the rescue New processes & policies needed Conclusions CVS, the de facto VCS for the free world Initially written as shell wrappers over RCS then rewritten in C Centralised server Easy UI Use sandboxes to avoid locking Simple 3-way merges Can be replicated through CVSup or even rsync Extensive documentation (papers, websites, books) Free software and used everywhere (SourceForge for example) Ollivier ROBERT <[email protected]> DVCS or a new way to use Version Control Systems for FreeBSD Brief history of VCS FreeBSD context & gures Is Arch/baz suited for FreeBSD? Mercurial to the rescue New processes & policies needed Conclusions CVS annoyances and aws BUT..
    [Show full text]
  • Helix Authentication Service Administrator Guide 2021.1 May 2021 Copyright © 2020-2021 Perforce Software, Inc
    Helix Authentication Service Administrator Guide 2021.1 May 2021 Copyright © 2020-2021 Perforce Software, Inc.. All rights reserved. All software and documentation of Perforce Software, Inc. is available from www.perforce.com. You can download and use Perforce programs, but you can not sell or redistribute them. You can download, print, copy, edit, and redistribute the documentation, but you can not sell it, or sell any documentation derived from it. You can not modify or attempt to reverse engineer the programs. This product is subject to U.S. export control laws and regulations including, but not limited to, the U.S. Export Administration Regulations, the International Traffic in Arms Regulation requirements, and all applicable end-use, end-user and destination restrictions. Licensee shall not permit, directly or indirectly, use of any Perforce technology in or by any U.S. embargoed country or otherwise in violation of any U.S. export control laws and regulations. Perforce programs and documents are available from our Web site as is. No warranty or support is provided. Warranties and support, along with higher capacity servers, are sold by Perforce. Perforce assumes no responsibility or liability for any errors or inaccuracies that might appear in this book. By downloading and using our programs and documents you agree to these terms. Perforce and Inter-File Branching are trademarks of Perforce. All other brands or product names are trademarks or registered trademarks of their respective companies or organizations. Contents How to use
    [Show full text]
  • Coverity Static Analysis
    Coverity Static Analysis Quickly find and fix Overview critical security and Coverity® gives you the speed, ease of use, accuracy, industry standards compliance, and quality issues as you scalability that you need to develop high-quality, secure applications. Coverity identifies code critical software quality defects and security vulnerabilities in code as it’s written, early in the development process when it’s least costly and easiest to fix. Precise actionable remediation advice and context-specific eLearning help your developers understand how to fix their prioritized issues quickly, without having to become security experts. Coverity Benefits seamlessly integrates automated security testing into your CI/CD pipelines and supports your existing development tools and workflows. Choose where and how to do your • Get improved visibility into development: on-premises or in the cloud with the Polaris Software Integrity Platform™ security risk. Cross-product (SaaS), a highly scalable, cloud-based application security platform. Coverity supports 22 reporting provides a holistic, more languages and over 70 frameworks and templates. complete view of a project’s risk using best-in-class AppSec tools. Coverity includes Rapid Scan, a fast, lightweight static analysis engine optimized • Deployment flexibility. You for cloud-native applications and Infrastructure-as-Code (IaC). Rapid Scan runs decide which set of projects to do automatically, without additional configuration, with every Coverity scan and can also AppSec testing for: on-premises be run as part of full CI builds with conventional scan completion times. Rapid Scan can or in the cloud. also be deployed as a standalone scan engine in Code Sight™ or via the command line • Shift security testing left.
    [Show full text]
  • Teamcity 7.1 Documentation.Pdf
    1. TeamCity Documentation . 4 1.1 What's New in TeamCity 7.1 . 5 1.2 What's New in TeamCity 7.0 . 14 1.3 Getting Started . 26 1.4 Concepts . 30 1.4.1 Agent Home Directory . 31 1.4.2 Agent Requirements . 32 1.4.3 Agent Work Directory . 32 1.4.4 Authentication Scheme . 33 1.4.5 Build Agent . 33 1.4.6 Build Artifact . 34 1.4.7 Build Chain . 35 1.4.8 Build Checkout Directory . 36 1.4.9 Build Configuration . 37 1.4.10 Build Configuration Template . 38 1.4.11 Build Grid . 39 1.4.12 Build History . 40 1.4.13 Build Log . 40 1.4.14 Build Number . 40 1.4.15 Build Queue . 40 1.4.16 Build Runner . 41 1.4.17 Build State . 41 1.4.18 Build Tag . 42 1.4.19 Build Working Directory . 43 1.4.20 Change . 43 1.4.21 Change State . 43 1.4.22 Clean Checkout . 44 1.4.23 Clean-Up . 45 1.4.24 Code Coverage . 46 1.4.25 Code Duplicates . 47 1.4.26 Code Inspection . 47 1.4.27 Continuous Integration . 47 1.4.28 Dependent Build . 47 1.4.29 Difference Viewer . 49 1.4.30 Guest User . 50 1.4.31 History Build . 51 1.4.32 Notifier . 51 1.4.33 Personal Build . 52 1.4.34 Pinned Build . 52 1.4.35 Pre-Tested (Delayed) Commit . 52 1.4.36 Project . 53 1.4.37 Remote Run . ..
    [Show full text]
  • Perforce Tunables
    Perforce Tunables Michael Shields Performance Lab Manager Perforce Software March, 2010 Abstract Tunables have been available in Perforce since the 2008.2 release. With help from Perforce, tunables can be used to modify some performance characteristics and limited changes to functionality. Though not strictly supported, Perforce would like to understand the effects of some of the tunables in customer environments. This paper discusses the importance of working with Perforce when considering the use of tunables. Also discussed is the mechanics of using tunables with the Perforce Server and clients. A strategy for implementing tunables is suggested. The tunables currently available are surveyed, detailing which might have an effect under what circumstances, and which should rarely be used and why. 1 Introduction Since the first releases of Perforce, there have been significant changes to both hardware and operating systems. Hardware typical of the mid-1990s included 167MHz UltraSPARC I or 166MHz Pentium processors, with perhaps a gigabyte or two of physical memory. Solaris 2.5 and Windows NT Server 3.51 were popular operating systems, and the Linux 2.0 kernel was first released in 1996. The hardware of the mid-1990s seems slow and small compared to current hardware consisting of several multi-core 3GHz Xeons or Opterons with tens or hundreds of gigabytes of physical memory. The performance of the Linux 2.6 kernel makes it a popular operating system on which to run today’s largest Perforce Servers. Perforce products have certainly evolved and improved since their first releases. Every Perforce release usually includes new features, enhancements, and performance improvements.
    [Show full text]
  • Intellij IDEA, the Most Intelligent Java
    IntelliJ IDEA, the most intelligent Java IDE IntelliJ IDEA, JetBrains’ flagship Java IDE, Every aspect of IntelliJ IDEA is specifically How does IntelliJ IDEA provides high-class support and productivity designed to maximize developer productiv- match up against competing tools? boosts for enterprise, mobile and web devel- ity. Together, powerful static code analysis opment in Java, Scala and Groovy, with all and ergonomic design make development Products versions in comparison the latest technologies and frameworks sup- a productive and enjoyable experience. ported out of the box. Compatibility with Operating systems Marketing / Market / Community comparison Community Comparison Platform More Information To learn more about the product, please visit our website at jetbrains.com/idea After IntelliJ IDEA has indexed your source languages and frameworks are at hand — IntelliJ IDEA is available in two editions: code, it ofers a blazingly fast and intelligent no plugin hustle included. While IntelliJ coding experience by giving relevant sug- IDEA is an IDE for Java, it also understands • Community Edition (free) gestions in every context: instant and clever and provides intelligent coding assistance • Ultimate Edition (paid) code completion, on-the-fly code analysis for a large variety of other languages such and reliable refactoring tools. Mission-critical as SQL, JPQL, HTML, JavaScript, and more, tools such as integration with version con- even when the language expression is inject- trols systems and a wide variety of supported ed into a String
    [Show full text]
  • Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One Marc Merlin, Google, Inc
    Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One Marc Merlin, Google, Inc. https://www.usenix.org/conference/lisa13/technical-sessions/papers/merlin This paper is included in the Proceedings of the 27th Large Installation System Administration Conference (LISA ’13). November 3–8, 2013 • Washington, D.C., USA ISBN 978-1-931971-05-8 Open access to the Proceedings of the 27th Large Installation System Administration Conference (LISA ’13) is sponsored by USENIX. Live upgrading thousands of servers from an ancient Red Hat distribution to 10 year newer Debian based one. Marc MERLIN Google, Inc. Abstract Google maintains many servers and employs a file level sync method with applications running in a different parti- tion than the base Linux distribution that boots the machine and interacts with hardware. This experience report first gives insights on how the distribution is setup, and then tackles the problem of doing a difficult upgrade from a Red Hat 7.1 image snapshot with layers of patches to a Debian Testing based distribution built from source. We will look at how this can actually be achieved as a live upgrade and without ending up with a long “flag day” where many machines are running totally different distributions, which would have made testing and debugging of appli- cations disastrous during a long switchover period. Like a coworker of mine put it, “It was basically akin to upgrading Red Hat 7.1 to Fedora Core 16, a totally unsup- ported and guaranteed to break upgrade, but also switching from rpm to dpkg in the process, and on live machines.” The end of the paper summarizes how we designed our packaging system for the new distribution, as well as how we build each new full distribution image from scratch in a few minutes.
    [Show full text]
  • Azure Devops Server (TFS) / Azure Devops Services Plugin
    ApexSQL Azure DevOps toolkit - Azure DevOps Server (TFS) / Azure DevOps Services plugin Version 2018.x Release Notes and Requirements System requirements ApexSQL DevOps toolkit Hardware Dual Core 2.0 GHz CPU 4 GB memory SQL Server SQL Server 2005 and higher [1] OS Windows 7 SP1/Windows Server 2008 R2 SP1 and higher [1] Software .NET Framework 4.7.2 or higher ApexSQL Build 2018 R4 [3] ApexSQL Data Diff 2018 R6 [3] ApexSQL Diff 2018 R5 [3] ApexSQL Doc 2018 R4 [3] ApexSQL Enforce 2018 R6 [3] ApexSQL Generate 2018 R4 [3] ApexSQL Mask 2019 R2 [3] ApexSQL Script 2018 R4 [3] ApexSQL Trigger 2018 R3 [3] ApexSQL Unit Test 2018 R4 [3] Note The number of ApexSQL tools required is based on how extensive a CI/CD workflow pipeline is and how many steps it includes Source control integration available for Azure DevOps [4], Git [5], Mercurial [5], Subversion [5] and Perforce [5] Permissions and Windows user account with administrative privileges additional requirements See Minimum permissions required to install and use ApexSQL products See Minimum SQL Server permissions for ApexSQL Developer tools See Remote access for SQL Server instance See How to setup image based database provisioning Azure DevOps Server (TFS) / Azure DevOps Services plug-in Hardware 214 KB disk space Software TFS 2015 Update 2 or higher, Azure DevOps Services Bamboo plug-in Hardware 1.65 MB disk space Software Atlassian Bamboo 6.6.3 or higher Jenkins plugin Hardware 5.8 MB disk space Software Jenkins 2.138 or higher Octopus Deploy step templates Hardware 32 KB disk space Software
    [Show full text]
  • Helix Core Vs. Microsoft TFS/TFVC
    VS COMPARISON Helix Core vs. Microsoft TFS/TFVC In this document, we will compare Perforce Helix Core to Microsoft Team Foundation Server (TFS.) Specifically, we will look at the TFVC (Team Foundation Version Control) functionality. With TFVC, your code is kept on the TFS server, usually on-premises. Developers often work in the popular Microsoft Visual Studio application on their own Windows workstation. They connect to the TFVC server to collaborate with other developers. Changes in the Microsoft World When TFS version control originally shipped, it was What’s more important? Winning the hearts and exclusively an on-premises solution – Visual Studio minds of some 31 million+ GitHub users, and keep- 2005 Team System. Since then, of course, Microsoft ing them away from the very popular AWS cloud. has made regularly made significant updates. Because Microsoft’s new Azure and Git strategy is In 2016, Microsoft released a cloud-based service, so different from the way TFS and TFVC users work Visual Studio Team Services (VSTS). This marked a today, teams have a big decision looming. Should they different direction for TFS on-premises customers. move to the cloud and embrace Microsoft’s DevOps More recently, VSTS has been rebranded as Azure pipelines and other Azure-based technologies? Or DevOps, with a variety of developer tools available should they choose another VCS that will work on- on Microsoft’s Azure cloud platform. Although Azure premises and deliver on their DevOps priorities? DevOps continues to provide support for TFVC Microsoft will continue mainstream support of TFS repositories, the Microsoft vision has a new iteration.
    [Show full text]
  • Solving the Source Control Issue David Shannon, Amadeus Software Limited
    Solving the Source Control Issue David Shannon, Amadeus Software Limited ABSTRACT The administration of SAS code frequently depends on the file management and good practice of the individual developer. When many people share the same SAS programs it is likely a conflict or unintentional loss of code will occur. Source Control systems are designed to manage access, versions and the history of files. This paper presents a review of source control systems that are already available, or can be used, within the SAS environment. The discussion begins by understanding what is meant by the terms Source Control and Version Control. Methods of working with source control are discussed. Finally the existing capabilities of Data Integration Studio and Drug Development solutions are presented. This paper on “Solving the Source Control Issue” is appropriate for those who program SAS, maintain SAS code or are responsible for the long term security and availability of SAS programs. An understanding of the SAS programming language is not required. INTRODUCTION Source Control is a subject area quite familiar to software developers where the need to support many developers concurrently is a prerequisite. For the majority of SAS programmers this process is either separate from the programming environment or not performed at all. The need to maintain professional source control is increasingly recognised by organisations that fall under regulatory jurisdiction. Typical examples are the financial industry and the development and production of medicines and devices in the life sciences industries. Furthermore, organisations following ISO 9000 standards will require source control. Source control in SAS programming environments is usually managed through separate tools or functions from the SAS Display Manager or Enterprise Guide.
    [Show full text]