Wednesday 15 January 2014

Howto Install Dictionary in Ubuntu/Linux Mint and setup for offline use

Howto Install Dictionary in Ubuntu 13.04/12.10/12.04/Any Ubuntu Version/Linux Mint 15/14/13and Setup to Offline Dictionary

GNOME Dictionary is a DICT client written in C by Emmanuele Bassi and others. It is part of the free software GNOME desktop suite, inside the gnome-utils meta-package. This allows users of GNOME to look up words on dictionary sources. Gnome-dictionary was at first an independent DICT protocol client called gdict.

offline dictionary

To install Dictionary in Ubuntu/Linux Mint open Terminal (Press Ctrl+Alt+T) and copy the following commands in the Terminal:




After installation Follow the method to setup Offline Dictionary
Open Gnome-Dictionary and go to Edit Menu -> Preferences

Then click on Add button to setup.
In Description write anything you want.
In Hostname Add this address: 127.0.0.1
and close it.
gnome dictionary

Now you will in previous preferences windows, Select Offline Dictionary(whatever description you wrote) source here.
offline gnome dictionary

And you are done.
ubuntu offline dictionary

That's it

Cheers!!!!!!!!!!!!!!!!

Tuesday 14 January 2014

Downloading an Entire Web Site with wget

If you ever need to download an entire Web site, perhaps for off-line viewing, wget can do the
job—for example:
$ wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains website.org \
     --no-parent \
         www.website.org/tutorials/html/
This command downloads the Web site www.website.org/tutorials/html/.
The options are:
  • --recursive: download the entire Web site.
  • --domains website.org: don't follow links outside website.org.
  • --no-parent: don't follow links outside the directory tutorials/html/.
  • --page-requisites: get all the elements that compose the page (images, CSS and so on).
  • --html-extension: save files with the .html extension.
  • --convert-links: convert links so that they work locally, off-line.
  • --restrict-file-names=windows: modify filenames so that they will work in Windows as well.
  • --no-clobber: don't overwrite any existing files (used in case the download is interrupted and
    resumed).

 Note: by default the location of saved website is the absolute path where u have fired your command.Name of the website folder is name of website itself.

Tuesday 8 October 2013

Difference between the i386 download and the amd64?

i386 refers to the 32-bit edition of windows and amd64 (or x86_64) refers to the 64-bit edition.
Wikipedia's i386 entry:
The Intel 80386, also known as the i386, or just 386, was a 32-bit microprocessor introduced by Intel in 1985... This is termed x86, IA-32, or the i386-architecture, depending on context.
Wikipedia's x86_64 entry:
x86-64 is an extension of the x86 instruction set. It supports vastly larger virtual and physical address spaces than are possible on x86, thereby allowing programmers to conveniently work with much larger data sets... After launching the architecture under the "x86-64" name, AMD renamed it AMD64... x86-64 is still used by many in the industry as a vendor-neutral term, while others, notably Sun Microsystems (now Oracle Corporation) and Microsoft, use x64.
Even if you have an intel CPU AMD64 is what you'd use to install 64-bit on your computer (it uses the same instruction sets).
I highly recommend using it. For the most part you will not notice a difference but for large workloads (such as video editing, gaming, etc), the computer will perform faster (the computer has the ability to calculate 2+2+2=6 instead of having to do 2+2=4+2=6 in an example). In the windows world, a 32-bit OS will not let you use more than 3.5 Gigs of RAM on your computer (even if you have 8!). You'd need to use a 64-bit OS in order to fully use lots of RAM. For Linux, however, there's no such limit (thanks, Uri).
Regardless, the world has shifted from 32 bit and it's only there to support older machines that are incapable of running 64 bit. The upcoming Windows 8 is said to support 128 bit, to give you an idea of 32's age!

Monday 30 September 2013

How to Use Xmonad, a Tiling Window Manager for Linux


