Thursday, July 31, 2008

QPID_CLI 0.2 Released

Major changes

1.You can use list command without specifying object type using -o option by giving object type at the beginning.

  • ex: queue list - This is equal to list -o queue.
  • exchange list - This is equal to list -o exchange

2. Added following options for list command.

  • -n --name Allow user to specify object name type.
  • -v --virtualhost Allow user to specify virtualhost type.
  • -output Allow user to specify output format (csv)
  • -separator Separator for the output formatter

3. Change the way list command display information.

  • Now list command display limited number of information in a tabular format which is very clear.
  • If user want to see all the attributes of particular object user have to use info command.

4.Added a new command to CLI called ** info **

  • This command is very similar to list command and supports almost all the arguments which works with list command.
  • Only difference is this command display all the attributes of particular object type in a different format.

5.Added command completion for users convenience now you can use TAB key to complete the command and object type.

6.Added capability of running a command in one shot which is very useful when you want to run particular command in qpid-cli using a
shell script.

  • Ex: <$QPID_CLI/bin/qpid-cli queue list > - This command list all the queue objects and exit from the CLI so you can use these when you use shell scripts.
  • Usage of one shot mode : you can use grep awk like commands with normal qpid-cli commands with one shot mode like this.
$QPID_CLI/bin/qpid-cli queue list | grep ping


You can download it from here
http://code.google.com/p/lahirugsoc2008/downloads/list

Project Homepage
http://code.google.com/p/lahirugsoc2008

I warmly welcome your early feedback on this implementation.

Thanks for your interest in Apache Qpid and Qpid CLI.


Tuesday, July 15, 2008

QPID_CLI 0.1 Released

I have released Apache Qpid CLI it's first release with version 0.1.This is basically a management console which works with almost all the releases of Apache Qpid with JMX support and allow users to monitor useful information via the console.This works only for Linux based systems.

Key features

  1. This management console is released for the first time and at the moment it allows users to list number of MBean information which registered inside the qpid Java broker.
  1. This only supports only for the following command since this is the first release.
List appropriate information of the give object
  • list
For more informations
  • list --help
Disconnect the management console with Java broker
and come back to normal command prompt
  • exit

You can download it from here
http://code.google.com/p/lahirugsoc2008/downloads/list

Project Homepage
http://code.google.com/p/lahirugsoc2008

I warmly welcome your early feedback on this implementation.

Thanks for your interest in Apache Qpid and Qpid CLI.



Friday, June 27, 2008

Import Apache Qpid in to Intellij Idea

During last couple of days I was struggling to import Apache Qpid java in to Idea (Intellij Idea) and start the broker with Idea.My main target was to debug the broker using Idea. But there were few modifications to be done.I thought this will be useful for the people who are new to Qpid.

1. First build the Apache Qpid java using following commands or please refer to the how to build in Apache Qpid.
  • mvn -Pfastinstall
  • cd distribution
  • mvn (This will create all the artifacts )
  • tar -xzvf target/qpid-1.0-incubating-M3-SNAPSHOT-java-bin.tar.gz
In here the file name is depend on the version of the Qpid you are using, somehow you have to extract java binary.Then navigate to the extracted directory and set the QPID_HOME variable to that directory.
Now you are in a possition of running Qpid in commandline so you can try this out by following command.
  • $QPID_HOME/bin/qpid-server
Now come back to importing in to Idea. Go back to the source folder of Qpid java and run the this command inorder to build the Idea project.
mvn idea:idea
This will create an Idea project so you can open the project using Idea but the problem is you won't be able to run the java broker on Idea and you won't be able to debug the broker. So in order to make it happen you have to do several modifications. First we have to hardcode the Qpidhome, although we have already set the environment variable it's unable to access them when we start the broker using Idea.
Please have a look in to following diff files and you'll get to know how to do those modifications. diff files.
When you do modifictaion don't apply the patch directly please have a look and do the modifications according to your installation which means your Qpidhome is different from my one.After doing three of those modifications compile the project in Idea and run it, It will work. If this doesn't work for you please be kind enough to comment on this post.

Thanks

Friday, June 20, 2008

Exokernel Concept

