wood burning stoves 2.0*
The moose likes Performance and the fly likes tips to improve the performance of my application Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of The Java EE 7 Tutorial Volume 1 or Volume 2 this week in the Java EE forum
or jQuery UI in Action in the JavaScript forum!
JavaRanch » Java Forums » Java » Performance
Bookmark "tips to improve the performance of my application" Watch "tips to improve the performance of my application" New topic
Author

tips to improve the performance of my application

xeon costa
Greenhorn

Joined: May 10, 2011
Posts: 15

Hi,

I've a distributed application made in java that runs in a clustering system. This application is composed by several components. Each component run on each node of the cluster. The components exchanges messages using HTTP protocol and RPC invocations. The cluster is composed by several linux machines and it doesn't use X11. I'm doing some performance tests to see if I can improve the performance of my application.

For that, I'm trying to see how many memory the application uses, or if it exists loops or deadlocks, using top command. I'm also looking to the messages exchanged using the tcpdump command, to see if I can reduce the number of messages exchanged between the components. I've also made a static code analysis using the PMD and findbugs application to find possible errors, or deadlocks.

In overall, I trying to do all the possible tests to see if my application doesn't consume plenty of resources (CPU, memory, ...) and if it's possible to improve its performance.

1 - But, I don't have too much experience in analysing the behaviour of an application using the top or the tcpdump. Can anyone give me an advice on how to debug programs using top and tcpdump?

2 - Is there any good manual that explains how to debug programs?

3- Is there any other tool beside PMD and findbugs to make static code analysis, or any other type of analyses?


Thanks

Thanks,
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18541
    
    8

It looks like you skipped the first step in the process, namely the step where you define what "performance" is. What, exactly, are you trying to improve?

For example since your system is processing messages, you might want to increase the number of messages processed per second, or reduce the average time required to process a message.

Once you have a goal, then everything you do should be in support of that goal. So: reducing the memory footprint of the system, for example. Would that help achieve that goal? Or would it be better to actually increase the memory footprint? Point being, you can go in and optimize things at random, but that may or may not achieve something useful.
xeon costa
Greenhorn

Joined: May 10, 2011
Posts: 15

I see that each components takes about 70% of the CPU in each node. I don't understand if this is related to the data that he's processing, or it's because of something wrong in the code, like deadlock, or infinite whiles. The application takes 30 minutes to process 1GB of data through all the cluster.

Is this a good a point to start to improve the performance of an application?
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18541
    
    8

xeon costa wrote:Is this a good a point to start to improve the performance of an application?


If you defined "performance" as the CPU usage of the application, then yes. Your next step is to decide whether "improving" that performance would require increasing the CPU usage or decreasing it. Although I have to say, that doesn't strike me as a particularly useful performance metric.
xeon costa
Greenhorn

Joined: May 10, 2011
Posts: 15

If I start to talk about the amount of messages that each switched through all components. Is it a useful performance metric?

Is there any other performance metric?
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18541
    
    8

xeon costa wrote:If I start to talk about the amount of messages that each switched through all components. Is it a useful performance metric?


Well, the application is there to do something, right? So there must be people around who have complaints about how well it does something. You would use those complaints to figure out what was useful to look at.
xeon costa
Greenhorn

Joined: May 10, 2011
Posts: 15

I understand your point. Thank you for your explanation.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: tips to improve the performance of my application