image
Tiling window managers make your life easier by automatically arranging windows on the screen for you. Xmonad is a minimal one that’s easy to get started with — all you have to do is learn a few keyboard shortcuts.
Xmonad is also highly configurable. In spite of this, you don’t have to touch the configuration file if you don’t want to – it works out of the box.

Installation

Xmonad doesn’t include an application launcher by default. You’ll probably also want dmenu, a basic application launcher that works with xmonad. To install both on Ubuntu, run the following command:
sudo apt-get install xmonad suckless-tools

Omit suckless-tools from the command if you’d rather not install dmenu. This package contains dmenu – if you’re using an older version of Ubuntu, you may have to install dwm-tools instead.
If you’re using another Linux distribution, you should find xmonad and dmenu in its repositories, too.
After installing xmonad, log out of your Ubuntu system, click the icon next to your name on the login screen, and select XMonad before logging back in.

Getting Started

This is what you’ll see when you start xmonad:

Don’t worry, it didn’t fail to load — it just starts with an empty screen. Press Alt+Shift+Enter to launch a terminal.

To launch additional terminals, press the Alt+Shift+Enter shortcut again. Xmonad automatically resizes and arranges the windows on screen, tiling them. This is what a “tiling window manager” does.

To move the focus using the keyboard, use the Alt+J or Alt+K keyboard shortcuts. The focus also follows the mouse, so all you have to do is hover your cursor over a window to focus it.
Use the Alt+Space keyboard shortcut to switch between the different tiling modes. One of the modes shows only one window on the screen at a time.

If you installed dmenu, you can press Alt+P to pull it up. Type the first few letters of an application’s name, and then press Enter to launch it.

Graphical applications like Firefox appear tiled, just like the terminal windows.

Here are some other important keyboard shortcuts to get you started:
  • Alt+Shift+C – Close the focused window.
  • Alt+. & Alt+, – Control the number of windows displayed in the master pane on the left.
  • Alt+Enter – Move the focused window to the master pane on the left.
  • Alt+Shift+J & Alt+Shift+K – Swap the focused window with an adjacent window.
  • Alt+H & Alt+L – Resize the border between the master and secondary panes.
  • Alt+Shift+Q – Log out.
Xmonad supports workspaces, too. For example, to switch to workspace two, use the Alt+2 keyboard shortcut. To move the currently focused window to workspace three, use the Alt+Shift+3 keyboard shortcut. Each workspace can have its own tiling mode settings.

Configuring Xmonad

Xmonad is extremely configurable, if you’re willing to get your hands dirty. Xmonad itself is written in Haskell, and its configuration file format uses Haskell, too. Xmonad’s configuration file is located at ~/.xmonad/xmonad.hs (that is, /home/YOU/.xmonad/xmonad.hs). This file doesn’t exist by default – you’ll have to create it yourself.
To get started configuring xmonad, you may want to start with a template file. For more advanced configuration, check out this list of configuration tips on the official wiki.
After modifying the configuration, use the Alt+Q keyboard shortcut to reload your configuration. You can also change the default modifier key in the configuration file – if you do, use your custom modifer key in place of every Alt in this post.
What do you think of xmonad? Do you prefer a different tiling window manager? Leave a comment and let us know.

Monday 16 September 2013

How do I set up a Cron job?

