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

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 parametersPart 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 resultsPart 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 resultsFor 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


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

Applying memcached to increase site performance

A new article on using memcached, the memory caching tool, to improve website and application performance is now available on IBM developerWorks:

The open source memcached tool is a cache for storing frequently used information to save you from loading (and processing) information from slower sources, such as disks or a database. It can be deployed in a dedicated situation or as a method of using up spare memory in an existing environment. Despite the simplicity of memcached, it is sometimes used incorrectly, or it is used as a solution in the wrong type of environment. Learn when it is best to take advantage of using memcached.

Read Applying memcached to increase site performance

Adding DTrace probes to your applications

A new article on adding DTrace probes to your application has been published on IBM developerWorks:

DTrace provides a rich environment of probes that can be used to monitor the execution of your system, from the kernel up to your application. You can perform a significant amount of examination without changing your application, but to get detailed statistics, you need to add probes to your application. In this article we will examine how to design the probes, where to add them into your application, the best locations for the probes, and how to effectively build and use the probes that you have added.

Read Adding DTrace probes to your applications