Creation Zone

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Friday, 15 July 2005

Solaris: Initialization & Termination routines in a dynamic object

Posted on 18:33 by Unknown
Some times it is desirable to have some work to be done during the loading and unloading of a dynamic library. For example it is convenient to initialize some global variables, or to open some files, or to allocate a chunk of memory etc., when the library loads up, instead of waiting for the caller to make reference to any of the interface symbols of the library. As a result of separating initialization, finalization code, we may end up with some what clean code. Run-time linker processes the initialization sections (if any) found in the application, and the dependencies, before transferring the control to the application.

On Solaris, these entry (initialization), exit (finilization) points can be encapsulated in either an array of function pointers or a single code block. With the help of link-editor (ld), we can write code to fire up during pre-loading, loading, and unloading of a shared object. Link-editor creates sections .preinit_array, .init_array, .init, .initfirst, .fini_array and .fini in the ELF object being built, based on the linker options and the compiler pragmas. Let's have a brief look at those sections in the following paragraphs:

  1. .preinit_array section

    A dynamic executable may provide pre-initialization functions, to get executed once the run-time linker has built the process image and performed the necessary relocations. As the name suggests, pre-initialization functions get executed before any other initialization functions. Dynamic libraries are not permitted to have pre-initialization functions.

    The -z preinitarray=function,[function,..] flag of link-editor lets us specify the names of the pre-initialization function(s). During linking, it will be encoded into .preinit_array section of the dynamic object

    The run-time linker (ld.so.1) constructs a dependency ordered list of initialization routines from the dependencies that have been loaded, and executes them in the reverse topological order of the dependencies.

  2. .init_array section

    The -z initarray=function,[function,..] flag of link-editor lets us specify the names of the initialization function(s). During linking, it will be encoded into .init_array section of the dynamic object. Dynamic executables and libraries are permittied to have initialization functions.

  3. .initfirst section

    The link-editor has another flag -z initfirst for fine granularity of control over the initialization routines. When the object is built with this flag, the run-time initialization occurs before the run-time initialization of any other objects brought into the process at the same time. In addition, the object run-time finalization will occur after the run-time finalization of any other objects removed from the process at the same time. Dynamic executables are not permitted to build with this linker flag.

  4. .init and .fini sections

    The .init and .fini provide a run-time initialization and termination code block, respectively. However, the compiler drivers typically supply .init and .fini sections with files they add to the beginning and end of your input file list. These files have the effect of encapsulating the .init and .fini code into individual functions. These functions are identified by the reserved symbol names _init and _fini respectively.

    Sun Studio C/C++ compilers provide the pragmas init and fini , for the developers to specify the initialization and termination code blocks in terms of functions. These pragmas must appear somewhere before the definition of the init/fini functions.

    Syntax:
    #pragma init (function[,function..])
    #pragma fini (function[,function..])
  5. .fini_array section

    As with initialization routines, we can also specify the finalization code to be executed, with the help of link-editor's -z initarray=function[,function..]

    Finalization code will be called when a program terminates under program control or when the containing shared object is removed from memory. As with initialization functions, finalization functions are executed in the order processed by the link editor. In other words, the dynamic executable's .fini section is called first, before its dependencies termination sections are executed
Note that all the above mentioned initialization, termination functions must not accept any arguments, and must not return any values.

Let's put together the things we learned so far in an example.

Example 1. Creating init, fini sections with Sun Studio pragmas
% cat fileops.h
FILE *fd;

void fileopen();
void fileclose();
void filewrite(FILE *, char *);

% cat fileops.c
#include <stdio.h>
#include "fileops.h"

#pragma init (fileopen)
#pragma fini (fileclose)


void fileopen() {
printf("\nInside fileopen() ..");
fd = fopen("/tmp/dummy", "a");
}

void fileclose() {
printf("\nInside fileclose() ..");
fclose(fd);
}

void filewrite(FILE *fd, char *string) {
fprintf(fd, string);
}

% cc -G -o libfileops.so fileops.c

% cat filedriver.c
#include <stdio.h>
#include "fileops.h"

int main() {
filewrite(fd, (char *)"Hey!");
return (0);
}

% cc -o driver -lfileops filedriver.c

%ls -l /tmp/dummy
/tmp/dummy: No such file or directory

% ./driver
Inside fileopen() ..
Inside fileclose() ..

% ls -l /tmp/dummy
-rw-rw-r-- 1 build engr 4 Jul 15 18:17 /tmp/dummy

% cat /tmp/dummy
Hey!

% elfdump libfileops.so
... some parts of the dump were elided ...

Relocation Section: .rela.init
type offset addend section with respect to
R_SPARC_WDISP30 0x44c 0 .rela.init fileopen

Relocation Section: .rela.fini
type offset addend section with respect to
R_SPARC_WDISP30 0x460 0 .rela.fini fileclose

... some parts of the dump were elided ...
2. Creating initialization, termination sections with linker options

Let's remove the pragma statements from fileops.c and rebuild the libfileops library, with -zinitarray=fileopen -zfiniarray=fileclose linker flags

% cat fileops.c
#include <stdio.h>
#include "fileops.h"

void fileopen() {
printf("\nInside fileopen() ..");
fd = fopen("/tmp/dummy", "a");
}

void fileclose() {
printf("\nInside fileclose() ..");
fclose(fd);
}

void filewrite(FILE *fd, char *string) {
fprintf(fd, string);
}

% cc -G -o libfileops.so -zinitarray=fileopen -zfiniarray=fileclose fileops.c