Put a shell script in one of these folders: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly or /etc/cron.weekly.
If these are not enough for you you can add more specific tasks eg. twice a month or every 5 minutes or... go to the therminal and type:
crontab -e
this will open your personal crontab (cron configuration file), the first line in that file explains it all (don't you think)! In every line you can define one command to run, and the format is quite simple when you get the hang of it. So the structure is:
minute hour day-of-month mounth day-of-week command
For all the numbers you can use lists eg, 5,34,55 in the first field will mean run et 5 past 34 past and 55 past what ever hour is defined.
You can also use intervals, they are defined like this: */20 this example mens every 20th and is in the minutes this will be equivalent to 0,20,40
So to run a command every monday at 5:30 in efternoon will look like this:
30 17 * * 1 /path/to/command
or every 15 minutes
*/15 * * * * /path/to/command
Note that the day-of-week goes from 0-6 where 0 = sunday.
You can read more here.

Wednesday 4 September 2013

20 Funny Commands of Linux or Linux is Fun in Terminal

Linux is fun! Huhhh. OK so you don’t believe me. Mind me at the end of this article you will have to believe that Linux is actually a fun box.
Linux Funny Commands
20 Linux Funny Commands

1. Command: sl (Steam Locomotive)

You might be aware of command ‘ls‘ the list command and use it frequently to view the contents of a folder but because of miss-typing sometimes you would result in ‘sl‘, how about getting a little fun in terminal and not “command not found“.

Install sl

root@tecmint:~# apt-get install sl   (In Debian like OS)
root@tecmint:~# yum -y install sl   (In Red Hat like OS)
Output
root@tecmint:~# sl
sl funny command
sl command
This command works even when you type ‘LS‘ and not ‘ls‘.

2. Command: telnet

No! No!! it is not as much complex as it seems. You would be familiar with telnet. Telnet is a text-oriented bidirectional network protocol over network. Here is nothing to be installed. What you should have is a Linux box and a working Internet.
root@tecmint:~# telnet towel.blinkenlights.nl
telnet command
telnet command

3. Command: fortune

what about getting your random fortune, sometimes funny in terminal.

Install fortune

root@tecmint:~# apt-get install fortune  (for aptitude based system)
root@tecmint:~# yum install fortune   (for yum based system)
root@tecmint:~# fortune

You're not my type.  For that matter, you're not even my species!!!
Future looks spotty.  You will spill soup in late evening.
You worry too much about your job.  Stop it.  You are not paid enough to worry.
Your love life will be... interesting.

4. Command: rev (Reverse)

It reverse every string given to it, is not it funny.
root@tecmint:~# rev

123abc 
cba321 

xuniL eb ot nrob
born to be Linux

5. Command: factor

Time for some Mathematics, this command output all the possible factors of a given number.
root@tecmint:~# factor

5 
5: 5 

12 
12: 2 2 3 

1001 
1001: 7 11 13 

5442134 
5442134: 2 2721067

6. Command: script

OK fine this is not a command and a script but it is nice.
root@tecmint:~# for i in {1..12}; do for j in $(seq 1 $i); do echo -ne $i×$j=$((i*j))\\t;done; echo;done 

1×1=1 
2×1=2 2×2=4 
3×1=3 3×2=6 3×3=9 
4×1=4 4×2=8 4×3=12 4×4=16 
5×1=5 5×2=10 5×3=15 5×4=20 5×5=25 
6×1=6 6×2=12 6×3=18 6×4=24 6×5=30 6×6=36 
7×1=7 7×2=14 7×3=21 7×4=28 7×5=35 7×6=42 7×7=49 
8×1=8 8×2=16 8×3=24 8×4=32 8×5=40 8×6=48 8×7=56 8×8=64 
9×1=9 9×2=18 9×3=27 9×4=36 9×5=45 9×6=54 9×7=63 9×8=72 9×9=81 
10×1=10 10×2=20 10×3=30 10×4=40 10×5=50 10×6=60 10×7=70 10×8=80 10×9=90 10×10=100 
11×1=11 11×2=22 11×3=33 11×4=44 11×5=55 11×6=66 11×7=77 11×8=88 11×9=99 11×10=110 11×11=121 
12×1=12 12×2=24 12×3=36 12×4=48 12×5=60 12×6=72 12×7=84 12×8=96 12×9=108 12×10=120 12×11=132 12×12=144

7. Command: Cowsay

An ASCII cow in terminal that will say what ever you want.

Install Cowsay

root@tecmint:~# apt-get install cowsay   (for Debian based OS)
root@tecmint:~# yum install cowsay  (for Red Hat based OS)
Output
root@tecmint:~# cowsay I Love nix 

 ____________
< I Love nix >
 ------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
How about pipelineing ‘fortune command‘, described above with cowsay?
root@tecmint:~# fortune | cowsay 

 _________________________________________
/ Q: How many Oregonians does it take to  \
| screw in a light bulb? A: Three. One to |
| screw in the light bulb and two to fend |
| off all those                           |
|                                         |
| Californians trying to share the        |
\ experience.                             /
 -----------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
Note: ‘|‘ is called pipeline instruction and it is used where the output of one command needs to be the input of another command. In the above example the output of ‘fortune‘ command acts as an input of ‘cowsay‘ command. This pipeline instruction is frequently used in scripting and programming.
xcowsay is a graphical program which response similar to cowsay but in a graphical manner, hence it is X of cowsay.
apt-get insatll xcowsay
yum install xcowsay
Output
root@tecmint:~# xcowsay I Love nix
install xcowsay
xcowsay command
cowthink is another command just run “cowthink Linux is sooo funny” and see the difference in output of cowsay and cowthink.
apt-get insatll cowthink
yum install cowthink
Output
root@tecmint:~# cowthink ....Linux is sooo funny
 _________________________
( ....Linux is sooo funny )
 -------------------------
        o   ^__^
         o  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

8. Command: yes

It is funny but useful as well, specially in scripts and for System Administrators where an automated predefined response can be passed to terminal or generated.
root@tecmint:~# yes I Love Linux

I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
Note: (Till you interrupt i.e ctrl+c).

9. Command: toilet

what? Are u kidding, huhh no! Definitely not, but for sure this command name itself is too funny, and I don’t know from where this command gets it’s name.

Install toilet

root@tecmint:~# apt-get install toilet 
root@tecmint:~# yum install toilet
Output
root@tecmint:~# toilet tecmint 

mmmmmmm                        "             m                               
   #     mmm    mmm   mmmmm  mmm    m mm   mm#mm          mmm    mmm   mmmmm 
   #    #"  #  #"  "  # # #    #    #"  #    #           #"  "  #" "#  # # # 
   #    #""""  #      # # #    #    #   #    #           #      #   #  # # # 
   #    "#mm"  "#mm"  # # #  mm#mm  #   #    "mm    #    "#mm"  "#m#"  # # #
It even offers some kind of color and fonts style.
root@tecmint:~# toilet -f mono12 -F metal Tecmint.com
install toilet command
toilet command
Note: Figlet is another command that more or less provide such kind of effect in terminal.

10. Command: cmatrix

You might have seen Hollywood movie ‘matrix‘ and would be fascinated with power, Neo was provided with, to see anything and everything in matrix or you might think of an animation that looks alike Hacker‘s desktop.

Install cmatrix

root@tecmint:~# apt-get install cmatrix
root@tecmint:~# yum install cmatrix
Output
root@tecmint:~# cmatrix
cmatrix command
cmatrix command

11. Command: oneko

OK so you believe that mouse pointer of Linux is the same silly black/white pointer where no animation lies then I fear you could be wrong. “oneko“ is a package that will attach a “Jerry“ with you mouse pointer and moves along with you pointer.

Install cmatrix

root@tecmint:~# apt-get install oneko
root@tecmint:~# yum install oneko
Output
root@tecmint:~# oneko
install oneko
oneko command
Note: Once you close the terminal from which oneko was run, jerry will disappear, nor will start at start-up. You can add the application to start up and continue enjoying.

12. Fork Bomb

This is a very nasty piece of code. Run this at your own risk. This actually is a fork bomb which exponentially multiplies itself till all the system resource is utilized and the system hangs. (To check the power of above code you should try it once, but all at your own risk, close and save all other programs and file before running fork bomb).
root@tecmint:~# :( ){ :| :& }:

13. Command: while

The below “while” command is a script which provides you with colored date and file till you interrupt (ctrl + c). Just copy and paste the below code in terminal.
root@tecmint:~# while true; do echo "$(date '+%D %T' | toilet -f term -F border --gay)"; sleep 1; done
Linux while command
Linux while command
Note: The above script when modified with following command, will gives similar output but with a little difference, check it in your terminal.
root@tecmint:~# while true; do clear; echo "$(date '+%D %T' | toilet -f term -F border --gay)"; sleep 1; done

14. Command: espeak

Just Turn the Knob of your multimedia speaker to full before pasting this command in your terminal and let us know how you felt listening the god’s voice.

Install espeak

root@tecmint:~# apt-get install espeak
root@tecmint:~# yum install espeak
Output
root@tecmint:~# espeak "Tecmint is a very good website dedicated to Foss Community"

15. Command: aafire

How about fire in your terminal. Just type “aafire” in the terminal, without quotes and see the magic. Press any key to interrupt the program.

Install aafire

root@tecmint:~# apt-get install libaa-bin
Output
root@tecmint:~# aafire
install aafire
aafire command

16. Command: bb

First install “apt-get insatll bb” and then, type “bb” in terminal and see what happens.
root@tecmint:~# bb
bb command
bb command

17. Command: url

Won’t it be an awesome feeling for you if you can update you twitter status from command line in front of your friend and they seems impressed. OK just replace username, password and your status message with your’s username, password and “your status message“.
root@tecmint:~# url -u YourUsername:YourPassword -d status="Your status message" http://twitter.com/statuses/update.xml

18. ASCIIquarium

How it will be to get an aquarium in terminal.
root@tecmint:~# apt-get install libcurses-perl
root@tecmint:~# cd /tmp 
root@tecmint:~# wget http://search.cpan.org/CPAN/authors/id/K/KB/KBAUCOM/Term-Animation-2.4.tar.gz
root@tecmint:~# tar -zxvf Term-Animation-2.4.tar.gz
root@tecmint:~# cd Term-Animation-2.4/
root@tecmint:~# perl Makefile.PL &&  make &&   make test
root@tecmint:~# make install
Install ASCIIquarium
Now Download and Install ASCIIquarium.
root@tecmint:~# cd /tmp
root@tecmint:~# wget http://www.robobunny.com/projects/asciiquarium/asciiquarium.tar.gz
root@tecmint:~# tar -zxvf asciiquarium.tar.gz
root@tecmint:~# cd asciiquarium_1.1/
root@tecmint:~# cp asciiquarium /usr/local/bin
root@tecmint:~# chmod 0755 /usr/local/bin/asciiquarium
And finally run “asciiquarium” or “/usr/local/bin/asciiquarium“ in terminal without quotes and be a part of magic that will be taking place in front of your eyes.
root@tecmint:~# asciiquarium
install aquarium
aquarium command

19. Command: funny manpages

First install “apt-get install funny-manpages” and then run man pages for the commands below. Some of them may be 18+, run at your own risk, they all are too funny.
baby
celibacy
condom
date
echo
flame
flog
gong
grope, egrope, fgrope 
party 
rescrog 
rm
rtfm
tm
uubp
woman (undocumented)
xkill 
xlart 
sex 
strfry
root@tecmint:~# man baby

20. Linux Tweaks

It is time for you to have some one liner tweaks.
root@tecmint:~# world

bash: world: not found
root@tecmint:~# touch girls\ boo** 

touch: cannot touch `girls boo**': Permission denied
root@tecmint:~# nice man woman

No manual entry for woman
root@tecmint:~# ^How did the sex change operation go?^ 

bash: :s^How did the sex change operation go?^ : substitution failed
root@tecmint:~# %blow 

bash: fg: %blow: no such job
root@tecmint:~# make love 

make: *** No rule to make target `love'.  Stop.
$ [ whereis my brain?                    
sh: 2: [: missing ]
% man: why did you get a divorce? 
man:: Too many arguments.
% !:say, what is saccharine? 
Bad substitute.
server@localhost:/srv$ \(- 
bash: (-: command not found
Linux is sexy: who | grep -i blonde | date; cd ~; unzip; touch; strip; finger; mount; gasp; yes; uptime; umount; sleep (If you know what i mean)
There are certain other but these don’t work on all the system and hence not included in this article. Some of them are man dog , filter, banner, etc.
Have fun, you can say me thanks later :)
yup your comment is highly appreciated which encourages us write more. Tell us which command you liked the most. Stay tuned i will be back soon with another article worth reading.


original post :
http://www.tecmint.com/20-funny-commands-of-linux-or-linux-is-fun-in-terminal/

Monday 26 August 2013

3 reason why your system might be slow

Computer users expect their systems to work well at all times, but unfortunately this isn’t always the case. If your system becomes slow, there certainly is something you can do about it. This article will help you understand what’s happening on the system, whether it’s the computer in front of you or a system you’re accessing remotely. Naturally, I presume you’re running Linux, and the tools described here are Linux tools. If you’re on some other weird system ( ;) ), your mileage may vary.
Slow Computer?When we say the system is slow we mean that it isn’t responding to our input in a reasonable time, or taking too long to complete a task. This can happen when there is *another* program using too many system resources, starving *your* program of resources, causing it to run slowly
There are three common ways in which this can happen, and all three of these scenarios can be equally crippling and put your system into a state where it seems to be frozen. None of these situations are harmful to your system (ie. they make it slow until the problem is resolved, but they don’t damage anything).
  1. A program is monopolizing the cpu.
    A program is using all of the cpu cycles, blocking access to the cpu to other programs. This may be intentional (programs that do heavy processing) or accidental (programs get stuck repeating something over and over).
  2. You’re nearly out of physical memory.
    You are either running too many programs, or programs that use too much memory. Your physical memory is almost entirely exhausted, and the running programs are using the harddisk as fallback memory, which is very slow.
  3. A program is doing heavy I/O.
    You may be copying a large file, for instance. The program that is doing the copying is requesting lots of data from the harddrive, but while it’s doing this the cpu is actually waiting for this data to be read from the harddrive, blocking access to other programs.
The impact of both cpu heavy and I/O heavy programs can be mitigated by tuning the kernel to be more responsive. If you are running a kernel supplied by one of the major distributions (Ubuntu, Fedora etc), then it’s already finely tuned for your system, but even so you may still run into these problems sometimes, on your own system or some other one.

1. Cpu bound programs

How it happens

Infinite Loop Avenue?The most common cycle for a program is to 1) accept some input, 2) do some work, 3) give some output. And this sequence is repeated for as long as the program is running. Typically, the work that has to be done takes a very short time compared to the time spent waiting for input, which gives all the other running programs a chance to use the cpu in the meantime.
If a program instead takes no input and gives no output and only does work all the time, then there is much less time in which the cpu is free for other programs to use. This will make the whole system very slow, because all programs have to wait a long time to get their turn.

