Thursday, July 28, 2011

Optimizing Linux Performance

2.2. Linux Performance Tools: CPU

Here begins our discussion of performance tools that enable you to extract information previously described.

2.2.1. vmstat (Virtual Memory Statistics)

vmstat stands for virtual memory statistics, which indicates that it will give you information about the virtual memory system performance of your system. Fortunately, it actually does much more than that. vmstat is a great command to get a rough idea of how your system performs as a whole. It tells you
  • How many processes are running
  • How the CPU is being used
  • How many interrupts the CPU receives
  • How many context switches the scheduler performs
It is an excellent tool to use to get a rough idea of how the system performs.

Wednesday, July 27, 2011

RHEL – Create local repository

For one of my clients we were deploying 12 Red Hat Enterprise Linux servers. The client has quite strict security rules, therefore patch management via RH Network was not an option. RHN proxy server or Satellite server was out of project budget. At the end I created a central RHEL local repository. We dedicated another RHEL server just for this purpose (thanks to virtualization friendly Red Hat licensing).
  • Install minimal RHEL installation
  • Dedicate one harddrive for the repository packages
  • Disable SElinux for httpd (in /etc/selinux/targeted/booleans)
    
httpd_disable_trans=1
  • Allow access to these two sites on the outgoing firewall:
    209.132.183.44 xmlrpc.rhn.redhat.com
    92.122.186.196 content-xmlrpc.rhn.redhat.com

  • Register the installation by running rhn_register and typing registration info
  • Mount the repository harddrive into /opt/repository
  • Download the repository for the first time:
    yum install yum-utils
    yum install createrepo
    reposync -p /opt/repository/ –repoid=rhel-x86_64-server-5 –l
    createrepo /opt/repository

  • Create script to update the repository: /usr/local/bin/update-repository.sh
    echo "Update script started at $(date)" >> /var/log/update-repository.log
    reposync -p /opt/repository/ –repoid=rhel-x86_64-server-5 -l -n
    createrepo /opt/repository/
    echo "Update script ended at $(date)" >> /var/log/update-repository.log

  • Make it executable: chmod +x /usr/local/bin/update-repository.sh
  • Add it to crontab to run every day at 00:15: crontab -e
    15 0 * * * /usr/local/bin/update-repository.sh > /var/log/update-repository-result.log
  • Share the repository via http:
    ln -s /opt/repository/ /var/www/html/create:
    /etc/httpd/conf.d/repository.conf
    <Directory “/var/www/html/repository”>
        Options Indexes +FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

  • Set up /etc/yum.repos.d/repository.repo on all RHEL clients:
    [repository]
    name=Red Hat Enterprise Linux $releasever – $basearch
    baseurl=http://<URL of the local repository server>/repository
    enabled=1
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat

  • Disable RHN on all clients but the local repository: /etc/yum/pluginconf.d/rhnplugin.conf
    [main]
    enabled = 0
    gpgcheck = 1[rhel-i386-server-5]
    enabled = 0

Tuesday, July 26, 2011

Installation of Oracle 11g Release 2 (11.2.0.1.0) on RedHat EL 5, (Oracle) Enteprise Linux 5 and Centos 5

This paper (HOWTO) describes step-by-step installation of Oracle 11g R2 database software on RedHat Enterprise Linux 5 or Enteprise Linux 5 shipped by Oracle Corp. This article is useful for Centos Linux release 5. Note that Centos distribution is not certified by Oracle Corporation. 
This article does not cover database creation process, and ASM Instance creation process. 

This paper covers following steps:


Monday, July 25, 2011

Linux bond or team multiple network interfaces (NIC) into single interface

Finally today I had implemented NIC bounding (bind both NIC so that it works as a single device). We have two Dell servers that need setup with Intel Dual Gig NIC. My idea is to improve performance by pumping out more data from both NIC without using any other method.
This box act as heavy duty ftp server. Each night I need to transfer over 200GB data from this box to another box. Therefore, the network would be setup is two servers on a switch using dual network cards. I am using Red Hat enterprise Linux version 4.0.
Linux allows binding multiple network interfaces into a single channel/NIC using special kernel module called bonding. According to official bonding documentation, "The Linux bonding driver provides a method for aggregating multiple network interfaces into a single logical "bonded" interface. The behavior of the bonded interfaces depends upon the mode; generally speaking, modes provide either hot standby or load balancing services. Additionally, link integrity monitoring may be performed."