% elfdump libfileops.so
... some parts of the dump were elided ...

Relocation Section: .rela.initarray
type offset addend section with respect to
R_SPARC_32 0x10544 0 .rela.initarra fileopen

Relocation Section: .rela.finiarray
type offset addend section with respect to
R_SPARC_32 0x10548 0 .rela.finiarra fileclose

... some parts of the dump were elided ...

% ./driver
Inside fileopen() ..
Inside fileclose() ..
Finally, we can observe the sequence of initialization, termination calls, by setting the LD_DEBUG environment variable of run-time linker to basic.

% setenv LD_DEBUG basic
% ./driver
29503:
29503: configuration file=/var/ld/ld.config: unable to process file
29503:
29503: calling .init (from sorted order): /usr/lib/libc.so.1
29503:
29503: calling .init (done): /usr/lib/libc.so.1
29503:
29503: calling .init (from sorted order): ./libfileops.so
29503:
Inside fileopen() ..29503:
29503: calling .init (done): ./libfileops.so
29503:
29503: transferring control: ./driver
29503:
29503: calling .fini: ./libfileops.so
29503:
Inside fileclose() ..29503:
29503: calling .fini: /usr/lib/libc.so.1
29503:
Reference:
Solaris Linker and Libraries Guide

[09/15/2005: Adam Levanthal posted some interesting content about _init, in his blog with title The mysteries of _init]
_____________________
Technorati tags: Sun | Solaris | Linker | Programming
Read More
Posted in | No comments

Thursday, 14 July 2005

Sun Studio C/C++: Profile Feedback Optimization (PFO)

Posted on 15:41 by Unknown
Profile Feedback
--------------------

In general, compilers do optmizations based on the compiler flags supplied during the compilation, and the other information that it thinks appropriate for an optimization though the user hasn't asked for it specifically eg., inlining certain routines, even if they are not accompanied by inline key word, loop unrolling etc., However since it can't predict the run-time behavior of the application, it can't do certain optimizations like block reordering, register allocation etc., during compile time. So, it is upto the developer for careful laying out of the instructions for better performance of the application. As developers may not be the end users in most of the cases, it is a cumbersome exercise for the developers to get the run-time data, to identify the hot code (where the application spends most of the time), and to rewrite the some code to improve the performance.

The developer can be relieved from such tasks by assisting optimizers with the program profile ie., the run-time behavior of a program: expected probabilities of branches and frequencies of executions of given program blocks.

Sun Studio C/C++ compilers support profile feedback technique to automate tasks mentioned above. Profile feedback is a mechanism by which a user can gather information about the run-time behavior of the application, and allow the compiler to use this information to optimize the application further.