Demonstration

It’s very easy to simulate this scenario. Here is an example. This program is a loop, which checks the condition (which is always true) and then performs the action in the loop (running the command true, which does nothing). No input, no output.
$ while true; do true; done
Hit Ctrl+C when you’ve had enough.

How to detect it

The easiest way to check for a cpu bound program is to use top. See if there is a program that’s using almost 100% of the cpu. To be sure that it doesn’t just occasionally spike leave it running for a while (or hit <space> to refresh the display a few times).
$ top
Cpu0  : 98.2%us,  1.8%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si
Cpu1  :  1.4%us,  0.5%sy,  0.0%ni, 98.2%id,  0.0%wa,  0.0%hi,  0.0%si

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
26210 alex      20   0 19428 2368 1492 R   99  0.1   1:14.27 bash
 4075 alex      20   0  606m 195m  28m S    0  6.5  23:19.58 firefox
 6337 root      20   0  505m 116m 6716 S    0  3.9  34:30.25 Xorg
Here we see that cpu0 is idle (free) 0% of the time, which means it is as busy as it possibly can be. 98.2% is due to user programs (ie. the program we just demonstrated). And when we look in the list of programs, we see that bash (the shell in which we ran our one-liner) is using 99% of the cpu.

What you can do about it

There are two cases of cpu bound programs – the intentional and the accidental.
If you’re running a program that does a lot of work on purpose, for instance a video encoding task, then the more cpu it uses the quicker it will finish, so using a lot of cpu is good. But if it’s making your whole system slow, then you can lower the priority at which the programs gets access to the cpu, so that it only uses as much cpu as the other programs leave available. To do this, use the renice command:
$ renice 20 26210
The first number you give to renice describes how “nice” you are being to other programs, on a scale from -20 (very selfish) to 20 (very nice). The other number is the process id (pid) of the program, which is listed by top above. Doing this will probably still make bash use almost 100% of the cpu, but not at the expense of the other programs.
On the other hand, if the program isn’t supposed to be using this much cpu, then it’s either a bug in the program (certain versions of firefox used to spike to 100% cpu) or it’s just heavier than the cpu can handle. You can still renice the program, but this will make your system more responsive at the expense of the program (so for instance, firefox may become unusable). The last resort is to kill it:
$ kill 26210
On multi-cpu systems this is less of a problem, because most programs can only use one cpu, which leaves the other cpus to serve all the other programs and keep your system responsive.

