Tag Archives: IBM DeveloperWorks

Introduction to programming in Erlang, Part 2: Use advanced features and functionality

Part two of my introduction to programming Erlang is available on IBM developerWorks:

Erlang is a multi-purpose programming language that is primarily used for developing concurrent and distributed systems. Part 1 of this series introduced Erlang and how its functional programming style compares with other programming paradigms such as imperative, procedural, and object-oriented programming. In Part 2 you will use some of the advanced features and functionality, starting with basic functions and moving on to concurrent programming, processes, and messaging. These work together to support distributed programming, a powerful feature of Erlang.

Read Introduction to programming in Erlang, Part 2: Use advanced features and functionality

Introduction to programming in Erlang, Part 1: The basics

I have a new article on programming in Erlang available on IBM developerWorks:

Erlang is a multi-purpose programming language used primarily for developing concurrent and distributed systems. It began as a proprietary programming language used by Ericsson for telephony and communications applications. Released as open source in 1998, Erlang has become more popular in recent years thanks to its use in high profile projects, such as the Facebook chat system, and in innovative open source projects, such as the CouchDB document-oriented database management system. In this article, you will learn about Erlang, and how its functional programming style compares with other programming paradigms such as imperative, procedural and object-oriented programming. You will learn how to create your first program, a Fibonacci recursive function. Next, you will go through the basics of the Erlang language, which can be difficult at first for those used to C, C++, Javaâ„¢, and Python.

Read Introduction to programming in Erlang, Part 1: The basics

Building CouchApps

A new article on building CouchApps (using CouchDB) is available on IBM developerWorks:

Apache CouchDB is an open source document-oriented database management system that allows you to create full database-driven applications using nothing but HTML, CSS and JavaScript. In this tutorial, you will learn how to create your own CouchApp that will perform database operations using Ajax powered by the jQuery framework. The application you will build is a contact manager that allows you to view, create, edit, and delete your contacts.

Read Building CouchApps

GNU Virtual Private Ethernet

A new article on using the GNU Virtual Private Ethernet (GVPE) service is available on IBM developerWorks:

Providing a secure communication conduit implies many different issues and problems, such as how you provide an effective communication channel that is capable of handling multiple streams of information. Using the GNU Virtual Private Ethernet (GVPE) provides an alternative to the normal single or multiple channel solutions by effectively emulating the entire network stack and allowing you to build TCP, UDP and other network technologies on top of the virtual environment. This article examines ways of using GVPE with your applications to provide communication, and of using GVPE with your Web sites to provide secure connectivity over private and public networks. In particular you’ll learn about using GVPE with distributed infrastructure projects, such as Amazon EC2, clouds, or public/private web performance deployments.

Read Using the GNU Virtual Private Ethernet

GNU Virtual Private Ethernet

A new article on using the GNU Virtual Private Ethernet (GVPE) service is available on IBM developerWorks:

Providing a secure communication conduit implies many different issues and problems, such as how you provide an effective communication channel that is capable of handling multiple streams of information. Using the GNU Virtual Private Ethernet (GVPE) provides an alternative to the normal single or multiple channel solutions by effectively emulating the entire network stack and allowing you to build TCP, UDP and other network technologies on top of the virtual environment. This article examines ways of using GVPE with your applications to provide communication, and of using GVPE with your Web sites to provide secure connectivity over private and public networks. In particular you’ll learn about using GVPE with distributed infrastructure projects, such as Amazon EC2, clouds, or public/private web performance deployments.

Read Using the GNU Virtual Private Ethernet

Optimizing AIX 7 Network Performance

A new series on optimizing the network performance within AIX 7 is now available on IBM developerWorks. The series is in three parts:

Part 1, Network overview – Monitoring the hardware

With AIX 7 and the new POWER7 architecture, you have to think about the performance of your system, and also the effects of your network performance on both LPAR and WPAR environments. In the first installment, you’ll review some best practices for network configuration and utilize those practices for efficient monitoring of your hardware by taking advantage of network tools such as netstat, netpmon, entstat, and nmon. You’ll also examine certain tools used to look at your interfaces to see how to configure them.

Optimizing AIX 7 network performance: Part 1, Network overview – Monitoring the hardware

Part 2, NFS monitoring and tuning

With AIX 7 being used more frequently in network deployment environments, and with common use of workload partitions to help manage your resources, you must be aware of all the different applications and environments in which you need to optimize your network deployment. Part 2 focuses on tuning NFS. You’ll learn about monitoring utilities such as nfsstat and nmon, and you’ll also tune with nfso. The series also offers best practices for network I/O performance tuning.

Optimizing AIX 7 network performance: Part 2, NFS monitoring and tuning

Part 3, Monitoring your network packets and tuning the network

With AIX 7 being used more frequently in network deployment environments, and with common use of workload partitions to help manage your resources, you must be aware of all the different applications and environments in which you need to optimize your network deployment. Part 1 provided a networking overview and also discussed the tools you need to monitor your hardware, including netstat, netpmon, entstat, and nmon. Part 2 discussed monitoring and tuning NFS subsystems. This final segment, Part 3, shows you how to monitor network packets. The series also offers best practices for network I/O performance tuning.

Optimizing AIX 7 network performance: Part 3, Monitoring your network packets and tuning the network

Optimizing AIX 7 memory performance

