Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference

Total Page:16

File Type:pdf, Size:1020Kb

Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference USENIX Association Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference Monterey, California, USA June 10-15, 2002 THE ADVANCED COMPUTING SYSTEMS ASSOCIATION © 2002 by The USENIX Association All Rights Reserved For more information about the USENIX Association: Phone: 1 510 528 8649 FAX: 1 510 548 5738 Email: [email protected] WWW: http://www.usenix.org Rights to individual papers remain with the author or the author's employer. Permission is granted for noncommercial reproduction of the work for educational or research purposes. This copyright notice must be included in the reproduced paper. USENIX acknowledges all trademarks herein. Overhauling Amd for the '00s: A Case Study of GNU Autotools Erez Zadok Stony Brook University [email protected] Abstract Asking users to manually configure a package prior to compilation by editing a header file to turn on The GNU automatic software configuration tools, Au- or off package features or to specify services avail- toconf, Automake, and Libtool, were designed to help able from the platform on which the package will the portability of software to multiple platforms. Such be run. This process required intimate knowledge autotools also help improve the readability of code and of the system on which the package (e.g., C-News) speed up the development cycle of software packages. was to be built. In this paper we quantify how helpful such autotools are Trying to achieve portability using CPP macros to the open-source software development process. We and nested #ifdef statements. Such code results study several large packages that use these autotools and in complex, system-specific, deeply-nested CPP measure the complexity of their code. We show that total macros which are hard to maintain. code size is not an accurate measure of code complex- ity for portability; two better metrics are the distribution Using Imake [2], a system designed specifically of CPP conditionals in that code and the number of new for building X11 applications. Imake defines special-purpose Autoconf macros that are written for the frozen configurations for various systems. How- package. ever, such static configurations cannot account for We studied one package in detail—Am-utils, the local changes made by administrators. Berkeley Automounter. As maintainers and developers Using Metaconfig [11], developed primarily for of this package, we tracked its evolution over ten years. building Perl. This system executes simple tests This package was ported to dozens of different platforms similar to Autoconf, but users are often asked to and in 1997 was converted to use GNU autotools. We confirm the results of these tests or to set the re- show how this conversion (autotooling) resulted in a dra- sults to the proper values. Metaconfig requires too matic reduction in code size by over 33%. In addition, much user interaction to select or confirm detected the conversion helped speed code development of the features and it cannot be extended as easily as Au- Am-utils package by allowing new features and ports to toconf. be integrated easily: for the first year after the conversion to GNU autotools, the Am-utils package grew by over GNU Autoconf [5] solves the above problems by pro- 70% in size, adding many new features, and all without viding canned tests that can dynamically detect various increasing the average code complexity. features of the system on which the tests are run. By actually testing a feature before using it, Autoconf and its sister tools Automake [6] and Libtool [7] can build 1 Introduction packages portably without user intervention. These au- tomated software configuration tools (autotools [10]) can Large software packages, especially open-source (OSS) run on numerous systems. Autotools work identically re- ones, must be highly portable so as to maximize their use gardless of the OS version, any local changes that admin- on as many systems as possible. Past techniques for en- istrators installed on the system, which system software suring that software can build cleanly and run identically packages were installed or not, and which system patches on many systems include the following: were installed. The rest of this paper is organized as follows. Section 4. Shared libraries: Many packages need to build and 2 explains the motivation for automated software config- use shared or static libraries. Such packages of- uration tools. In section 3 we explain how GNU Auto- ten support shared libraries only on a few systems conf and associated tools work, explore their limitations, (e.g., Tcl before it was autotooled), because of dif- and describe how we used these tools. Section 4 eval- fering shared library implementations. Frequent use uates several large OSS packages and details the use of of non-shared (static) libraries results in duplicated autotools in the Am-utils package. We conclude in Sec- code that wastes disk space and memory. tion 5. 5. Human errors: Manually-configured software is more prone to human errors. For example, the 2 Motivation first port of Amd to Solaris on the IA32 platforms copied the static configuration file from the SPARC When software packages grow large and are required to platform, incorrectly setting the endianness to big- work on multiple platforms, they become more difficult endian instead of little-endian. to maintain without automation. We spent several years 6. Novice and overworked administrators: With a maintaining Amd and Am-utils, as well as fixing, port- rapidly growing user base and the growth of the In- ing, and developing other packages. During that time ternet, the average expertise of system administra- we noticed how difficult it was to maintain and port such tors has decreased. Overworked administrators can- packages and that led us to convert Amd to use autotools. not afford to maintain and configure many packages As a result of the conversion, we noticed that Am-utils manually. became easier to maintain and port. We therefore set out to quantify this improvement in the portability and main- Converting OSS packages to use GNU autotools— tainabilty of the Am-utils package, and those investiga- Autoconf [5], Automake [6], and Libtool [7]—addresses tions led to writing this paper. the aforementioned problems in five ways: There are six reasons why porting such packages to new platforms, adding new features, or fixing bugs be- 1. Standard tests: Autoconf has a large set of stan- comes a difficult task more suitable for automatic con- dard portable tests that were developed from practi- figuration: cal experiences of the maintainers of several GNU packages. Autoconf tests for features by actually 1. Operating system variability: There are more exercising those features (e.g., compiling and run- Unix systems available today, with more minor re- ning programs that use those features). Packages leases, and with more patches. Flexible software that use Autoconf tests are automatically portable packaging allows administrators to install selective to all of the platforms on which these tests work. parts of the system, increasing variability. An auto- 2. Consistent names: Autoconf produces uniform mated build process can track small changes auto- macro names that are based on features. For ex- matically, and can even account for local changes. ample, code which uses Autoconf can test if the 2. Code inclusion and exclusion: To handle system supports a reliable memcmp function us- platform-specific features, large portions of code ing #ifdef HAS MEMCMP, rather than depend- are often surrounded by #ifdef directives. ing on system-specific macros (e.g., #ifndef Platform-specific code is mixed with more generic SUNOS4). Autoconf provides a single macro per code. Often, system-specific source files are com- feature, reducing the need for complex or nested piled on every system, because there is no automatic macro expressions. This improves code readability way to compile them conditionally. and maintainability. 3. Multi-level nested macros: To detect certain 3. Shared libraries: By using Libtool and Automake features reliably, older code uses deeply nested along with Autoconf, a package can build shared or #ifdef directives. This results in complex macro static libraries easily, removing a lot of custom code expressions designed to determine features as re- from sources and makefiles. liably as possible. The main problem with such 4. Human factors: Building packages that use auto- macros is that they provide second-hand or anec- tools is easy. Administrators are becoming increas- dotal knowledge of the system. For example, to test ingly familiar with the process and the standard set if a compiler supports “void *”, some code depends of features autotools provide (i.e., run ./config- on the name of the compiler (GNUC) rather than ure and then make). Administrators do not need directly testing for that feature’s existence. to configure the software package manually prior to compilation and they are likely to make fewer mis- #include "confdefs.h" takes. This standardization speeds up installation char bzero(); /* forward definition */ and configuration of software. int main() bzero(); 5. Extensibility: Finally, software maintainers can ex- return 0; tend Autoconf by writing more tests for specific ¡ needs. For example, we wrote specific tests for the Am-utils package that detect its interaction with If the program compiles and links successfully, certain kernels. This allowed us to separate the the configure script defines a CPP macro named common code from the more difficult-to-maintain HAVE BZERO in an automatically-generated configura- platform-specific code. tion file named config.h. This macro is based on the existence of the feature and can be used reliably in the sources for the package. Note that it is not necessary to Our experiences with maintaining the Amd package run this program to determine if bzero exists. In fact, clearly show the benefits of autotools. When we con- the above program will fail to run properly because the verted the Amd package [9, 12] to use autotools, the code bzero function was not given proper parameters.
Recommended publications
  • [PDF] Beginning Raku
    Beginning Raku Arne Sommer Version 1.00, 22.12.2019 Table of Contents Introduction. 1 The Little Print . 1 Reading Tips . 2 Content . 3 1. About Raku. 5 1.1. Rakudo. 5 1.2. Running Raku in the browser . 6 1.3. REPL. 6 1.4. One Liners . 8 1.5. Running Programs . 9 1.6. Error messages . 9 1.7. use v6. 10 1.8. Documentation . 10 1.9. More Information. 13 1.10. Speed . 13 2. Variables, Operators, Values and Procedures. 15 2.1. Output with say and print . 15 2.2. Variables . 15 2.3. Comments. 17 2.4. Non-destructive operators . 18 2.5. Numerical Operators . 19 2.6. Operator Precedence . 20 2.7. Values . 22 2.8. Variable Names . 24 2.9. constant. 26 2.10. Sigilless variables . 26 2.11. True and False. 27 2.12. // . 29 3. The Type System. 31 3.1. Strong Typing . 31 3.2. ^mro (Method Resolution Order) . 33 3.3. Everything is an Object . 34 3.4. Special Values . 36 3.5. :D (Defined Adverb) . 38 3.6. Type Conversion . 39 3.7. Comparison Operators . 42 4. Control Flow . 47 4.1. Blocks. 47 4.2. Ranges (A Short Introduction). 47 4.3. loop . 48 4.4. for . 49 4.5. Infinite Loops. 53 4.6. while . 53 4.7. until . 54 4.8. repeat while . 55 4.9. repeat until. 55 4.10. Loop Summary . 56 4.11. if . ..
    [Show full text]
  • Files: Cpan/Test-Harness/* Copyright: Copyright (C) 2007-2011
    Files: cpan/Test-Harness/* Copyright: Copyright (c) 2007-2011, Andy Armstrong <[email protected]>. All rights reserved. License: GPL-1+ or Artistic Comment: This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Files: cpan/Test-Harness/lib/TAP/Parser.pm Copyright: Copyright 2006-2008 Curtis "Ovid" Poe, all rights reserved. License: GPL-1+ or Artistic Comment: This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Files: cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm Copyright: Copyright 2007-2011 Andy Armstrong. Portions copyright 2006-2008 Adam Kennedy. License: GPL-1+ or Artistic Comment: This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Files: cpan/Test-Simple/* Copyright: Copyright 2001-2008 by Michael G Schwern <[email protected]>. License: GPL-1+ or Artistic Comment: This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Files: cpan/Test-Simple/lib/Test/Builder.pm Copyright: Copyright 2002-2008 by chromatic <[email protected]> and Michael G Schwern E<[email protected]>. License: GPL-1+ or Artistic 801 Comment: This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Files: cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm Copyright: Copyright Mark Fowler <[email protected]> 2002. License: GPL-1+ or Artistic Comment: This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
    [Show full text]
  • Learning Perl Through Examples Part 2 L1110@BUMC 2/22/2017
    www.perl.org Learning Perl Through Examples Part 2 L1110@BUMC 2/22/2017 Yun Shen, Programmer Analyst [email protected] IS&T Research Computing Services Spring 2017 Tutorial Resource Before we start, please take a note - all the codes and www.perl.org supporting documents are accessible through: • http://rcs.bu.edu/examples/perl/tutorials/ Yun Shen, Programmer Analyst [email protected] IS&T Research Computing Services Spring 2017 Sign In Sheet We prepared sign-in sheet for each one to sign www.perl.org We do this for internal management and quality control So please SIGN IN if you haven’t done so Yun Shen, Programmer Analyst [email protected] IS&T Research Computing Services Spring 2017 Evaluation One last piece of information before we start: www.perl.org • DON’T FORGET TO GO TO: • http://rcs.bu.edu/survey/tutorial_evaluation.html Leave your feedback for this tutorial (both good and bad as long as it is honest are welcome. Thank you) Yun Shen, Programmer Analyst [email protected] IS&T Research Computing Services Spring 2017 Today’s Topic • Basics on creating your code www.perl.org • About Today’s Example • Learn Through Example 1 – fanconi_example_io.pl • Learn Through Example 2 – fanconi_example_str_process.pl • Learn Through Example 3 – fanconi_example_gene_anno.pl • Extra Examples (if time permit) Yun Shen, Programmer Analyst [email protected] IS&T Research Computing Services Spring 2017 www.perl.org Basics on creating your code How to combine specs, tools, modules and knowledge. Yun Shen, Programmer Analyst [email protected] IS&T Research Computing
    [Show full text]
  • An Introduction to Raku
    Perl6 An Introduction Perl6 Raku An Introduction The nuts and bolts ● Spec tests ○ Complete test suite for the language. ○ Anything that passes the suite is Raku. The nuts and bolts ● Spec tests ○ Complete test suite for the language. ○ Anything that passes the suite is Raku. ● Rakudo ○ Compiler, compiles Raku to be run on a number of target VM’s (92% written in Raku) The nuts and bolts ● Spec tests ○ Complete test suite for the language. ○ Anything that passes the suite is Raku. ● Rakudo ○ Compiler, compiles Raku to be run on a number of target VM’s (92% written in Raku) ● MoarVM ○ Short for "Metamodel On A Runtime" ○ Threaded, garbage collected VM optimised for Raku The nuts and bolts ● Spec tests ○ Complete test suite for the language. ○ Anything that passes the suite is Raku. ● Rakudo ○ Compiler, compiles Raku to be run on a number of target VM’s (92% written in Raku) ● MoarVM ○ Short for "Metamodel On A Runtime" ○ Threaded, garbage collected VM optimised for Raku ● JVM ○ The Java Virtual machine. The nuts and bolts ● Spec tests ○ Complete test suite for the language. ○ Anything that passes the suite is Raku. ● Rakudo ○ Compiler, compiles Raku to be run on a number of target VM’s (92% written in Raku) ● MoarVM ○ Short for "Metamodel On A Runtime" ○ Threaded, garbage collected VM optimised for Raku ● JVM ○ The Java Virtual machine. ● Rakudo JS (Experimental) ○ Compiles your Raku to a Javascript file that can run in a browser Multiple Programming Paradigms What’s your poison? Multiple Programming Paradigms What’s your poison? ● Functional
    [Show full text]
  • LAMP and the REST Architecture Step by Step Analysis of Best Practice
    LAMP and the REST Architecture Step by step analysis of best practice Santiago Gala High Sierra Technology S.L.U. Minimalistic design using a Resource Oriented Architecture What is a Software Platform (Ray Ozzie ) ...a relevant and ubiquitous common service abstraction Creates value by leveraging participants (e- cosystem) Hardware developers (for OS level platforms) Software developers Content developers Purchasers Administrators Users Platform Evolution Early stage: not “good enough” solution differentiation, innovation, value flows Later: modular architecture, commoditiza- tion, cloning no premium, just speed to market and cost driven The platform effect - ossification, followed by cloning - is how Chris- tensen-style modularity comes to exist in the software industry. What begins as a value-laden proprietary platform becomes a replaceable component over time, and the most successful of these components finally define the units of exchange that power commodity networks. ( David Stutz ) Platform Evolution (II) Example: PostScript Adobe Apple LaserWriter Aldus Pagemaker Desktop Publishing Linotype imagesetters NeWS (Display PostScript) OS X standards (XSL-FO -> PDF, Scribus, OOo) Software Architecture ...an abstraction of the runtime elements of a software system during some phase of its oper- ation. A system may be composed of many lev- els of abstraction and many phases of opera- tion, each with its own software architecture. Roy Fielding (REST) What is Architecture? Way to partition a system in components
    [Show full text]
  • Linux Lunacy V & Perl Whirl
    SPEAKERS Linux Lunacy V Nicholas Clark Scott Collins & Perl Whirl ’05 Mark Jason Dominus Andrew Dunstan Running Concurrently brian d foy Jon “maddog” Hall Southwestern Caribbean Andrew Morton OCTOBER 2ND TO 9TH, 2005 Ken Pugh Allison Randal Linux Lunacy V and Perl Whirl ’05 run concurrently. Attendees can mix and match, choosing courses from Randal Schwartz both conferences. Doc Searls Ted Ts’o Larry Wall Michael Warfield DAY PORT ARRIVE DEPART CONFERENCE SESSIONS Sunday, Oct 2 Tampa, Florida — 4:00pm 7:15pm, Bon Voyage Party Monday, Oct 3 Cruising The Caribbean — — 8:30am – 5:00pm Tuesday, Oct 4 Grand Cayman 7:00am 4:00pm 4:00pm – 7:30pm Wednesday, Oct 5 Costa Maya, Mexico 10:00am 6:00pm 6:00pm – 7:30pm Thursday, Oct 6 Cozumel, Mexico 7:00am 6:00pm 6:00pm – 7:30pm Friday, Oct 7 Belize City, Belize 7:30am 4:30pm 4:30pm – 8:00pm Saturday, Oct 8 Cruising The Caribbean — — 8:30am – 5:00pm Sunday, Oct 9 Tampa, Florida 8:00am — Perl Whirl ’05 and Linux Lunacy V Perl Whirl ’05 are running concurrently. Attendees can mix and match, choosing courses Seminars at a Glance from both conferences. You may choose any combination Regular Expression Mastery (half day) Programming with Iterators and Generators of full-, half-, or quarter-day seminars Speaker: Mark Jason Dominus Speaker: Mark Jason Dominus (half day) for a total of two-and-one-half Almost everyone has written a regex that failed Sometimes you’ll write a function that takes too (2.5) days’ worth of sessions. The to match something they wanted it to, or that long to run because it produces too much useful conference fee is $995 and includes matched something they thought it shouldn’t, and information.
    [Show full text]
  • Current Issues in Perl Programming Overview
    Current Issues In Perl Programming Lukas Thiemeier Current Issues In Perl Programming DESY, Zeuthen, 2011-04-26 Overview > Introduction > Moose – modern object-orientation in Perl > DBIx::Class – comfortable an flexible database access > Catalyst – a MVC web application framework Lukas Thiemeier | Current issues in Perl programming | 2011-04-26 | Page 2 Introduction > What is this talk about? . Modern Perl can do more than most people know . A quick overview about some modern features . Illustrated with some short examples > What is this talk not about? . Not an introduction to the Perl programming language . Not a Perl tutorial . Not a complete list of all current issues in Perl 5 . Not a complete HowTo for the covered topics Lukas Thiemeier | Current issues in Perl programming | 2011-04-26 | Page 3 Overview > Introduction > Moose – modern object-orientation in Perl . About Moose . Creating and extending classes . Some advanced features > DBIx::Class – comfortable an flexible database access > Catalyst – a MVC web application framework Lukas Thiemeier | Current issues in Perl programming | 2011-04-26 | Page 4 About Moose > “A postmodern object system for Perl 5” > Based on Class::MOP, a metaclass system for Perl 5 > Look and feel similar to the Perl 6 object syntax “The main goal of Moose is to make Perl 5 Object Oriented programming easier, more consistent and less tedious. With Moose you can to think more about what you want to do and less about the mechanics of OOP.” Lukas Thiemeier | Current issues in Perl programming | 2011-04-26 | Page 5 Creating Classes > A very simple Moose-Class: . Create a file called “MyAnimalClass.pm” with the following content: package MyAnimalClass; use Moose; no Moose; 1; Lukas Thiemeier | Current issues in Perl programming | 2011-04-26 | Page 6 Creating Classes > A very simple Moose-Class: The package name is used as class name.
    [Show full text]
  • How the Camel Is De-Cocooning (YAPCNA)
    How the Camel! is de-cocooning Elizabeth Mattijsen! YAPC::NA, 23 June 2014 The Inspiration coccoon? Perl 5 Recap: 2000 - 2010 • 2000 - Perl 5.6 • 2002 - Perl 5.8 • 2007 - Perl 5.10 • 2010 - Perl 5.12 + yearly release • The lean years have passed! Perl 6 Recap: 2000 - 2010 • Camel Herders Meeting / Request for Comments • Apocalypses, Exegeses, Synopses • Parrot as a VM for everybody • Pugs (on Haskell) / Perl 6 test-suite • Rakudo (on Parrot) / Niecza (on mono/.NET) • Nothing “Production Ready” The 0’s - Cocooning Years • Perl was busy with itself • Redefining itself • Re-inventing itself • What is Perl ? • These years have passed! Not your normal de-cocooning Perl 5 and Perl 6 will co-exist for a long time to come! Perl 5 in the 10’s • A new release every year! • Many optimisations,5.20 internalis codeout! cleanup! ! • Perl 6-like features: say, state, given/when, ~~, //, …, packageGo {}, lexical getsubs, sub signaturesit! • Perl 6-like Modules: Moose / Moo / Mouse, Method::Signatures,and Promisesuse it! • and a Monthly development release Perl 6 in the 10’s • Niecza more feature-complete, initially • Not Quite Perl (NQP) developed and stand-alone • 6model on NQP with multiple backends • MoarVM - a Virtual Machine for Perl 6 • Rakudo runs on Parrot, JVM, MoarVM • also a Monthly development release Co-existence? Yes! But Perl 6 will become larger and be more future proof! Cool Perl 6 features in Perl 5 • say • yada yada yada (…) • state variables • defined-or (//)! • lexical subs • subroutine signatures • OK as long as it doesn’t involve types print "Foo\n"; Foo ! say "Foo"; Foo print "Foo\n"; !Foo say "Foo"; Foo print "Foo\n"; Foo ! say "Foo"; Foo print "Foo\n"; Foo ! say "Foo"; Foo sub a { ..
    [Show full text]
  • A Stackable File System for Large Article Directories
    Usenetfs: A Stackable File System for Large Article Directories Erez Zadok and Ion Badulescu Computer Science Department, Columbia University {ezk,ion}@cs.columbia.edu CUCS-022-98 Abstract rectories are visible. Usenetfs is small and is transparent to the user. It re- The Internet has grown much in popularity in the past quires no change to News software, to other file systems, few years. Numerous users read USENET newsgroups or to the rest of the operating system. Usenetfs is more daily for entertainment, work, study, and more. USENET portable than other native kernel-based file systems be- News servers have seen a gradual increase in the traffic cause it interacts with the Vnode interface which is similar exchanged between them, to a point where the hardware on many different platforms. and software supporting the servers is no longer capable of meeting demand, at which point the servers begin “drop- ping” articles they could not process. The rate of this in- 1 Introduction crease has been faster than software or hardware improve- ments were able to keep up, resulting in much time and ef- USENET is a popular world-wide network consisting of fort spent by administrators upgrading their news systems. thousands of discussion and informational “news groups.” One of the primary reasons for the slowness of news Many of these are very popular and receive thousands of servers has been the need to process many articles in very articles each day. In addition, many control messages are large flat directories representing newsgroups such as con- exchanged between news servers around the world, a large trol.cancel and misc.jobs.offered.
    [Show full text]
  • Multimedia Applications for Training in Communications
    New technologies for university education PARROT VIRTUAL MACHINE AS A PEDAGOGIC TOOL C. Aperghis-Tramoni, J. Guizol Universite de la Mediterranee For about 20 years now, Perl programming language did develop itself up to the actual release which is 5. Former releases were : Perl 1 : January 1988 Perl 2 : June 1988 Perl 3 : October 1989 Perl 4 : In 992 Perl 5 : Since August 1997 Lets say first some words on how releases are numbered. Three elements have to be considered : Revision. Version. Subversion. It means that, if we consider Perl 5.6.1, Revision is 6, Version is 5 and subversion is 1. Even versions are maintenance one (5.6.x) Odd versions are versions for development (5.7.x) Before reaching 5.6.0, subversions _01 à _49 will have been reserved for debugging. Subversions _50 à _99 are considered as unstable versions. Perl contains a magical variable ($]) that contains the number of the release. This coding uses the composite scheme of numbering in floating point mode. Value is computed as : Revision + Version/1000 + Subversion/10000 Up to now, all these evolutions have never been revolutions, language did remains an interpreted one, only release 5 did propose objects as a new feature. On contrary, the last one, number 6, will bring a radical change in Perl design, it will no more be interpreted but compiled in a byte codes that will be carried out on a virtual machine, the parrot machine.. The simplicity of this machine, the power of its assembly language did decide us to use it as a support for assembly language courses.
    [Show full text]
  • Web Development with Perl
    Web Development with Perl Paul Fenwick Jacinta Richardson Kirrily Robert Web Development with Perl by Paul Fenwick, Jacinta Richardson, and Kirrily Robert Copyright © 1999-2000 Netizen Pty Ltd Copyright © 2000 Kirrily Robert Copyright © 2001 Obsidian Consulting Group Pty Ltd Copyright © 2001-2006 Perl Training Australia Pty Ltd Copyright © 2001-2006 Paul Fenwick ([email protected]) Copyright © 2001-2006 Jacinta Richardson ([email protected]) Open Publications License 1.0 This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http://www.opencontent.org/openpub/). Distribution of this work or derivative of this work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder. This document includes content from the CGI Programming with Perl training notes originally created by Kirrily Robert and Netizen Pty Ltd. All additional material written by Paul Fenwick and Jacinta Richardson. Copies of the Netizen training manuals can be found at http://sourceforge.net/projects/spork This training manual is maintained by Perl Training Australia. This is version 1.2 of Perl Training Australia’s "Web Development with Perl" training manual. Table of Contents 1. Introduction..................................................................................................................................... 1 Introduction................................................................................................................................
    [Show full text]
  • Extendable Storage Framework for Reliable Clustered Storage Systems by Sumit Narayan B.E., University of Madras, 2002 M.S., University of Connecticut, 2004
    Extendable Storage Framework for Reliable Clustered Storage Systems Sumit Narayan, Ph.D. University of Connecticut, 2010 The total amount of information stored on disks has increased tremendously in re­ cent years with data storage, sharing and backup becoming more important than ever. The demand for storage has not only changed in size, but also in speed, reli­ ability and security. These requirements not only create a big challenge for storage administrators who must decide on several aspects of storage policy with respect to provisioning backups, retention, redundancy, security, performance, etc. but also for storage system architects who must aim for a one system fits all design. Storage poli­ cies like backup and security are typically set by system administrators for an entire file system, logical volume or storage pool. However, this granularity is too large and can sacrifice storage efficiency and performance - particularly since different files have different storage requirements. In the same context, clustered storage systems that are typically used for data storage or as file servers, provide very high performance and maximum scalability by striping data across multiple nodes. However, high num­ ber of storage nodes in such large systems also raises concerns for reliability in terms of loss of data due to failed nodes, or corrupt blocks on disk drives. Redundancy techniques similar to RAID across these nodes are not common because of the high overhead incurred owing to the parity calculations for all the files present on the file system. In the same way, data integrity checks are often omitted or disabled in file systems to guarantee high throughput from the storage system.
    [Show full text]