2. Physical memory is almost full

How it happens

100\'s of Apps running at the same time on LinuxThere are two types of memory on your system: physical (RAM) and virtual (swap). Physical memory is relatively small and very quick to access, while virtual memory is just part of your harddisk being used as extra memory (very slow to access). As long as all the running programs can store their work in physical memory, everything is fine. (This is why it’s good to have a lot of it.)
But once you fill all of the physical memory, the operating system will start moving some of the work into swap (onto the harddisk) to make space for new programs. You probably won’t notice that this is happening. But when you switch from one program to another, and the second program has its work in swap, this work now has to be moved back into memory, and some of the stuff currently in memory has to be moved out to swap. This will definitely be noticeable and will make your system slow until it’s finished.
The effect of this situation is that your system will feel normal for some of the time (when using the same program), and then very unresponsive from time to time (when switching between programs).

Demonstration

This effect is best demonstrated with a desktop program. Start the gimp and create a canvas so large that it exceeds your available physical memory. For instance, try a canvas 10,000×10,000 pixels (gimp will tell you how much memory it needs to create it). It will probably take a while to create the canvas, so just let it finish. (In order to make room for this image in memory, other programs are being moved into swap, this is called swapping.) Then do some painting on the canvas. Now switch back to another program (firefox, for instance). You should now sense that your system is slow to respond, but this is temporary for as long as it takes to restore firefox into memory.