As part of the continuing series on AIX 7, a new series on optimizing memory performance is now available.

Part 1:

AIX® 7 takes advantage of the POWER7 CPU to improve memory usage within LPARs. While memory tuning might be more difficult to implement than processor or disk tuning, it is no less important. You can do more to tune memory on an AIX 7 server than on any other subsystem. Changing some memory parameters on your system can increase performance dramatically, particularly when these parameters are not optimized for the environment which you are running. This three-part series on memory tuning dives right into tuning parameters focusing on the many challenges and the various best practices of optimizing memory performance, and it also discusses some improvements in AIX 6 and AIX 7. Part 1 provides an overview of memory on AIX 7, including a discussion of virtual memory and the Virtual Memory Manager (VMM).

Optimizing AIX 7 memory performance: Part 1, Memory overview and tuning memory parameters

Part 2:

Use ps, sar, svmon, and vmstat to monitor memory usage and analyze the results. This three-part series focuses on the various aspects of memory management and tuning on IBM System p™ servers running AIX® 7, including taking advantage of the POWER7 CPU to improve memory usage within LPARs. Part 2 of the series focuses on the detail of actual memory subsystem monitoring and discusses how to analyze the results. Throughout the series, we also cover some of the best practices of memory performance tuning and monitoring.

Optimizing AIX 7 memory performance: Part 2, Monitoring memory usage (ps, sar, svmon, vmstat) and analyzing the results

Part 3:

Get an introduction to swap (paging) space, learn how to configure and administer it, capture statistics, and tune your Virtual Memory Manager (VMM) settings to provide for optimum swap (paging) space configuration and performance. With AIX 7, and the improvements for the POWER7 architecture, extracting the best performance out of your memory environment is critical. With the larger memory capacity and CPU cores, a better understanding of the VMM and your configuration will help you change your parameters to fit your requirements.

Optimizing AIX 7 memory performance: Part 3, Tuning swap space settings

Optimizing AIX 7 performance: Part 1, 2 and 3

I’ve just been updating a series of articles on AIX 7 and the new functionality.

The first three cover the basics performance details.

For Part 1:

Learn more about configuring and monitoring AIX 7 based on the investigations of AIX 7 beta compared to the original articles based on AIX 5L. The article covers the support for direct I/O, concurrent I/O, asynchronous I/O, and best practices for each method of I/O implementation. This three-part series on the AIX® disk and I/O subsystem focuses on the challenges of optimizing disk I/O performance. While disk tuning is arguably less exciting than CPU or memory tuning, it is a crucial component in optimizing server performance. In fact, partly because disk I/O is your weakest subsystem link, you can do more to improve disk I/O performance than on any other subsystem.

Optimizing AIX 7 performance: Part 1, Disk I/O overview and long-term monitoring tools (sar, nmon, and topas)

For Part 2:

Discover how to use appropriate disk placement prior to creating your logical volumes to improve disk performance. These investigations are based on AIX 7 beta and updating information from the original AIX 5L version of this article. Part 2 of this series focuses on monitoring your logical volumes and the commands and utilities (iostat, lvmstat, lslv, lspv, and lsvg) used to analyze results.

Optimizing AIX 7 performance: Part 2, Monitoring logical volumes and analyzing the results

For Part 3:

Part 3 of the AIX 7 performance series covers how to improve overall file system performance, how to tune your systems with the ioo command, and how to use the filemon and fileplace utilities. You will also learn about JFS and JFS2 that is available in AIX7.

Optimizing AIX 7 performance: Part 3, Tune with ioo, filemon, fileplace, JFS and JFS2

Xapian/Omega

A new article on indexing documents using the Xapian/Omega toolkit is now available.

From the intro:

Storing and providing access to documentation and information is an ever-growing problem for many companies. There are many solutions, including wikis and structured documentation stores, but full-text indexes are often the only way to gain the information you need from a wide array of documents. Xapian is an open source tool that reads and indexes documents, including those in HTML, PDF, OpenOffice, Microsoft® Office®, and many others, and with programmable interfaces to add and extract information, including Java™ technology, allowing you to support document indexing within your IBM WebSphere®-deployed environment. Examine how to install and deploy a typical Xapian installation indexing a variety of information, then see some examples for extracting the information using the different language bindings. The process will focus on how this could be used within a typical company intranet environment. The article will also provide a quick overview of Omega, a custom tool designed to work with the Xapian infrastructure.

Read: Read and index documents with Xapian and Omega

Take advantage of using libevent and libev

I have a new article available on making use of the libevent and libev libraries. libevent has become a very popular choice for people that want to build very efficient I/O systems, particularly for network solutions, and therefore it fits nicely into applications like memcached and lighttpd, both of which make use of the event driven architecture.

From the intro:

Building a modern server application requires a method of accepting hundreds, thousands, and even tens of thousands of events simultaneously, whether they are internal requests or network connections effectively handling their operation. There are many solutions available, but the libevent library and libev libraries have both revolutionized the performance and event handling capability. In this article, we will examine the basic structure and methods available for using and deploying these solutions within your UNIX® applications. Both libev and libevent can be used in your high performance applications, including those deployed within the IBM Cloud or Amazon EC2 environment, where you need to support large numbers of simultaneous clients or operations.

Read the article: Boost network performance with libevent and libev