I'm doing the module Advanced Operating Systems and while I'm reading on that I found some interesting topic called Exo-kernel Operating systems.
This was initially proposed by a research group at MIT in 1995. This is a concept which is very useful when it comes to arena of developing high performing applications and this concept is really controversial when we concern about the idea people had about operating systems.Previously people thought about operating systems as a piece of software which hide all the tricky information from application developer and user of the system.But when we concentrate about the performance this abstract layer leads to a huge performance hit due to this fixed abstraction.
As an example if we concern about a Webserver it will keep on increasing it's cache although it's exceed the main memory since the operating system itself handle the memory using the virtual memory so application doesn't have any idea about what's going on inside.So this leads to reduce the performance of the web server.
Likewise using the high level abstraction is always reduce the flexibility of the application development and limit the performance and functionality of the system.So what they suggest with this exokernel concept is kernel (exokernel) will handle the hardware multiplexing and resource protection while application itself will handle all the resource management using their own applicaton specific policies. So what happen is application developer is suppose to implement a piece of software called library operating system which do all the resource management and the kernel will take care of multiplexing the hardware. But the main challenge of this concept is every application has to develop it's own library operating system and this leads to a real overhead.Exokernel researchers develop their own library operating system called ExoS and an Exo kernel called Aegis and they did some benchmark with their resources and click here to see that...

And they have developed a web server called cheetah which use it's own library operating system which is specific for a web server and they used infomations like knowledge about HTTP to bind with IO and they are not copying data but they send data directly to the client from it's cache. So this is the performance difference they had with that cheetah .. click here

So Exokernel principle is something which seperate the hardware protection from resource management from a typical operating system.With exokernel it's not trying to give a virtual machine to each and every application but it's tying to expose hardware to the application while protecting hardware resources from untrusted application.Inorder to implement the protection with exokernels they use this techniques
  • Secure Binding
  • Visiblel Revocation
  • Abort Protocol
Secure binding is a way of protecting resource by binding them with the library operating systems in order to impelement it they have use several techniques like hardware protection, software protection and download code.Visible revocation is revocating resources with keep in contact with the library operating system, with normal applications revocation happens invisibly as an example when kernel wants to deallocate a particular page it doesn't go and ask from application but what it does is simple deallocate the resource but in here kernel deallocate memory by asking from the library operating system. And at last Abort Protocol is a way of break binding when library operating system is unable to respond to the kernel.So here what happen is when libOS is unable to respond to particular request it breaks appropriate resources which bind with library operating system and let the application to know that.

Those are the information I got about exokernels and more commanets will be very useful.

Thursday, May 8, 2008

Extract JMX information from a remote MBean server

I was able to write a code which is capable of extract all the MBeans with a given domain and print all the attribute value and attribute names of each and every MBean.
Here's my code...

If you want to extract all the MBeans which are registered with the connected Server you can simply pass two null value to the method queryNames method.

Monday, May 5, 2008

HP 520 Laptop with Ubuntu

I bought an HP 520 Laptop from Sri Lanka which is worth 800USD. And I wanted to install Ubuntu 7.10 on my new machine and I was bit of suspicious whether it supports for all the harware in my machine. After successful installation of Ubuntu 7.10 I was able to review that It supports for Intel Pro wireless device but unfortunately It doesn't support for sound card.So I decide to swich in to Latest Ubuntu release 8.04 which was release before one week and it works fine for my HP 520 Laptop. But honestly I have certain problems with the OS in my machine.
1. When I hibernate it hibernates and when I start my machine in next time It works fine for few minutes and it get stuck...

2.After working for three or four hours my machine is becoming quite slow and there's no issue with the memory usage and processor usage. Yesterday night I was working on Idea with opening two Idea windows and slow down happened all of a sudden and I was able to find my swap usage became 100% so it's obvious to slow down my machine.

I'm not sure about the problem this might be a problem with my hardware or may be a problem with the OS.I feel like switching for Debian but I love Ubuntu..

If any body knows any solution please leave a comment...

lahiru

Wednesday, April 23, 2008

Selected for Google Summer of Code 2008

I had a dream of doing a Google summer of code since the day I heard about that. Due to the great time I spent at WSO2 I was able to learn how to communicate in open source world and It really helped me to make my dream success. I was able to get a project in Apache incubator which is Apache Qpid.
Apache Qpid is a multiple language implementation of AMQP( Advanced Message Queuing Protocol). In my project I have to develop a command line interface which is capable of extracting JMX information from Qpid. Since Qpid already have a JMX interface to manage those JMX information I just have to develop the JMX connectors which runs in the shell. The important things in this project is the development of command line interface since most of the people used to ssh in to remote machine and work on that particular machine then running xwindows on remote machine is a pain. So the best option is to use a CLI for monitoring things.

Hope to write some more about my Gsoc project in future. May be about JMX and Java stuff...