How to detect it

It’s a good idea to know how much memory your system uses under normal conditions, that way you can keep an eye on things. The command free -m will tell you about the state of your memory:
$ free -m
             total       used       free     shared    buffers     cached
Mem:          3015       1640       1375          0          9        124
-/+ buffers/cache:       1505       1509
Swap:         2878          0       2878
Here we see that we have 3015mb of physical memory, half of which is free. We also have almost as much swap memory, but none of that is in use.
After we create our huge canvas with the gimp we can run free again and see what has changed.
$ free -m
             total       used       free     shared    buffers     cached
Mem:          3015       2993         22          0          2        957
-/+ buffers/cache:       2033        982
Swap:         2878        819       2059
We’re now using 819mb of swap memory, so clearly we’ve exceeded the capacity of physical memory.
While swapping takes place top will also show that there is a lot of I/O activity taking place. (Press Shift+M to sort the program listing by memory use.)
$ top
Cpu(s):  4.0%us,  1.6%sy,  0.0%ni, 51.0%id, 42.1%wa,  0.6%hi,  0.8%si
Mem:   3088224k total,  3043496k used,    44728k free,     3548k buffers
Swap:  2947888k total,   998812k used,  1949076k free,   957956k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 2579 alex      20   0 1593m 1.4g  13m S    0 47.0   0:22.26 gimp
Here we see that user and system activity adds up to only 6%, the cpu is idle 51% of the time, but spending 42% of the time waiting for I/O operations (ie. harddisk activity). And among the programs, the gimp alone is using 1.4gb of memory.