Typical steps involved in using profile feedback mechanism:
  1. Compilation for profile data collection

    • Build the application with -xprofile=collect option. In this step, the source code is instrumented to gather data; counters are inserted into the source code to facilitate determining the number of times the code was executed. This data will be used to build a control flow graph.

    • -xprofile=collect may suppress optimizations that modify the structure of the control flow graph, in order to preserve the accuracy of the description used to generate control flow instrumentation

    • You can also specify the name of the program that is being analyzed, during compilation with -xprofile=collect flag. The flag will be -xprofile=collect:name. The name is optional and, if not specified, is assumed to be a.out. When compiling different object files with the -xprofile=collect:<name> option, <name> must be the same for all the object files used to produce the final program. If they are not consistent, then the result will be dependent on the final link order of the program

    • Note that profile feedback works only at optimization levels -xO2 and above

    • eg., (trivial C code, just for example)
      % cat bubblesort.c
      #include <stdio.h>
      #include <stdlib.h>

      #define COUNT 1000

      void swap (int *Array, int i, int j) {
      int temp;
      temp = Array[i];
      Array[i] = Array[j];
      Array[j] = temp;
      }

      void bubblesort(int *Array) {
      int i, j;

      for (i = 0; i < COUNT; ++i) {
      for (j = (i + 1); j < COUNT; ++j) {
      if (Array[i] > Array[j]) {
      swap (Array, i, j);
      }
      }
      }
      }

      int main() {
      int i, *Array;

      Array = (int *) malloc (sizeof (int) * COUNT);

      for (i = COUNT; i > 0; --i)
      Array[COUNT - i] = i;

      bubblesort(Array);

      for (i = 0; i < COUNT; ++i)
      printf("\nArray[%d] = %d", i, Array[i]);

      return (0);
      }

      % cc -o bubblesort -xO4 -xprofile=collect bubblesort.c

  2. Data collection run

    • Run the application built in (1) with one or more representative workloads. If the workload is representative, then the branches that are normally taken in the training workload, are normally taken in the real workload

    • In this phase, the compiler instrumented code collects the branch frequencies for all branches & the counts for all basic blocks. This will create a directory named after the program with a .profile appended to it. feedbin file under program.profile directory, holds the execution frequency for later use by the optimizer with -xprofile=use

    • The data collection is additive, which means that if you keep running the same executable (even with different inputs), the data on the latest run will get added to the data about previous runs. Therefore, the data will be an aggregate of all your runs with the profiled executable.

    • If you have profile data from earlier runs, and if you recompile the program with -xprofile=collect and rerun it, the code that writes out the profile data will detect that this is a different program and overwrite the old data

    • If you only run your program with a single input file, then you can just run that input file and you will have collected good data. However, if you are creating a general purpose application which can have a variety of inputs which cause execution of different parts of your program, you should choose different kinds of sample input so that the samples are representative of all the inputs that your program will receive. Using only certain kinds of input will bias the compiler in favoring the executed parts of the program more than the unexecuted parts.

    • By default, the program.profile directory will be created in the same directory, from where the executable is being run. If you wish to change the directory in which the profile data goes, you can use the SUN_PROFDATA_DIR environment variable.

    • eg.,
      % ./bubblesort
      Array[0] = 1
      Array[1] = 2
      ..
      ..
      Array[9998] = 9999
      Array[9999] = 10000

      % ls -dF *.profile
      bubblesort.profile/

      %ls -dF /tmp/*.profile
      No match

      % setenv SUN_PROFDATA_DIR /tmp

      % ./bubblesort
      Array[0] = 1
      Array[1] = 2
      ..
      ..

      % ls -dF /tmp/*.profile
      /tmp/bubblesort.profile/

  3. Rebuild the application with feedback

    • Once we gather the feedback data from the application, we can give this data back to the compiler, so it can do a better job optimizing it. To do this, we need to use the compiler flag: -xprofile=use:<profile data directory>. Make sure to supply the profile data directory. If you only use -xprofile=use, then the compiler does not know what the profile data is called, and therefore will assume that the data is called a.out.profile. Note that it is not necessary to specify .profile, when supplying the profile data directory name to -xprofile=use. Hence from the previous example, it is valid to specify either -xprofile=use:bubblesort.profile or -xprofile=use:bubblesort on compile line

    • Except for the -xprofile option which changes from -xprofile=collect to -xprofile=use, the source files and other compiler options must be exactly the same as those used for the compilation that created the compiled program which in turn generated the feedback file. The same version of the compiler must be used for both the collect build and the use build as well. If compiled with -xprofile=collect:name, the same program name name must appear in the optimizing compilation: -xprofile=use:name

    • -xprofile=use incorporates information collected by running binaries compiled using -xprofile=collect. The information (execution counts associated with basic blocks and control flow edges) is read from a feedback file and is attached to the compiler intermediate representation at the beginning of optimization. Many compiler optimizations subsequently both use the execution counts and update them when the control flow graph is modified as part of an optimizing transformation

    • Based on the profile feedback data, the compiler can do optimisations of the following types:

      1. Code layout
        • Place code in a way that the frequently executed code in a routine is grouped together
          eg., Block chaining, block ordering, block splitting, register allocation
        • Place code to improve instruction cache (I$) utilization, instruction prefetching etc.,
      2. Loop unrolling, loop unswitching
      3. Inline routines that are frequently called, to both remove the cost of calling the routine, and potentially to enable further optimisation of the inlined code

    • eg.,
      % cc -o bubblesort -xO4 -xprofile=use:bubblesort.profile bubblesort.c
      % ./bubblesort
      Array[0] = 1
      Array[1] = 2
      ..
      ..

    • With the following cg (Code Generator) options, the compiler dumps the execution count of each basic block, in an assembly listing

      • % {f90,CC} -xprofile=use:<feedback dir> -Qoption cg -assembly,-Qcg-V
        % cc -xprofile=use:<feedback dir> -Wc,-assembly,-Qcg-V

        The -assembly option will generate a .s file with the same basename and dirname as the object file (e.g., bubblesort.o will be accompanied by bubblesort.s in the same directory). The -Qcg-V option adds more information as assembler comments to the generated .s file. If -xprofile=use has been specified, this information includes execution counts derived from the <profile data directory>
      • eg.,
        % cc -xprofile=use:bubblesort -Wc,-assembly,-Qcg-V -xO4 bubblesort.c
        ...
        ...
        ! 13 !void bubblesort(int *Array) {
        ! 14 ! int i, j;
        ! 16 ! for (i = 0; i < COUNT; ++i) {

        !
        ! SUBROUTINE bubblesort
        !
        ! OFFSET SOURCE LINE LABEL INSTRUCTION (ISSUE TIME) (COMPLETION TIME)

        .global bubblesort


        bubblesort: /* frequency 1.0 confidence 1.0 */
        /* 000000 16 ( 0 1) */ sethi %hi(0x2400),%o5 ! const ! ssar:9216
        /* 0x0004 ( 0 1) */ or %g0,0,%o2
        /* 0x0008 ( 1 2) */ add %o5,783,%o3 ! const ! ssar:9999 ! urw: 32
        /* 0x000c ( 1 2) */ add %o5,784,%o1 ! const ! ssar:10000 ! urw: 32

        ! 17 ! for (j = (i + 1); j < COUNT; ++j) {

        /* 0x0010 17 ( 2 3) */ or %g0,1,%o5

        ! Registers live out of bubblesort:
        ! o0 o1 o2 o3 o5 sp o7 fp gsr
        !

        ! predecessor blocks : bubblesort .L900000205

        .L900000206: /* frequency 10000.0 confidence 1.0 */
        /* 0x0014 17 ( 0 1) */ cmp %o5,%o1 ! urw: 32
        /* 0x0018 ( 0 1) */ bge,pn %icc,.L77000113 ! tprob=0.00 ! urw: 32
        /* 0x001c ( 0 1) */ add %o0,4,%g3 ! hoisted ! urw: 32

        ! Registers live out of .L900000206:
        ! g3 o0 o1 o2 o3 o5 sp o7 fp gsr
        !
        ...
        ...

  4. Measure the application performance, and compare with baseline run
Notes:
  1. In general, any profile feedback improves performance

  2. Designing good training runs is a complex issue and nearly impossible for some programs. So care must be taken to run the application using a typical data set or several typical data sets. It is important to use data that is representative of the data that will be used by your application in a real-world scenario

  3. Because the process requires compiling the entire application twice, it is intended to be used only after other debugging and tuning is finished, as one of the last steps before putting the application into production

  4. The profile data collection is synchronous. The instrumented code dumps the profile data during the shutdown of the application process. Since it is not asynchronous, multi-threaded applications may experience some (profile) data loss due to the race condition between multiple threads. There is some work in progress to get asynchronous profile data collection, in the presence of multiple threads and without the need to shutting down the process. Hopefully this feature will be available in Sun Studio 11

Patch releases

If the application is very big, and if only few modules were changed, profile only those binaries (executables or shared libraries) that are rebuilt for the patch. However, in order to collect a meaningful profile, there needs to be -xprofile=collect versions of all object files comprising a rebuilt executable or shared library. For example, if the executable mtserver is built with object files smiwork.o and smiutil.o, then rebuild those object files with -xprofile=collect, along with mtserver. Then simply replace the old binaries of the collect build with the new patched binaries. And then re-run the training run, collect the feedback data for the entire build; and finally recompile all object files in the binary (executable or library) with -xprofile=use

In other words:
Let's say the shared library libmodel.so, built from objects model.o and buscomp.o, has to be patched. Under PFO, this will be done as follows:
  1. Compile model, buscomp objects with -xprofile=collect

  2. Build libmodel.so with -xprofile=collect

  3. Simply replace the libmodel.so of the previous complete collect build, with the (latest) patched libmodel.so

  4. Collect profile data for the entire application

  5. Compile model, buscomp objects again with -xprofile=use and with the feedback data from step 4 (see above)

  6. Re-build libmodel.so with -xprofile=use and with the feedback data from step 4 (see above)

  7. Release libmodel.so as a patch

Other optimizations that would work well with profile feedback:
  1. Profile feedback works best with crossfile optimisation (controlled by the flag -xipo) since this allows the compiler to look at potentially optimisations between all source files

  2. Mapfiles work at the routine level, and profile feedback works within routines; it would seem to be a simple progression to do both optimisations at the same time. This is possible with link-time optimisation (controlled by the flag -xlinkopt). This is also called post-optimisation

The whole discussion on profile feedback optimization can be summarized in the following 3 steps:

  1. Build the application with the flags -xprofile=collect -xipo
    % cc -xO2 -xprofile=collect:application.profile -xipo -o application application.c

  2. Run the application with one or more representative workloads
    % ./application args

  3. Rebuild the application with -xprofile=use -xipo -xlinkopt
    % cc -xO2 -xprofile=use:application.profile -xipo -xlinkopt -o application application.c

Suggested Reading:
  1. Sun Studio C/C++ compiler options
  2. Improving Code Layout Can Improve Application Performance by Darryl Gove
Acknowledgements:
Chris Aoki (Sun Microsystems)
_____________________
Technorati tags: Sun | C | C++ | Programming
Read More
Posted in | No comments

Saturday, 9 July 2005

My Favorite Music - A Retro IV

Posted on 20:46 by Unknown
My Favorite Music - A Retro III
My Favorite Music - A Retro II
My Favorite Music - A Retro I

Oasis - Wonderwall
Oasis - Don't Look Back in Anger
Oasis - Morning Glory
Oasis - Champagne Supernova
Hoobastank - The Reason
Pearl Jam - Even Flow
Pearl Jam - Jeremy
Pearl Jam - Once
Metallica - Master of Puppets
Rage Against The Machine - Renegades of Funk
Jennifer Lopez - Waiting For Tonight
Depeche Mode - Barrel of a Gun
Depeche Mode - Love Thieves
Depeche Mode - Home
Depeche Mode - It's No Good
Depeche Mode - Uselink
Depeche Mode - Useless
Depeche Mode - Sister of Night
Depeche Mode - Insight
Depeche Mode - World in My Eyes
Depeche Mode - Sweetest Perfection
Depeche Mode - Personal Jesus
Depeche Mode - Halo
Depeche Mode - Waiting For The Night
Depeche Mode - Enjoy The Silence
Depeche Mode - Policy Of Truth
Depeche Mode - Blue Dress
Depeche Mode - Clean
Nirvana - Smells Like Teen Spirit
Nirvana - In Bloom
Nirvana - Come As You Are
Lionel Richie - Just For You
Meat Beat Manifesto - Prime Audio Soup
Meat Beat Manifesto - Book Of Shadows
Meat Beat Manifesto - Oblivion, Humans
Meat Beat Manifesto - Lets Have Fun
Meat Beat Manifesto - Acid Again
Meat Beat Manifesto - Tweek, The
P.O.D - Youth of the Nation
John Mayer - Daughters
John Mayer - Your Body is a Wonderland
John Couger Mellencamp - Jack & Diane
Bonnie Raitt - Nick of Time
Michael Bolton - How Am I
          Supposed to Live Without You
Don Henley - The End of the Innocence
Bobby Brown - Every Little Step
Soul II Soul - Back to Life
Soul II Soul - African Dance
Tracy Chapman - Fast Car
Aerosmith - Just Push Play
Bowling For Soup - 1985
Prince - 1999
Natalie Imbruglia - Torn
UB40 - Baby I Love Your Way
When In Rome - Promise
Abba - Dancing Queen
Pat Benetar - Heart of Glass
Pat Benetar - Hit Me with Best Shot
Madonna - Like a Prayer
Pat Benetar - Love is a Battle Field
MatchBox 20 - Unwell
Josh Groban - You Raise Me Up
Gary Newman - Cars
Justin Timberlake - Cry Me a River
Prodigy - Get Up, Get Off
Prodigy - Wake Up Call
Kid Rock/Sheryl Crow - The Picture
Los Lonely Boys - More Than Love
Five for Fighting - Superman
Aerosmith - Crazy
Sheryl Crow - The First Cut Is The Deepest
Santana - Oye como va
No Doubt - Don't Speak
Traing - Calling all Angels
Dido - White Flag
Maroon 5 - She will be Loved
The Temptations - Ain't No
          Mountain High Enough

Maroom 5 - This Love
Ashlee Simpson - Pieces of Me
Haddaway - What Is Love?
Luther Vandross - To Dance With My
          Father Again
Dido - Stoned
Dido - Thank You
Linkin Park - In the End
Limp Bizkit - Rollin'
No Doubt - Underneath
Pink - Let's Get the Party Started
Outkast - Hey Ya
Nelly - Hot In Here
Gorillaz - Clint Eastwood
Enrique Iglesias - Hero
Creed - My Sacrifice
Norah Jones - Don't Know Why
Goo Goo Dolls - Give a Little Bit
Lenny Kravitz - Again
Lenny Kravitz - Dig In
The Crystal Method - Trip Like I Do
Shakira - Whenever Whereever
Fatboy Slim - I Left My Wallet in El Segundo
Ryan Cabrera - True
Janet Jackson - All For You
__________________
Technorati tag: music
Read More
Posted in | No comments

My Favorite Music - A Retro III

Posted on 02:59 by Unknown
My Favorite Music - A Retro I
My Favorite Music - A Retro II

Moby - Honey
Moby - Porcelain
Moby/Gwen Stefani - South Side
Moby - Bodyrock
Moby - Machete
Moby - Run On
Moby - If Things Were Perfect
Five for Fighting - 100 years
Gavin DeGraw - I Don't Want To Be
Cold Play - Speed of Sound
Pat Benatar - We Belong
Sugar Ray - Every Morning
Jessica Simpson - These Boots
          are Made for Walkin'
Aerosmith - Dude is Like a Lady
Missy Elliott - Lose Control
The Pretenders - Brass in Pocket
Kelly Clarkson - Breakaway
Sade - Smooth Operator
Aerosmith - I Don't Want to Miss a Thing
R. Kelly - I Believe I can Fly
Sheryl Crow - Favorite Mistake
Green Day - Broken Dreams of Boulevard
Rob Thomas - Lonely No More
Beyonce - Crazy in Love
Black Eyed Peas - Let's Get Started
John Cougar Mellemcamp - Hurts So Good
Kool & The Gang - Celebration
Backstreet Boys - Incomplete
Roxette - Must Have Been Love
Akon - Lonely
Heart - These Dreams
UB40 - Here I Am, Come and Take Me
The Fugees - Killing Me Softly
Howie Day - Collide
Anna Nalick - Breathe (2 AM)
Dave Mathews Band - American Baby
Ryan Cabrera - On the Way Down
Amerie - 1 thing
Yanni - Santorini
Enigma - Return to Innocence
Dave Mathews Band - Satellite
Poe - Angry Johnny
Control Machete - Si Senor (spanish)
Dave Mathews Band - Save Me
Seal - Love's Divine
Los Lonely Boys - Heaven
Switchfoot - Meant to Live
Seal - Get it Together
Prodigy - Spitfire
Evanescence - Everybody's Fool
Evanescence - My Immortal
John Cougar Mellencamp - Walk Tall
Queen - I Want to Break Free
Avril Lavigne - I'm With You
Marilyn Manson - Saint
311 - All Mixed Up
Evanescence - Bring Me To Life
Alanis Morisette - All I Really Want
Alanis Morisette - Hand in My Pocket
Alanis Morisette - You Oughta Know
Alanis Morisette - Ironic
Alanis Morisette - Not the Doctor
Godsmack - Voodoo
Tricky - Ponderosa
Roy Orbison - Pretty Woman
Overseer - Horn Dog
Bonnie Raitt - Let's Give Them
          Something to Talk About
Nelly Furtado - I'm like a Bird
Nelly Furtado - Powerless (Say What You Want)
Juno Reactor - Asatoma Sadgamaya
Christina Aguilera - Beautiful
Chemical Brothers - Setting Sun
Nine Inch Nails - Perfect Drug
The Smashing Pumpkins - Eye
Lou Reed - This Magic Moment
Machines Of Loving Grace - Golgotha
          Tenement Blues

Nine Inch Nails - Dead Souls
Rage Against The Machine - Darkness
Violent Femmes - Color Me Once
All Saints - Pure Shores
Michael Jackson - They Don't Care About Us
Michael Jackson - Stranger in Moscow
Michael Jackson - Earth Song
Michael Jackson - You Are Not Alone
Michael Jackson - History
Michael Jackson - Morphine
Michael Jackson - Superfly Sister
__________________
Technorati tag: music
Read More
Posted in | No comments

Friday, 8 July 2005

My Favorite Music - A Retro II

Posted on 22:23 by Unknown
My Favorite Music - A Retro I

O-Town - All Or Nothing
Daniel Bedingfield - Gotta Get Thru This
Prodigy - Baby's Got a Temper
Sting - The Soul Cages
Tool - Schism
Beck - Where's At
Puddle of Mudd - She Hates Me
Michael Jackson - Jam
R.E.M - Losing My Religion
Metallica - One
Madonna - Don't Tell Me
La Bouche - Sweet Dreams
Billy Joel - We Didn't Start The Fire
James Brown - Sex Machine
Deftones - My Own Summer
Rob Dougan - Clubbed to Death
Sting/The Police - Every Breath You Take
Rage Against the Machine - Wake up
Rage Against the Machine - How Could I Just Kill A Man
Propellerheads - Spybreak
Hive - Ultrasonic Sound
Monster Magnet - Look to Your Orb for the Warning
Michael Jackson - Black or White
Ministry - Bad Blood
Venga Boys - Going To Ibiza
Aaliyah - Try Again
Rage Against The Machine - Killing In The Name
Lunatic Calm - Leave You Far Behind
Limp Bizkit - Take A Look Around
Len - Steal My Sunshine
Berlin - Take My Breath Away
Bon Jovi - It's My Life
No Doubt - It's My Life
Incubus - Stellar
Offspring - Original Prankster
Madonna - Beautiful Stranger
Bryan Adams - Everything I Do
Vanilla Ice - Ice Ice Baby
Star Wars - Theme (Moby)
Mission Impossible - Theme (Moby)
James Bond - Theme (Moby)
Train - Drops of Jupiter
Train - Calling all Angels
Tears for Fears - Everybody Wants to Rule the World
Michael Jackson - Why You Wanna Trip on Me
Michael Jackson - In the Closet
Michael Jackson - Remember the Time
Michael Jackson - Heal the World
Michael Jackson - Who is It
Michael Jackson - Give in to Me
Michael Jackson - Dangerous
Michael Jackson - Way You Make Me Feel
Michael Jackson - Bad
Michael Jackson - Speed Demon
Michael Jackson - Liberian Girl
Michael Jackson - Just Good Friends
Michael Jackson - Another Part of Me
Michael Jackson - Man in the Mirror
Michael Jackson - I Just Can't Stop Loving You
Michael Jackson - Dirty Diana
Michael Jackson - Smooth Criminal
Michael Jackson - Beat It
Michael Jackson - Billie Jean
Michael Jackson - Thriller
Michael Jackson - Wanna Be Startin' Somethin'
Michael Jackson - Don't Stop 'Til You Get Enough
Michael Jackson - She's Out of My Life
Tears for Fears - Woman in Chains
Rod Stewart - Downtown Train
Sugar Ray - Fly
Garbage - Push It
Tears for Fears - Sowing The Seeds Of Love
Smash Mouth - Walkin' On The Sun
Michael Jackson - Ghosts
Third Eye Blind - Never Let You Go
U2 - Beautiful Day
Natalie Cole - Unforgettable
Michael Jackson - Scream
Michael Bolton - When A Man Loves A Woman
Christina Aguilera - Genie in a Bottle
Eagles - Hotel California
Jay-Z - Big Pimpin'
Prodigy - Mindfields
Phil Collins - Another Day in Paradise
Seal - Kiss from a Rose
TLC - Waterfalls
Take That - Back For Good
Rob Zombie - Dragula
Fatboy Slim - Bird Of Pray
Cranberries - Zombie
George Michael - Father Figure
Beck - Deadweight
Kid Rock - I Am the Bullgod
Pink Floyd - Learning To Fly
Prince - Diamonds And Pearls
Prince - Thieves In The Temple
Beck - High 5; Rock the Catskills
Smash Mouth - I'm A Believer
Korn - Adidas
Bush - Cold Contagious
Bob Marley - Buffalo Soldier
Sneaker Pimps - Becoming X
Simple Minds - Don't You Forget About Me
Crowded House - Don't Dream its over
__________________
Technorati tag: music
Read More
Posted in | No comments

My Favorite Music - A Retro I

Posted on 15:03 by Unknown
Though I listen to a lot of music every day on TV/Radio/Music system, I don't even know what kinda music pleases me most. I do know, for sure, that it is either innovative, rhythmic music or music with cool lyrics. I have been trying to recollect the songs that I liked most, so I can put together a list, before they all slip out of my mind. And here comes a long list, with an 8 hr effort.
Mono - Life in Mono
Robert Palmer - Addicted to Love
Limp Bizkit - My Way
Matchbox 20 - Bent
Metallica - I Disappear
Queen - We Will Rock You
Sting - Desert Rose
Chumbawumba - Tubthumping
Limp Bizkit - Boiler
Matchbox 20 - If you're gone
Prodigy - Smack my bitchup
Enrique Iglesias - Rhythm Divine
Limp Bizkit - Nookie
Prodigy - Fire starter
Aerosmith - Jaded
Bon Jovi - Blaze of Glory
Baha Men - Who Let the Dogs Out
Metallica - Enter sandman
Coolio - Gangsta's Paradise
Primitive Radio Gods - Standing
          Outside A Broken Phone Booth
Nine Inch Nails - Terrible Lie
Godsmack - Whatever
The Chemical Brothers - Block Rockin' Beats
Nine Inch Nails - We're In This Together
Prodigy - Breathe
Tricky - Overcome
Nine Inch Nails - Burn
Marilyn Manson - The Beautiful People
Gravity Kills - Guilty
112 - Dance With Me
Smash Pumpkins - 1979
Nelly - Country Grammar
Shaggy - Angel
Cake - The Distance
Michael Jackson - Blood on the Dance Floor
Michael Jackson - 2000 Watts
Rage Against the Machine - Guerrilla Radio
Rob Zombie - Living Dead Girl
Michael Jackson - Break of Dawn
Nickleback - How You Remind Me
Rammstein - Ich Will
Disturbed - Down With The Sickness
Lenny Kravitz - Fly Away
Massive Attack - Inertia creeps
Telepopmusik - Breathe
Gus Gus - Ladyshave
Smash Mouth - I'm a Believer
Signs - Theme
Nelly - E.I.
Austin Powers - Theme
Michael Jackson - Leave Me Alone
Moby - Extreme Ways
Republica - Ready To Go
Geggy Tah - Whoever You Are
Sublime - What I Got
Sneaker Pimps - Six Underground
Beck - Loser
Beck - The New Pollution
Cake - Never There
Crowded House - Pineapple Head
Crowded House - Don't Dream, It's Over
Tool - Stinkfist
Simple Minds - Alive & Kicking
Simple Minds - Let there be Love


Crowded House - World Where You Live
Simple Minds - See The Lights
Crowded House - It's Only Natural
Terminator - Theme
Milli Vanilli - Blame It On The Rain
Van Halen - Top of the World
Beck - Devils Haircut
Bonnie Raitt - Good Man, Good Woman
Avril Lavigne - Complicated
Dirty Vegas - Days Go By
INXS - Suicide Blonde
Lifehouse - Hanging By A Moment
Luther Vandross - Power of Love
Michael Jackson - Earth Song Remix
Limp Bizkit - My Generation
Lunatic Calm - Basement Level
Michael Jackson - Threatened
Rage Against The Machine -
          The Battle Of Los Angeles album
Uncle Kracker - Follow Me
Uncle Kracker - Drift Away
Wise Guys - Start the Commotion
Mary J. Blige - Family Affair
Lou Bega - Mambo #5
Outkast - Miss Jackson
Backstreet Boys - I Promise You
Michael Jackson - Unbreakable
James Bond 007 - Theme
Bee Gees - Alone
The Cardigans - Lovefool
No Doubt - Hey Baby
Wham! - Wake Me Up Before You Go-Go
Los Del Rio - Macarena
Lunatic Calm - Roll the Dice
Ricky Martin - Livin' La Vida Loca
Eminem - My Name Is
Beastie Boys - Sabotage
Tears for Fears - Shout
Third Eye Blind - Semi-charmed Life
Kenny Rogers - It's A Beautiful Life
Michael Buble - Sway
Santana/MatchBox 20 - Smooth
Prince - Purple Rain
Beck - Jack-Ass
Michael Bolton - Georgia On My Mind
Bush - Swallowed
Collective Soul - December
MC Hammer - U Can't Touch This
Missy Elliott - One Minute Man
Monica - Don't Take It Personal
Offspring - Pretty Fly For A White Guy
Kylie Minogue - Can't Get You Out Of My Head
Prodigy - Voodoo People
The Rembrandts - I'll Be There For You
Staind - It's Been Awhile
Sugar Ray - When Its Over
Vanessa Carlton - A Thousand Miles
Butthole Surfers - Pepper
Bush - Machinehead
Nine Inch Nails - Closer
Shaggy - It Wasn't Me
Shaggy - Boombastic
Ben Harper - Sexual Healing
Nine Inch Nails - Head Like a Hole
Prince - When Doves Cry
__________________
Technorati tag: music
Read More
Posted in | No comments

Wednesday, 6 July 2005

MPlayer: Extracting Audio from a DVD

Posted on 21:51 by Unknown
Some times, for whatever reasons we may have to extract audio from a DVD. Such a task can be done very easily with MPlayer. The following command dumps the audio from the 1st chapter of the DVD to a WAV file:
% mplayer -vc dummy -vo null -ao pcm -aofile dummy.wav dvd://1 -dvd-device /cdrom
Where:
-vc dummy suggests using a dummy video codec, since we don't need video play back
-vo null suggests MPlayer to disable video play back
-ao pcm stands for raw PCM/WAVE file writer audio output
-aofile dummy.wav suggests dummy.wav to be the audio output file
dvd://1 tells mplayer to play the 1st chapter of the DVD, and
-dvd-device /cdrom points to the location of DVD drive

To learn more about mplayer options, have a look at the man page of mplayer
______________________
Technorati tag: mplayer
Read More
Posted in | No comments
Newer Posts Older Posts Home
Subscribe to: Posts (Atom)

Popular Posts

  • C/C++/Java: ++ unary operator
    #include <stdio.h> int main() { int i = 5, j = 5; int total = 0; total = ++i + j++; printf("\ntotal o...
  • Achievement Award
    Got an Achievement Award/Certificate from Sun Microsystems, in recognition for my effort with Siebel Benchmark!! =:) Related post: http:...
  • Blast from the Past : The Weekend Playlist #3
    The 80s contd., The 80s witnessed the rise of fine talent - so, it is only fitting to dedicate another complete playlist for the 80s. Her...
  • C/C++: Structure Vs Union
    A structure is a collection of items of different types; and each data item will have its own memory location. Where as only one item withi...
  • Linux: Frozen Xwindows
    If Xwindows seem frozen, the following simple key strokes may bring back the Xserver without the need for a reboot Two ways to kill the Xwi...
  • UNIX/Linux: File Permissions (chmod)
    A file's permissions are also known as its 'mode'; so to change them we need to use the 'chmod' command (change mode). T...
  • Sun C/C++: #pragma pack
    Let's have a look at the following program and the output bpte4500s001:/sunbuild1/giri/testcases/%cat aligndata.c #include <stdio.h...
  • Miscellaneous Tips: Solaris, Oracle Database, Java, FMW
    [Solaris] Cleanup all IPC resources Run the following wrapper script with root user privileges. for i in `ipcs -a | awk '{ print $2 }...
  • Solaris: Resetting Forgotten Root Password
    Need physical or remote console access to the system to use these steps: Press Stop-A on the console or Ctrl-] and send brk from a remote...
  • C++: Virtual Function
    A virtual function allows derived classes to replace the implementation provided by the base class. The compiler makes sure the replacemen...

Categories

  • 80s music playlist
  • bandwidth iperf network solaris
  • best
  • black friday
  • breakdown database groups locality oracle pmap sga solaris
  • buy
  • deal
  • ebiz ebs hrms oracle payroll
  • emca oracle rdbms database ORA-01034
  • friday
  • Garmin
  • generic+discussion software installer
  • GPS
  • how-to solaris mmap
  • impdp ora-01089 oracle rdbms solaris tips upgrade workarounds zombie
  • Magellan
  • music
  • Navigation
  • OATS Oracle
  • Oracle Business+Intelligence Analytics Solaris SPARC T4
  • oracle database flashback FDA
  • Oracle Database RDBMS Redo Flash+Storage
  • oracle database solaris
  • oracle database solaris resource manager virtualization consolidation
  • Oracle EBS E-Business+Suite SPARC SuperCluster Optimized+Solution
  • Oracle EBS E-Business+Suite Workaround Tip
  • oracle lob bfile blob securefile rdbms database tips performance clob
  • oracle obiee analytics presentation+services
  • Oracle OID LDAP ADS
  • Oracle OID LDAP SPARC T5 T5-2 Benchmark
  • oracle pls-00201 dbms_system
  • oracle siebel CRM SCBroker load+balancing
  • Oracle Siebel Sun SPARC T4 Benchmark
  • Oracle Siebel Sun SPARC T5 Benchmark T5-2
  • Oracle Solaris
  • Oracle Solaris Database RDBMS Redo Flash F40 AWR
  • oracle solaris rpc statd RPC troubleshooting
  • oracle solaris svm solaris+volume+manager
  • Oracle Solaris Tips
  • oracle+solaris
  • RDC
  • sale
  • Smartphone Samsung Galaxy S2 Phone+Shutter Tip Android ICS
  • solaris oracle database fmw weblogic java dfw
  • SuperCluster Oracle Database RDBMS RAC Solaris Zones
  • tee
  • thanksgiving sale
  • tips
  • TomTom
  • windows

Blog Archive

  • ▼  2013 (16)
    • ▼  December (3)
      • Blast from the Past : The Weekend Playlist #3
      • Measuring Network Bandwidth Using iperf
      • Blast from the Past : The Weekend Playlist #2
    • ►  November (2)
    • ►  October (1)
    • ►  September (1)
    • ►  August (1)
    • ►  July (1)
    • ►  June (1)
    • ►  May (1)
    • ►  April (1)
    • ►  March (1)
    • ►  February (2)
    • ►  January (1)
  • ►  2012 (14)
    • ►  December (1)
    • ►  November (1)
    • ►  October (1)
    • ►  September (1)
    • ►  August (1)
    • ►  July (1)
    • ►  June (2)
    • ►  May (1)
    • ►  April (1)
    • ►  March (1)
    • ►  February (1)
    • ►  January (2)
  • ►  2011 (15)
    • ►  December (2)
    • ►  November (1)
    • ►  October (2)
    • ►  September (1)
    • ►  August (2)
    • ►  July (1)
    • ►  May (2)
    • ►  April (1)
    • ►  March (1)
    • ►  February (1)
    • ►  January (1)
  • ►  2010 (19)
    • ►  December (3)
    • ►  November (1)
    • ►  October (2)
    • ►  September (1)
    • ►  August (1)
    • ►  July (1)
    • ►  June (1)
    • ►  May (5)
    • ►  April (1)
    • ►  March (1)
    • ►  February (1)
    • ►  January (1)
  • ►  2009 (25)
    • ►  December (1)
    • ►  November (2)
    • ►  October (1)
    • ►  September (1)
    • ►  August (2)
    • ►  July (2)
    • ►  June (1)
    • ►  May (2)
    • ►  April (3)
    • ►  March (1)
    • ►  February (5)
    • ►  January (4)
  • ►  2008 (34)
    • ►  December (2)
    • ►  November (2)
    • ►  October (2)
    • ►  September (1)
    • ►  August (4)
    • ►  July (2)
    • ►  June (3)
    • ►  May (3)
    • ►  April (2)
    • ►  March (5)
    • ►  February (4)
    • ►  January (4)
  • ►  2007 (33)
    • ►  December (2)
    • ►  November (4)
    • ►  October (2)
    • ►  September (5)
    • ►  August (3)
    • ►  June (2)
    • ►  May (3)
    • ►  April (5)
    • ►  March (3)
    • ►  February (1)
    • ►  January (3)
  • ►  2006 (40)
    • ►  December (2)
    • ►  November (6)
    • ►  October (2)
    • ►  September (2)
    • ►  August (1)
    • ►  July (2)
    • ►  June (2)
    • ►  May (4)
    • ►  April (5)
    • ►  March (5)
    • ►  February (3)
    • ►  January (6)
  • ►  2005 (72)
    • ►  December (5)
    • ►  November (2)
    • ►  October (6)
    • ►  September (5)
    • ►  August (5)
    • ►  July (10)
    • ►  June (8)
    • ►  May (9)
    • ►  April (6)
    • ►  March (6)
    • ►  February (5)
    • ►  January (5)
  • ►  2004 (36)
    • ►  December (1)
    • ►  November (5)
    • ►  October (12)
    • ►  September (18)
Powered by Blogger.

About Me

Unknown
View my complete profile