Tuesday, July 27, 2010

I/O Other and I/O Other Bytes

Have you ever opened up Windows Task Manager and looked at all the nifty columns you can add through the options menu item?

Recently I was forced to do this and we noticed that IO Other and IO Other Bytes were spiking at alarming rates (along with our CPU usage). There are other columns for IO Reads and IO Writes, those are pretty self explanatory (and they weren't moving). But I had no idea what would cause those IO Other and IO Other Bytes columns to even accumulate data so I did some investigating.

Accessing file information like exists, canRead, canWrite, lastModified, directory listing, etc is what causes IO Other to increase. Basically accessing attributes on the file.

Accessing file pointers and seeking to a new location in the file will cause the IO Other Bytes column to increase. Basically "moving over" or maybe "counting" bytes without reading actually reading them.

Depending on which object I was using, getting the length had an effect also. The java class File.length() caused the IO Other to go up, while the java class RandomAccessFile.length() caused the IO Other Bytes to go up.

This was not exhaustive by any means, but it did give me a good idea on what those values mean and why they would accumulate.


Visual VM

Yesterday Visual VM released an updated profiler for Java.

https://visualvm.dev.java.net/download.html

It's pretty awesome. You can sample data from remote applications now which you couldn't do very effectively in the past.

You used to have to run the profiler on the same machine as the application if you wanted method level cpu information (which they now call "sampling"). This was always a sticking point for me. I used the BEA jrockit profiler in the past and you could always get that kind of information from remote applications. Course, I couldn't complain too much since Visual VM IS free :D

But now I get all my eggs in one free basket.

What it now labels "profiler" can still only be run on the same machine as the app being profiled, but I haven't played much with this option. The one time I ran it it seemed to interact with my ecplise IDE where I was running the app from, so that's either really cool or not. I'm definitely planning to play around more with it though.


Wednesday, July 7, 2010

Above Average Programmers

Here's an interesting article on "Above Average Programmers," a category I happily represent ;)


Unfortunately, I don't do a lot of outside learning. I'm pretty comfortable in my current job and I've got a variety of things at home to keep me busy between wife, kids, and a new house to take care of. (Not to mention WoW and SC2 which comes out in 2 weeks). I also feel that I'm much too busy at work to spend the time reading a lot of blogs or insights into programming in general.

Yet somehow I still happily answer "above average" when asked to rank my skills.

Maybe I'll have to justify it by saying all those 12 year old facebook app devs are bringing down the curve enough that I'm on top, or at least, above average. Whew, I feel better about myself already. Thanks facebook!