What you can do about it

If you notice that your system becomes unresponsive when switching between programs, you have a pretty good idea that it’s because of swapping. There is no way to make swapping faster, so what you should do is less swapping. Keep an eye on how much memory your system is using and you should also have an idea about the memory use of various programs (the big ones). When you notice heavy swapping, the easiest way to fix it is to shut down the program that’s using the most memory. When you do this you free up physical memory. The data in swap will not automatically be moved into memory (because this is expensive), but you should notice that your system is performing normally again.

3. IO bound programs

How it happens

Input/Output (I/O, also written io) is an umbrella term for *everything* that happens on your system that does not involve the cpu, the memory or the video card (gpu). When talking about performance, io usually means the harddrive, because that’s what your system uses most heavily (and therefore what we spend the most time waiting for), but it can also refer to your network card, your cdrom drive, your keyboard etc.
A program running on the cpu, which does a lot of io (such as reading/writing large files), will spend a lot of time waiting for this io to complete. This leaves the cpu busy and other programs have less opportunity to run. The effect is that the whole system may become consistently unresponsive until the heavy io is completed.

Demonstration

We can demonstrate the effect of heavy io by reading and writing a lot of data to the harddrive. Here we find the device that your root partition is on (probably /dev/sda1) and then read 5gb from it, writing it to a file /tmp/dummy (you may want to check that you have enough free space).
$ device=`mount | grep " / " | awk '{ print $1 }'`
$ sudo dd if=$device of=/tmp/dummy bs=5120 count=1048576
This should take around 10 minutes, so you can see how your system behaves while this is happening.

