Optimizing Web Performance with TBB
|
|
|
- Milton Rose
- 10 years ago
- Views:
Transcription
1 Optimizing Web Performance with TBB Open Parallel Ltd August 11, 2011
2 ii Open Parallel is a research and development company that focuses on parallel programming and multicore development. We are a bunch of highly skilled geeks from various backgrounds that work together on problems in parallel programming and software development for multicore and manycore platforms. At LinuxConf 2010 in Wellington James Reinders gave a talk about the Threading Building Blocks (TBB) library, a C++ threading library that sets out to make multicore programming more accessible to the average programmer. We took this idea on board and explored the possibilities of opening up this approach to an even wider audience, namely the audience of web application developers working in script languages. This paper explains our success and the path that lead up to it. We explain the work we did in Perl and PHP, how we integrated TBB functionality into WordPress by running WordPress on HipHop and in the end we will briefly show you the demos we wrote. The demos are small Perl and PHP projects that can be played with at http: //geopic.me and the source code can be downloaded from All code we wrote in this project is free software that can be downloaded from our github repositories. The respective links are in Section 5.
3 iii Contents 1 Scripting Languages Why scripting languages Why parallel Implementation Lightweight co-routines The goal geopic.me PHP version What we demonstrate Setup Perl version What we demonstrate Setup HipHop Implementation WordPress Who benefits from it Example threads::tbb Architecture Code in the wild Example Further reading Contacts
4 1 1 Scripting Languages 1.1 Why scripting languages One of the largest uses of custom written software today is some sort of web enabled software. This huge part of the software development industry is nowadays mainly backed by scripting languages. Even huge sites like Facebook, Yahoo! and Twitter are mainly written in scripting languages as it is faster to develop and often easier to deploy. The top three scripting languages are Javascript, PHP and Perl. With the lack of direct access to a CPU in Javascript we set out to look at PHP and Perl. 1.2 Why parallel Many websites require a non-trivial amount of per-request processing in the application layer, perhaps to retrieve, consolidate or otherwise manipulate data. Achieving better performance at this level improves response times and the overall user experience. Even when processing time at application level is not critical, parallelizing access to database and web service backend layers can yield substantial improvements in perceived performance. With many scripting languages writing non-linear code is either really hard or near to impossible. PHP lacks any sort of parallel execution that does not require an entire new PHP process. Perl offers more in this area but it is still considered a non trivial art. This drove our goal of adding TBB support into PHP and Perl, starting with HipHop as the PHP implementation of choice and later on adding Perl support to the game. 1.3 Implementation Implementing TBB into many current language interpreters is a challenging problem, due to both a lack of basic concurrency support in those interpreters (and sometimes in the language syntax), coupled with a disconnect between the architecture of TBB and the architecture of the interpreter. There are one failed and one not widely used threading approach in Perl and every attempt in PHP to implement threading has failed so far. The core developers on both sides are very much in doubt if it is a path worth going down at all. The problem is global locking and copying/sharing of data structures that are thread local. Our Perl implementation is a starting point that could influence not only the Perl community but other language designers and interpreter developers as well.
5 1.4 Lightweight co-routines 2 In the Perl community we are trying to lobby for a const keyword that would lock a data structure and remove the need to copy it into every thread. The ability to make something immutable is missing in Perl and PHP and this makes the startup cost of any worker thread very expensive. For our Perl library we wrote a lazy clone module that would only clone a data structure if the worker thread really accesses it. That way we only penalize the worker thread for accessing data - we can possibly get around cloning structures at all if they are not accessed within this task. On the PHP side we used HipHop which is already thread safe and extended it with TBB data structures and library functionality. This task was easier in that respect as we already had a very well designed compiler that only needed extending. 1.4 Lightweight co-routines Another problem we tried to solve on the way is the problem of executing tasks in parallel that may not be the same tasks (no for loop) like fetching content via HTTP while resizing an image. In PHP this can only be done in serial or by using a third party tool like Gearman. With TBB we can run multiple threads in parallel and could run those tasks in parallel on several CPUs without the need of spinning up an entire web server instance. This looked intriguing and we got it working in the end. 1.5 The goal We managed to get TBB support into Perl and PHP and managed to expose some of the TBB functionality into scripting languages. This major goal of ours was reached with the work we explain in Section 3 and Section 4. Our goal of exposing a simple threading concept in scripting languages was reached and we think we added a significant piece of work and research to both, the Perl and the PHP community. We will continue to work on these topics and will continue to expose threading concepts to script languages. Our work is not over yet but we are a big step forward.
6 3 2 geopic.me Before diving into the implementation details I want to show two little tools as real world demos and as working code to look at. The demos are based around the HTML5 geo tag which is present in modern browsers and can be read with a Javascript API. Both demos run on a Ubuntu LTS server with four emulated CPUs hosted by Rackspace. They run behind a nginx web server to put the thinnest layer of abstraction on top of the actual code. The demos are both, fun to look at and interesting to read the code. 2.1 PHP version The PHP version is running on HipHop and is called via AJAX calls in a static HTML page. The page itself is a simple HTML page with only as much Javascript as we need to call the HipHop code via AJAX. 2.2 What we demonstrate In the HipHop version we read the current Lat/Lon from the accessing browser via the geo tag and then search Twitter for tweets of that area. We then filter out all tweets that have image URLs in it and in parallel search Flickr for recent additions in the same area. The demo is mainly about fetching information in parallel and shows as a result a stream of images of your area. When looking at the code base we can easily track where things happen in parallel which would normally require a separate web server instance or some sort of third party tool. 2.3 Setup To set up the HipHop demo we expect that you have prior knowledge of how HipHop works. If you don t then have a look at the HipHop Wiki 1 which explains all the steps necessary to get HipHop working on different platforms. When starting with HipHop keep in mind that you actually set up a build tool chain that takes your PHP code, turns it into C++ and then compiles it down to a Unix binary. The Unix binary can then be run from the command line and is in fact a small web server running your translated PHP code. 1
7 2.3 Setup 4 For the HipHop version to work you need to clone our HipHop version - with our patches, as compared to the official Facebook version - from Github which can be found on github.com 2. Compile HipHop the same way as described in the Facebook Wiki or use your existing HipHop build environment only with our repository instead of the Facebook one. When you have a working HipHop you need to clone our geopic.me code from github.com 3. Compile it down to a binary either with your preferred options or with the following command line (assuming you set up the environment variables as suggested in the tutorial). # $HPHP_HOME/src/hphp/hphp --input-list=files.list -k 1 --log=3 Note the temp directory HipHop compiled into and export it to $BASE, then run the demo with: # ${BASE}/program -m server --p v Log.Level=Verbose You can now point your browser to port and play with the demo. Also watch your terminal that started the demo for some debug output. The nginx config snippet that would make the demo work and map all the right paths looks like this: location / { root /var/www/geopic.me; index index.html; } location /hphp/ { proxy_pass }
8 2.4 Perl version Perl version The Perl version is based on Mojolicious - a micro web framework that is written to fill the gap in web frameworks for small projects like this. 2.5 What we demonstrate In the Perl demo we search Flickr for photos of the area based on the geo tag. We then fetch all the images and cache them locally. We then offer two different scaling methods, one running single threaded and one with TBB. Both methods take the cached images, scale each image into a smaller one and then compose one big image out of them. The single threaded process takes on average about a second longer than the TBB based process. Interesting to note is also that the TBB based version has a startup cost for the first iteration and then can play out its strengths in every iteration after that first one. Under the image grid is a small stats table that gathers stats about the different phases of scaling and assembling of the image and calculates some averages for both scaling methods if they are run more than once. 2.6 Setup The Perl version needs the ImageMagick libraries and TBB, ImageMagick normally ships with some OpenMP optimizations that can change the characteristics of the tests a bit. If you try to only run the demos for getting to know threads::tbb then you can just install the necessary libraries. If you are interested in replicating our demo setup and making sure that ImageMagick is doing the right thing than you have to compile it without OpenMP support. On a Debian based system this may look like this (no guarantees for success and best done in a controlled environment like a chroot or a VM) sudo apt-get build-dep imagemagick sudo apt-get install build-essential fakeroot apt-get source imagemagick cd imagemagick-* vi debian/rules # add --disable-openmp to the configure command-line dpkg-buildpackage -b -uc -rfakeroot cd.. dpkg -i *.deb # install the freshly built packages
9 2.6 Setup 6 Furthermore we need the TBB library: sudo apt-get install libtbb-dev And finally we need a set of Perl libraries: JSON::XS LWP::Simple Mojolicious::Lite Flickr::API2::Cached threads::tbb All that is missing now is the actual project which can simply be cloned from github.com or downloaded from our github repository 5 To run the demo simply change into the directory and fire it up with the following command line: #./geopicme-pl daemon This starts the demo on port 3000 and you can point your browser to localhost 6 and play with it. Also make sure to have a look at the terminal that started the demo for some informative debug output. The nginx config snippet that would make the demo work and map all the right paths looks like this: location / { root /var/www/geopic.me; index index.html; } location /perl/ { proxy_pass }
10 7 3 HipHop HipHop is a PHP to C++ cross compiler that was developed by Facebook to cut down on resource needs and speed up the execution times of their gigantic web infrastructure that was started on a classic PHP/MySQL stack and now has to scale to hundreds of millions of users. The HipHop project is a PHP implementation that is thread safe and already uses TBB for some memory management. 3.1 Implementation We started by extending the existing support and added first only the new parallel for function. Later, we added concurrent data structures and re-implemented our first approach. What we have now is a robust implementation of parallel for and parallel reduce with the data structures needed to support them. What we learned on the way was both, very enlightening and quite frustrating at times. Our aim to make TBB more widely accessible was reached by getting the language extension into HipHop but we also tried to get it into Zend PHP. This turned out to only work with a language compatibility module that does not provide the functionality we can offer on the HipHop platform. The reason for this is the architecture of the PHP interpreter - PHP is designed to run a single thread per web request and provides no support for multiple threads at this level. Because of this, we provide a version of the module for PHP that emulates the TBB calls using a single thread. This allows a single codebase to be used in both TBB and HipHop - obviously the speed-ups from parallelism only happen in HipHop. 3.2 WordPress In our work with the PHP HipHop compiler we also wrote a patch set for WordPress and enhanced WordPress with our new parallel for language extension. This trial brought us instant success in reduced page load times. The patch set for WordPress only replaced some key foreach loops with parallel for and was our first real success with the TBB library in PHP. Based on that success we started out to reimplement our initial approach and tidy up our patch set for HipHop to make it more accessible to others. 3.3 Who benefits from it PHP applications that benefit from TBB typically perform work in responding to user requests that is CPU, resource or latency bound. This could be a complex
11 3.4 Example 8 mathematical transform, a collection of database queries or web requests. Using TBB, a traditional iterative operation is converted to use a parallel for or parallel reduce idiom. This relatively simple code change enables the application to take advantage of multi-threading. There is no need for the developer to be concerned with traditional synchronization idioms or to worry about deadlock and other concurrency issues. 3.4 Example To illustrate what a code change looks like when rewriting iterative code into parallel code we will give you a short example. This is a simple iteration through an array: for($n = 1; $n<$array.count(); $n++) { process($n, $n+1, $array); // process(a,b,c) manipulates the slice // of the array c from a to b -1 } This can be rewritten using TBB as: parallel_for_array($array, process ); In this version process will be called in parallel using TBB calls and now runs optimized to the underlying CPU architecture. This demo shows that the code change needed is pretty small but the speedup can be dramatic.
12 9 4 threads::tbb The Perl project worked towards a Perl module that can be used to get access to TBB functions directly. We also started out to implement the core memory structures and then built on top of those the parallel for functionality. The module we have now is stable enough to demonstrate the gains we can get by using TBB in Perl. 4.1 Architecture With threads::tbb, you do not write your algorithms from the perspective of a thread and what the thread should do next. Instead, a selection of parallelism primitives which have been found to be workable and scalable are provided. Just as when writing co-operative multi-threading programs as with Event or POE, the challenge is to break heavy work into small but substantial, generally nonblocking chunks of work. Substantial is yet to be quantified; it s likely to be around the ballpark of 1,000 s of Perl runloop iterations. Unlike event-based programming, you can freely recurse into the library, start new parallel sections, and expect all runnable tasks to process, up to the number of threads that you started. As your program runs, the API allows the TBB library to keep queues (trees actually) of runnable tasks. These are identified and kept in thread-affinitive task lists. Other threads can come along and steal work from these lists, to keep cores busy. What this means is that it is relatively easy to make programs which can make best use of processing power available on newer multi-core CPUs. It also avoids per-thread overheads, to only start as many threads are required to use all of the parallelism in hardware. Each thread requires its own C stack and complete Perl interpreter. Therefore it is generally not desirable to create more threads than the hardware has available. When the first threads::tbb::init object is made, one worker thread is created for each processor core or virtual core. This is performed by the TBB library before the Perl interpreter can use strict; Subsequent calls to it will not create new worker pthreads, instead they will re-use the existing threads. Each worker thread is for the most part, completely isolated from the other threads - just like use threads. Unlike use threads, the perl clone() function is never used. Instead, each interpreter must load all of the modules required to get it to do useful work on its own. This is largely automatic, however it is not foolproof and you will benefit from using the constructor thoughtfully.
13 4.2 Code in the wild 10 Worker threads do not share any Perl variables with the main process. A system of lazy deep cloning is used to transport Perl data structures between threads; you must pass data through these objects, as they are the only objects which are the same between threads 4.2 Code in the wild We are only starting out to use threads::tbb in the wild but we have used it in to retrofit album with parallelism. This program spends most of its time resizing images. The image resizing problem is a common one and many websites that have thumbnails know it. We took album which used to work sequentially and turned it into a parallel script using TBB. We did many tests with it and tried to figure out how to tune TBB for optimal use in Perl. We tested on an Amazon EC2 xlarge instance with a gallery being thumbnailed of approximately 118MB in size. The speedup for the whole program run was not 8 times on this 8-way system, but the image resizing phase of the program operation was much faster; the overall speed-up is 5.6x. Not bad for changing 43 lines in a script almost 8,000 lines long 4.3 Example To illustrate what threads::tbb code looks like and how one would go about rewriting code with threads::tbb we will take the example from earlier only in Perl this time. This is the simple iteration through an array from before only in Perl: foreach $n (@array) { push(@result, process($n)); } This can be rewritten using threads::tbb as: our $tbb = threads::tbb->new( requires => [ $0 ] ) unless =
14 11 5 Further reading To sum up our experience with TBB and script languages we know now that threading interpreters buries its very own set of challenges but we were able to get further than others did on the same mission by using TBB. The libraries we produced so far - which are open source and can be found on our github account 7 - will be further developed and maintained. We will continue working on both platforms to expose the power of multicore CPUs to developers in an approachable way. The approach of TBB to expose multi threading to developers in a problem oriented way instead of a pure thread oriented way seems like a very natural way of retrofitting threading to existing problems. We highly recommend reading the TBB book (Reinders [2007]) that James Reinders wrote even if you are not a C++ developer as it is very relevant for the work we did and is also a very good way to learn more about threaded programming in general. Along the way we also produced a number of more detailed white papers covering various aspects of the project: theads::tbb (Vilain) A paper about the Perl library TBB in WordPress (Gschwendtner) A paper about our work with TBB on HipHop and in WordPress WordPress on HipHop (Gschwendtner) A paper about porting WordPress to HipHop Get in touch if you are interested in these projects or have questions about the work we did. There is further information on our website on Contacts general Nicolas Erdody: [email protected] technical Lenz Gschwendtner: [email protected] 7
15 REFERENCES 12 References James Reinders. Intel Threading Building Blocks, Outfitting C++ for Multi-core Processor Parallelism. O Reilly Media, July Sam Vilain. Threading perl using TBB: the CPAN module and white paper, May URL threading-perl-using-tbb-the-cpan-module-and-white-paper. Lenz Gschwendtner. TBB in WordPress, October 2010a. URL openparallel.files.wordpress.com/2010/09/tbb-in-wordpress-oct-10. pdf. Lenz Gschwendtner. WordPress on HipHop, November 2010b. URL wordpress-on-hiphop-nov-10.pdf. Intel. Threading building blocks. URL GitHub. Open parallel git repositories. URL Open Parallel. Open parallel website. URL
Installing an open source version of MateCat
Installing an open source version of MateCat This guide is meant for users who want to install and administer the open source version on their own machines. Overview 1 Hardware requirements 2 Getting started
pbuilder Debian Conference 2004
pbuilder Debian Conference 2004 Junichi Uekawa May 2004 1 Introduction pbuilder[1] is a tool that is used for Building Debian packages in a clean environment inside chroot 1. In this paper, the background
A Tool for Evaluation and Optimization of Web Application Performance
A Tool for Evaluation and Optimization of Web Application Performance Tomáš Černý 1 [email protected] Michael J. Donahoo 2 [email protected] Abstract: One of the main goals of web application
Platform as a Service and Container Clouds
John Rofrano Senior Technical Staff Member, Cloud Automation Services, IBM Research [email protected] or [email protected] Platform as a Service and Container Clouds using IBM Bluemix and Docker for Cloud
MAGENTO HOSTING Progressive Server Performance Improvements
MAGENTO HOSTING Progressive Server Performance Improvements Simple Helix, LLC 4092 Memorial Parkway Ste 202 Huntsville, AL 35802 [email protected] 1.866.963.0424 www.simplehelix.com 2 Table of Contents
Using Redis as a Cache Backend in Magento
Using Redis as a Cache Backend in Magento Written by: Alexey Samorukov Aleksandr Lozhechnik Kirill Morozov Table of Contents PROBLEMS WITH THE TWOLEVELS CACHE BACKEND CONFIRMING THE ISSUE SOLVING THE ISSUE
VMware Server 2.0 Essentials. Virtualization Deployment and Management
VMware Server 2.0 Essentials Virtualization Deployment and Management . This PDF is provided for personal use only. Unauthorized use, reproduction and/or distribution strictly prohibited. All rights reserved.
How to use PDFlib products with PHP
How to use PDFlib products with PHP Last change: July 13, 2011 Latest PDFlib version covered in this document: 8.0.3 Latest version of this document available at: www.pdflib.com/developer/technical-documentation
Magento & Zend Benchmarks Version 1.2, 1.3 (with & without Flat Catalogs)
Magento & Zend Benchmarks Version 1.2, 1.3 (with & without Flat Catalogs) 1. Foreword Magento is a PHP/Zend application which intensively uses the CPU. Since version 1.1.6, each new version includes some
Table of contents. HTML5 Data Bindings SEO DMXzone
Table of contents Table of contents... 1 About HTML5 Data Bindings SEO... 2 Features in Detail... 3 The Basics: Insert HTML5 Data Bindings SEO on a Page and Test it... 7 Video: Insert HTML5 Data Bindings
PHP on IBM i: What s New with Zend Server 5 for IBM i
PHP on IBM i: What s New with Zend Server 5 for IBM i Mike Pavlak Solutions Consultant [email protected] (815) 722 3454 Function Junction Audience Used PHP in Zend Core/Platform New to Zend PHP Looking to
White Paper. Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1
White Paper Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1 INTRODUCTION...3 FRAMEWORKS AND LANGUAGES...3 SECURITY AND UPGRADES...4 Major Upgrades...4 Minor Upgrades...5
Installation of PHP, MariaDB, and Apache
Installation of PHP, MariaDB, and Apache A few years ago, one would have had to walk over to the closest pizza store to order a pizza, go over to the bank to transfer money from one account to another
Open Source Content Management System for content development: a comparative study
Open Source Content Management System for content development: a comparative study D. P. Tripathi Assistant Librarian Biju Patnaik Central Library NIT Rourkela [email protected] Designing dynamic and
Network operating systems typically are used to run computers that act as servers. They provide the capabilities required for network operation.
NETWORK OPERATING SYSTEM Introduction Network operating systems typically are used to run computers that act as servers. They provide the capabilities required for network operation. Network operating
HDFS Cluster Installation Automation for TupleWare
HDFS Cluster Installation Automation for TupleWare Xinyi Lu Department of Computer Science Brown University Providence, RI 02912 [email protected] March 26, 2014 Abstract TupleWare[1] is a C++ Framework
A Comparison Of Shared Memory Parallel Programming Models. Jace A Mogill David Haglin
A Comparison Of Shared Memory Parallel Programming Models Jace A Mogill David Haglin 1 Parallel Programming Gap Not many innovations... Memory semantics unchanged for over 50 years 2010 Multi-Core x86
How To Use Ngnix (Php) With A Php-Fpm (Php-Fmm) On A Web Server (Php5) On Your Web Browser) On An Ubuntu Web Server On A Raspberry Web 2.5 (Net
Powering Magento with Ngnix and PHP-FPM Written by: Yuri Golovko Alexey Samorukov Table of Contents INTRODUCTION WHY YOU SHOULD CONSIDER NGNIX NGNIX AND STATIC CONTENT HOW TO USE NGNIX NGNIX SYSTEM REQUIREMENTS
Phoronix Test Suite v5.8.0 (Belev)
(Belev) Phoromatic User Manual Phoronix Test Suite Phoromatic Phoromatic Server Introduction Phoromatic is a remote management system for the Phoronix Test Suite. Phoromatic allows the automatic (hence
Functions of NOS Overview of NOS Characteristics Differences Between PC and a NOS Multiuser, Multitasking, and Multiprocessor Systems NOS Server
Functions of NOS Overview of NOS Characteristics Differences Between PC and a NOS Multiuser, Multitasking, and Multiprocessor Systems NOS Server Hardware Windows Windows NT 4.0 Linux Server Software and
CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study
CS 377: Operating Systems Lecture 25 - Linux Case Study Guest Lecturer: Tim Wood Outline Linux History Design Principles System Overview Process Scheduling Memory Management File Systems A review of what
Data Mining in the Swamp
WHITE PAPER Page 1 of 8 Data Mining in the Swamp Taming Unruly Data with Cloud Computing By John Brothers Business Intelligence is all about making better decisions from the data you have. However, all
Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines
Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines Operating System Concepts 3.1 Common System Components
GUI and Web Programming
GUI and Web Programming CSE 403 (based on a lecture by James Fogarty) Event-based programming Sequential Programs Interacting with the user 1. Program takes control 2. Program does something 3. Program
Installation Guide for AmiRNA and WMD3 Release 3.1
Installation Guide for AmiRNA and WMD3 Release 3.1 by Joffrey Fitz and Stephan Ossowski 1 Introduction This document describes the installation process for WMD3/AmiRNA. WMD3 (Web Micro RNA Designer version
Creating Value through Innovation MAGENTO 1.X TO MAGENTO 2.0 MIGRATION
Creating Value through Innovation MAGENTO 1.X TO MAGENTO 2.0 MIGRATION AGENDA 1. Overview of Magento 2.0 2. Features and benefits of Magento 2.0 over Magento 1.x 3. Why should we upgrade to Magento 2.0
Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON
Revista Informatica Economică, nr. 4 (44)/2007 45 Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON Iulian ILIE-NEMEDI, Bucharest, Romania, [email protected] Writing a custom web
How To Manage A Multi Site In Drupal
http://platform.sh [email protected] MODERNISING DRUPAL MULTI-SITE IMPLEMENTATIONS Drupal multi-site is easily re-architected to run each site in its own containerised environment. It s better and it costs
Java SE 8 Programming
Oracle University Contact Us: 1.800.529.0165 Java SE 8 Programming Duration: 5 Days What you will learn This Java SE 8 Programming training covers the core language features and Application Programming
Efficiency of Web Based SAX XML Distributed Processing
Efficiency of Web Based SAX XML Distributed Processing R. Eggen Computer and Information Sciences Department University of North Florida Jacksonville, FL, USA A. Basic Computer and Information Sciences
This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications.
20486B: Developing ASP.NET MVC 4 Web Applications Course Overview This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications. Course Introduction Course Introduction
Git Fusion Guide 2015.3. August 2015 Update
Git Fusion Guide 2015.3 August 2015 Update Git Fusion Guide 2015.3 August 2015 Update Copyright 1999-2015 Perforce Software. All rights reserved. Perforce software and documentation is available from http://www.perforce.com/.
AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping
AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping 3.1.1 Constants, variables and data types Understand what is mean by terms data and information Be able to describe the difference
Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5
Technical Note Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5 In the VMware Infrastructure (VI) Perl Toolkit 1.5, VMware
Performance Analysis and Optimization Tool
Performance Analysis and Optimization Tool Andres S. CHARIF-RUBIAL [email protected] Performance Analysis Team, University of Versailles http://www.maqao.org Introduction Performance Analysis Develop
Parallel Algorithm Engineering
Parallel Algorithm Engineering Kenneth S. Bøgh PhD Fellow Based on slides by Darius Sidlauskas Outline Background Current multicore architectures UMA vs NUMA The openmp framework Examples Software crisis
Scheduling Task Parallelism" on Multi-Socket Multicore Systems"
Scheduling Task Parallelism" on Multi-Socket Multicore Systems" Stephen Olivier, UNC Chapel Hill Allan Porterfield, RENCI Kyle Wheeler, Sandia National Labs Jan Prins, UNC Chapel Hill Outline" Introduction
SiteCelerate white paper
SiteCelerate white paper Arahe Solutions SITECELERATE OVERVIEW As enterprises increases their investment in Web applications, Portal and websites and as usage of these applications increase, performance
BENCHMARKING CLOUD DATABASES CASE STUDY on HBASE, HADOOP and CASSANDRA USING YCSB
BENCHMARKING CLOUD DATABASES CASE STUDY on HBASE, HADOOP and CASSANDRA USING YCSB Planet Size Data!? Gartner s 10 key IT trends for 2012 unstructured data will grow some 80% over the course of the next
Building a Scalable News Feed Web Service in Clojure
Building a Scalable News Feed Web Service in Clojure This is a good time to be in software. The Internet has made communications between computers and people extremely affordable, even at scale. Cloud
Example of Standard API
16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface
The Grid Monitor. Usage and installation manual. Oxana Smirnova
NORDUGRID NORDUGRID-MANUAL-5 4/3/2014 The Grid Monitor Usage and installation manual Oxana Smirnova Abstract The LDAP-based ARC Grid Monitor is a Web client tool for the ARC Information System, allowing
A Web- based Approach to Music Library Management. Jason Young California Polytechnic State University, San Luis Obispo June 3, 2012
A Web- based Approach to Music Library Management Jason Young California Polytechnic State University, San Luis Obispo June 3, 2012 Abstract This application utilizes modern standards developing in web
4D WebSTAR 5.1: Performance Advantages
4D WebSTAR 5.1: Performance Advantages CJ Holmes, Director of Engineering, 4D WebSTAR OVERVIEW This white paper will discuss a variety of performance benefits of 4D WebSTAR 5.1 when compared to other Web
How To Build A Cloud Computer
Introducing the Singlechip Cloud Computer Exploring the Future of Many-core Processors White Paper Intel Labs Jim Held Intel Fellow, Intel Labs Director, Tera-scale Computing Research Sean Koehl Technology
Capacity Planning for Microsoft SharePoint Technologies
Capacity Planning for Microsoft SharePoint Technologies Capacity Planning The process of evaluating a technology against the needs of an organization, and making an educated decision about the configuration
Building Java Servlets with Oracle JDeveloper
Building Java Servlets with Oracle JDeveloper Chris Schalk Oracle Corporation Introduction Developers today face a formidable task. They need to create large, distributed business applications. The actual
About ZPanel. About the framework. The purpose of this guide. Page 1. Author: Bobby Allen ([email protected]) Version: 1.1
Page 1 Module developers guide for ZPanelX Author: Bobby Allen ([email protected]) Version: 1.1 About ZPanel ZPanel is an open- source web hosting control panel for Microsoft Windows and POSIX based
XpoLog Center Suite Data Sheet
XpoLog Center Suite Data Sheet General XpoLog is a data analysis and management platform for Applications IT data. Business applications rely on a dynamic heterogeneous applications infrastructure, such
W3Perl A free logfile analyzer
W3Perl A free logfile analyzer Features Works on Unix / Windows / Mac View last entries based on Perl scripts Web / FTP / Squid / Email servers Session tracking Others log format can be added easily Detailed
MarkLogic Server. Installation Guide for All Platforms. MarkLogic 8 February, 2015. Copyright 2015 MarkLogic Corporation. All rights reserved.
Installation Guide for All Platforms 1 MarkLogic 8 February, 2015 Last Revised: 8.0-4, November, 2015 Copyright 2015 MarkLogic Corporation. All rights reserved. Table of Contents Table of Contents Installation
From Faust to Web Audio: Compiling Faust to JavaScript using Emscripten
From Faust to Web Audio: Compiling Faust to JavaScript using Emscripten Myles Borins Center For Computer Research in Music and Acoustics Stanford University Stanford, California United States, [email protected]
Understanding the Benefits of IBM SPSS Statistics Server
IBM SPSS Statistics Server Understanding the Benefits of IBM SPSS Statistics Server Contents: 1 Introduction 2 Performance 101: Understanding the drivers of better performance 3 Why performance is faster
Running Nginx as Reverse Proxy server
Running Nginx as Reverse Proxy server October 30 2011 This is a tutorial on running Nginx as a reverse proxy server. It covers all basics of using Nginx as a reverse proxy server. By Ayodhyanath Guru www.jafaloo.com
Enhancing SQL Server Performance
Enhancing SQL Server Performance Bradley Ball, Jason Strate and Roger Wolter In the ever-evolving data world, improving database performance is a constant challenge for administrators. End user satisfaction
Accelerating Wordpress for Pagerank and Profit
Slide No. 1 Accelerating Wordpress for Pagerank and Profit Practical tips and tricks to increase the speed of your site, improve conversions and climb the search rankings By: Allan Jude November 2011 Vice
A Comparative Study on Vega-HTTP & Popular Open-source Web-servers
A Comparative Study on Vega-HTTP & Popular Open-source Web-servers Happiest People. Happiest Customers Contents Abstract... 3 Introduction... 3 Performance Comparison... 4 Architecture... 5 Diagram...
A REST API for Arduino & the CC3000 WiFi Chip
A REST API for Arduino & the CC3000 WiFi Chip Created by Marc-Olivier Schwartz Last updated on 2014-04-22 03:01:12 PM EDT Guide Contents Guide Contents Overview Hardware configuration Installing the library
Drupal CMS for marketing sites
Drupal CMS for marketing sites Intro Sample sites: End to End flow Folder Structure Project setup Content Folder Data Store (Drupal CMS) Importing/Exporting Content Database Migrations Backend Config Unit
D5.4.4 Integrated SemaGrow Stack API components
ICT Seventh Framework Programme (ICT FP7) Grant Agreement No: 318497 Data Intensive Techniques to Boost the Real Time Performance of Global Agricultural Data Infrastructures Deliverable Form Project Reference
VOC Documentation. Release 0.1. Russell Keith-Magee
VOC Documentation Release 0.1 Russell Keith-Magee February 07, 2016 Contents 1 About VOC 3 1.1 The VOC Developer and User community................................ 3 1.2 Frequently Asked Questions.......................................
Introduction to Cloud Computing
Introduction to Cloud Computing Parallel Processing I 15 319, spring 2010 7 th Lecture, Feb 2 nd Majd F. Sakr Lecture Motivation Concurrency and why? Different flavors of parallel computing Get the basic
Advantage of Jquery: T his file is downloaded from
What is JQuery JQuery is lightweight, client side JavaScript library file that supports all browsers. JQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling,
Apache Thrift and Ruby
Apache Thrift and Ruby By Randy Abernethy In this article, excerpted from The Programmer s Guide to Apache Thrift, we will install Apache Thrift support for Ruby and build a simple Ruby RPC client and
Big Systems, Big Data
Big Systems, Big Data When considering Big Distributed Systems, it can be noted that a major concern is dealing with data, and in particular, Big Data Have general data issues (such as latency, availability,
PHP web serving study Performance report
PHP web serving study Performance report by Stefan "SaltwaterC" Rusu Date: May - June 2010 Contact: http://saltwaterc.net/contact or admin [at] saltwaterc [dot] net Hardware Configurations Web Server:
Architecture and Mode of Operation
Software- und Organisations-Service Open Source Scheduler Architecture and Mode of Operation Software- und Organisations-Service GmbH www.sos-berlin.com Scheduler worldwide Open Source Users and Commercial
Electronic Ticket and Check-in System for Indico Conferences
Electronic Ticket and Check-in System for Indico Conferences September 2013 Author: Bernard Kolobara Supervisor: Jose Benito Gonzalez Lopez CERN openlab Summer Student Report 2013 Project Specification
Benchmarking and monitoring tools
Benchmarking and monitoring tools Presented by, MySQL & O Reilly Media, Inc. Section one: Benchmarking Benchmarking tools and the like! mysqlslap! sql-bench! supersmack! Apache Bench (combined with some
How To Use A Wordpress Wcms System For An Adult Site
Web Content Management Systems http://www.adultdigitalsolutions.com Introduction A Web Content Management System (also known as a WCMS) is a computer program used to create, edit, manage and publish online
Computer Networks 1 (Mạng Máy Tính 1) Lectured by: Dr. Phạm Trần Vũ MEng. Nguyễn CaoĐạt
Computer Networks 1 (Mạng Máy Tính 1) Lectured by: Dr. Phạm Trần Vũ MEng. Nguyễn CaoĐạt 1 Lecture 10: Application Layer 2 Application Layer Where our applications are running Using services provided by
SOA, case Google. Faculty of technology management 07.12.2009 Information Technology Service Oriented Communications CT30A8901.
Faculty of technology management 07.12.2009 Information Technology Service Oriented Communications CT30A8901 SOA, case Google Written by: Sampo Syrjäläinen, 0337918 Jukka Hilvonen, 0337840 1 Contents 1.
Intro to Docker and Containers
Contain Yourself Intro to Docker and Containers Nicola Kabar @nicolakabar [email protected] Solutions Architect at Docker Help Customers Design Solutions based on Docker
GPU File System Encryption Kartik Kulkarni and Eugene Linkov
GPU File System Encryption Kartik Kulkarni and Eugene Linkov 5/10/2012 SUMMARY. We implemented a file system that encrypts and decrypts files. The implementation uses the AES algorithm computed through
ISLET: Jon Schipp, Ohio Linux Fest 2015. [email protected]. An Attempt to Improve Linux-based Software Training
ISLET: An Attempt to Improve Linux-based Software Training Jon Schipp, Ohio Linux Fest 2015 [email protected] Project Contributions The Netsniff-NG Toolkit SecurityOnion Bro Team www.open-nsm.net The
A Case Study - Scaling Legacy Code on Next Generation Platforms
Available online at www.sciencedirect.com ScienceDirect Procedia Engineering 00 (2015) 000 000 www.elsevier.com/locate/procedia 24th International Meshing Roundtable (IMR24) A Case Study - Scaling Legacy
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Building a Database-Driven Web Application With FileMaker
Building a Database-Driven Web Application With FileMaker Edward L. Ford November 26, 2006 Summary: This document discusses techniques for incorporation into the design of a FileMaker database that will
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
Front-End Performance Testing and Optimization
Front-End Performance Testing and Optimization Abstract Today, web user turnaround starts from more than 3 seconds of response time. This demands performance optimization on all application levels. Client
Course Development of Programming for General-Purpose Multicore Processors
Course Development of Programming for General-Purpose Multicore Processors Wei Zhang Department of Electrical and Computer Engineering Virginia Commonwealth University Richmond, VA 23284 [email protected]
CS197U: A Hands on Introduction to Unix
CS197U: A Hands on Introduction to Unix Lecture 4: My First Linux System J.D. DeVaughn-Brown University of Massachusetts Amherst Department of Computer Science [email protected] 1 Reminders After
Performance Evaluation for BlobSeer and Hadoop using Machine Learning Algorithms
Performance Evaluation for BlobSeer and Hadoop using Machine Learning Algorithms Elena Burceanu, Irina Presa Automatic Control and Computers Faculty Politehnica University of Bucharest Emails: {elena.burceanu,
SDFS Overview. By Sam Silverberg
SDFS Overview By Sam Silverberg Why did I do this? I had an Idea that I needed to see if it worked. Design Goals Create a dedup file system capable of effective inline deduplication for Virtual Machines
CSE-E5430 Scalable Cloud Computing Lecture 2
CSE-E5430 Scalable Cloud Computing Lecture 2 Keijo Heljanko Department of Computer Science School of Science Aalto University [email protected] 14.9-2015 1/36 Google MapReduce A scalable batch processing
Architecting ColdFusion For Scalability And High Availability. Ryan Stewart Platform Evangelist
Architecting ColdFusion For Scalability And High Availability Ryan Stewart Platform Evangelist Introduction Architecture & Clustering Options Design an architecture and develop applications that scale
RevoScaleR Speed and Scalability
EXECUTIVE WHITE PAPER RevoScaleR Speed and Scalability By Lee Edlefsen Ph.D., Chief Scientist, Revolution Analytics Abstract RevoScaleR, the Big Data predictive analytics library included with Revolution
HPC Wales Skills Academy Course Catalogue 2015
HPC Wales Skills Academy Course Catalogue 2015 Overview The HPC Wales Skills Academy provides a variety of courses and workshops aimed at building skills in High Performance Computing (HPC). Our courses
Mini Project - Phase 3 Connexus Mobile App (Android)
Mini Project - Phase 3 Connexus Mobile App (Android) Click here to get Connexus apk. It is inside the shared folder Here is my github repository: https://github.com/azizclass/nimadini The 3 rd phase is
System Administration Training Guide. S100 Installation and Site Management
System Administration Training Guide S100 Installation and Site Management Table of contents System Requirements for Acumatica ERP 4.2... 5 Learning Objects:... 5 Web Browser... 5 Server Software... 5
BarTender Integration Methods. Integrating BarTender s Printing and Design Functionality with Your Custom Application WHITE PAPER
BarTender Integration Methods Integrating BarTender s Printing and Design Functionality with Your Custom Application WHITE PAPER Contents Introduction 3 Integrating with External Data 4 Importing Data
Zend Server 4.0 Beta 2 Release Announcement What s new in Zend Server 4.0 Beta 2 Updates and Improvements Resolved Issues Installation Issues
Zend Server 4.0 Beta 2 Release Announcement Thank you for your participation in the Zend Server 4.0 beta program. Your involvement will help us ensure we best address your needs and deliver even higher
Drupal Performance Tuning
Drupal Performance Tuning By Jeremy Zerr Website: http://www.jeremyzerr.com @jrzerr http://www.linkedin.com/in/jrzerr Overview Basics of Web App Systems Architecture General Web
1 (11) Paperiton DMS Document Management System System Requirements Release: 2012/04 2012-04-16
1 (11) Paperiton DMS Document Management System System Requirements Release: 2012/04 2012-04-16 2 (11) 1. This document describes the technical system requirements for Paperiton DMS Document Management
Kentico CMS 6.0 Performance Test Report. Kentico CMS 6.0. Performance Test Report February 2012 ANOTHER SUBTITLE
Kentico CMS 6. Performance Test Report Kentico CMS 6. Performance Test Report February 212 ANOTHER SUBTITLE 1 Kentico CMS 6. Performance Test Report Table of Contents Disclaimer... 3 Executive Summary...
Why Not Oracle Standard Edition? A Dbvisit White Paper By Anton Els
Why Not Oracle Standard Edition? A Dbvisit White Paper By Anton Els Copyright 2011-2013 Dbvisit Software Limited. All Rights Reserved Nov 2013 Executive Summary... 3 Target Audience... 3 Introduction...
Migration Scenario: Migrating Backend Processing Pipeline to the AWS Cloud
Migration Scenario: Migrating Backend Processing Pipeline to the AWS Cloud Use case Figure 1: Company C Architecture (Before Migration) Company C is an automobile insurance claim processing company with
Building Scalable Applications Using Microsoft Technologies
Building Scalable Applications Using Microsoft Technologies Padma Krishnan Senior Manager Introduction CIOs lay great emphasis on application scalability and performance and rightly so. As business grows,
Automating Big Data Benchmarking for Different Architectures with ALOJA
www.bsc.es Jan 2016 Automating Big Data Benchmarking for Different Architectures with ALOJA Nicolas Poggi, Postdoc Researcher Agenda 1. Intro on Hadoop performance 1. Current scenario and problematic 2.