How to detect it

We can detect heavy io with top.
$ top
Cpu0  : 13.7%us,  6.5%sy,  0.0%ni,  0.0%id, 79.0%wa,  0.8%hi,  0.0%si
Cpu1  :  4.7%us,  3.9%sy,  0.0%ni, 73.2%id, 17.3%wa,  0.8%hi,  0.0%si

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
30956 root      20   0 10388 1812  640 D    5  0.1   0:02.76 dd
Here we see that cpu0 is spending 79% of its time waiting for io. In the list of programs we see the program dd that we ran. It’s only using 5% cpu, which seems to conflict with the number 79%, but then we see it has status D, which means waiting for io. The reason for this is that while dd is only doing actual work on the cpu 5% of the time, it’s still using a lot of cpu time because of all the io.
Most io is harddrive io, but we can see if this is the case with the tool atop, which is similar to top.
$ atop
CPU | sys     14% | user     21% | irq       2% | idle     39% | wait    125% |
cpu | sys     10% | user     11% | irq       2% | idle      0% | cpu000 w 78% |
cpu | sys      4% | user     10% | irq       0% | idle     38% | cpu001 w 48% |
DSK |         sda | busy     98% | read    1371 | write   1011 | avio    4 ms |

  PID  SYSCPU  USRCPU  VGROW  RGROW  RDDSK  WRDSK  ST EXC S  CPU CMD     1/4
30956   0.60s   0.00s     0K     0K 113.4M 114.0M  **   * D   6% dd
Here we again see that the program dd has status D (io wait), and cpu0 is spending 78% waiting for io. In addition, we see that the harddrive sda (which is the one we are reading and writing to, /dev/sda) is busy 98% of the time. So we know that it’s the harddrive that’s responsible for using 78% of cpu0.

What you can do about it

If your system becomes unresponsive because of io, it is because the cpu is not being shared among the programs in a way that allows them all to stay responsive. So the answer is to prioritize certain programs over others. ionice is the io counterpart to nice.
$ ionice -p30956 -n7
Here we are telling ionice first the process id of the program, and then the io priority it should have, on a scale from 0 (highest priority) to 7 (lowest).


courtsey :

http://linuxologist.com