Solaris Extended Accounting
09 Feb '09 - 09:38 by benrExtended Accounting is one of the many under appreciated features in Solaris, and quite possibly the worst documented to boot. So, it's time to fix that.
Accounting, in general, is a means of recording data about resource utilization, CPU in particular, with the intention to be used primarily for reporting and billing purposes. Conceptually it could be confused with Auditing (see I See You!: Solaris Auditing (BSM)), in that they both record activity, except that the scope is vastly different. With BSM you can see every syscall/process/etc. that is executed, by who, when, with what privileges, etc; but the purpose of auditing is to determine what happened, when it happened, how it happened, and by who in the context of security. By contrast, Accounting is interested in what ran, how long it ran, how much resource it consumed, and some basic related information in the context of resource utilization.
When used in conjunction with Solaris's array of observability tools, from BSM Auditing, to Kstats, to Dtrace, it provides a useful low impact way or maintaining a historical view of resource utilization more detailed than Kstats but more permanent than DTrace and more targeted than auditing. With kstats you can graph CPU usage over time, but with Extended Accounting you can determine the breakdown of CPU usage within the same period, for example.
The first thing you need to know about accounting on Solaris is that there are TWO separate accounting systems. The documentation did a poor job of making this clear for a long time. The UNIX Accounting system, we'll call it, has been around for over a decade and is a hodgepodge of ancient scripts. Its still there and documented in the Solaris Admin Guide. Like mainframes or NIS+, if you're not already using it you shouldn't start now. In this blog entry we focus purely on the newer Solaris specific Extended Accounting facility.
Extended Accounting was added to Solaris in Solaris 9 along with the excellent microstate accounting enhancements. Solaris maintains all sorts of amazing stats about processes that can be explored with proc tools, and the many *stat tools (mpstat, vmstat, etc.) via options uncommonly used. The extended accounting facility really just provides a framework in which these stats can be stored in a datafile for later use, rather than be discarded when a process terminated. When exit() is run a call is made to extended accounting, and if enabled for tasks or processes the data is dumped into a record.
The framework is extensible for use in a variety of ways. For instance, when using Solaris IPQoS you can use extended accounting to record network flow data. As part of Crossbow a wonderful suprise was a new non-IPQoS flow extended accounting resource which I previously discussed here: Crossbow for Christmas.
Getting start with Extended Accounting (exacct for short) is easily done using the acctadm command:
$ acctadm
Task accounting: inactive
Task accounting file: none
Tracked task resources: none
Untracked task resources: extended
Process accounting: active
Process accounting file: /var/adm/exacct/proc
Tracked process resources: extended
Untracked process resources: host
Flow accounting: inactive
Flow accounting file: none
Tracked flow resources: none
Untracked flow resources: extended
Net accounting: active
Net accounting file: /var/adm/exacct/net
Tracked net resources: extended
Untracked net resources: none
Here you can see the various accounting types available: Task, Process, Flow (IPQoS), and Net (Crossbow). Each accounting type has a datafile to store records in which is user defined. A variety of different resources can be tracked for each accounting type, which can either individually selected or specified as either "extended" or "basic", which are groupings of resources. To see what they are use acctadm -r:
$ acctadm -r process: extended pid,uid,gid,cpu,time,command,tty,projid,taskid,ancpid,wait-status,zone,flag,memory,mstate basic pid,uid,gid,cpu,time,command,tty,flag task: extended taskid,projid,cpu,time,host,mstate,anctaskid,zone basic taskid,projid,cpu,time flow: extended saddr,daddr,sport,dport,proto,dsfield,nbytes,npkts,action,ctime,lseen,projid,uid basic saddr,daddr,sport,dport,proto,nbytes,npkts,action net: extended name,ehost,edest,vlan_pid,vlan_tci,sap,priority,bwlimit,devname,src_ip,dst_ip,src_port,dst_port,protocol,dsfield,curtime,ibytes,obytes,ipkts,opkts,ierrpkts,oerrpkts basic name,devname,ehost,edest,vlan_pid,vlan_tci,sap,priority,bwlimit,curtime,ibytes,obytes,ipkts,opkts,ierrpkts,oerrpkts
To enable a given accounting type specify the file, resources, and then enable it with the -E option, like so:
root@quadra ~$ acctadm -f /var/adm/exacct/task task
root@quadra ~$ acctadm -e extended task
root@quadra ~$ acctadm -E task
root@quadra ~$ acctadm task
Task accounting: active
Task accounting file: /var/adm/exacct/task
Tracked task resources: extended
Untracked task resources: none
All the above is well documented and straight forward. The tricky part is actually using the data thats collected and dealing with long running processes.
As I stated before, the accounting records are recorded at process termination. That means that if you start a long running process, such as a MySQL daemon that runs for 6 months, you won't see a record for it until its stopped. That sort of defeats the usefulness of accounting. Therefore, using the wracct command you can cause an individual process or task to write a "partial record". In this case, partial differentiates if from a full record written at exit. So if you want to get accounting data for such processes, you'll want a cron job that executes wracct against the process(es) at some given interval.
# wracct -i `pgrep arkeiad` -t partial process #
There are two tools provided with Solaris to examine extended accounting data files. One is the lastcomm command which is like a shells "history" command, showing a history of commands run based on the process accounting data. The second is actually a demo C application found in /usr/demo/libexacct called exdump. This demo app is intended to help developers learn the extended accounting library (libexacct), but is used all too commonly by administrators to output the contents of an accounting file.
If you really want to take advantage of accounting data you'll need to build your own custom tools using either the Exacct PERL module (written by Sun, found in CPAN, and part of the Solaris PERL distribution) or the libexacct C library.
Getting started with the PERL modules can be confusing initially. You can find documentation for the module on CPAN and some examples in the System Administration Guide: Solaris Containers-Resource Management and Solaris Zones.
The problem with the examples in the manual is that they mask some of the inner workings via the convenience "dump" function. Thus I present to you a modified version that is a little more explicit:
#!/usr/bin/perl
##
## This is a modified version of the 'dumpexacct' example from the
## 'System Administration Guide: Solaris Containers-Resource Management and Solaris Zones'
## In this version, rather than use the "dump()" convience function I instead navigate
## directly... this helps better illustrate how to actually use the Exacct PERL Module.
#
## benr@cuddletech.com - 2/7/09
use strict;
use warnings;
use Sun::Solaris::Exacct qw(:EXACCT_ALL);
die("Usage is $0 n") unless (@ARGV == 1);
# Open the exact file and display the header information.
my $ef = ea_new_file($ARGV[0], &O_RDONLY) || die(error_str());
printf("Creator: %sn", $ef->creator());
printf("Hostname: %snn", $ef->hostname());
my $obj_counter = 0;
# Dump the file contents
while (my $obj = $ef->get()) { ## Get an object from the EA File and reposition to next.
print("---------------- OBJECT $obj_counter -----------------------n");
$obj_counter++;
my $objectType = $obj->type(); ## Return the object type (group or item)
my $objectCatalogObj = $obj->catalog(); ## Return a catalog object for this object
my ($a, $b, $c) = $objectCatalogObj->value(); ## Breakout the catalog triplet
printf("Object is: %s - Catalog: %s %s %sn", $objectType, $a, $b, $c ); ## Output the catalog and object type for the object at hand.
if ( $objectType == EO_GROUP && $c == EXD_GROUP_PROC ) { ## If this is a PROC Group....
my @objectList = $obj->value(); ## Return the sub-group which will contain actual items.
foreach my $item (@objectList) {
my $itemsType = $item->type(); ## Get type for new object.. is it a EO_ITEM or EO_GROUP?
if ($itemsType == EO_ITEM){
my $itemCatalog = $item->catalog(); ## Return the "Catalog Object" for this object.
my ($itemType, $itemGroup, $itemId) = $itemCatalog->value(); ## Breakout the catalog triple
my $itemValue = $item->value(); ## Get the item value itself.
print("ttId: $itemId tValue: $itemValuen"); ## Now print just the catalog item id and item value.
} else {
print("ttERROR: Expected Item, got a group instead.n");
}
}
}
}
# Report any errors
if (ea_error() != EXR_OK && ea_error() != EXR_EOF) {
printf("nERROR: %sn", ea_error_str());
exit(1);
}
The example opens an accounting file and returns a file object. Using that file object we can get some metadata and via the get() method we can walk the file, because after each get() it repositions to the next object. An accounting file is a collection of objects, which come in the form of groups and items. Groups contain yet other groups or items. Items contain data. Each object has an associated catalog which is a triplet that describe the object in the form: type, group, and id.
When implementing your accounting program you'll generally be walking the objects, then navigating groups and items to get to the data you want. To get your footing as to the structure of groups and types of data available in each item use the demo exdump tool and then start playing around. You'll find the /usr/include/sys/exacct_catalog.h header useful in deciphering the catalog values. The heavy use of double-typed variables can be confusing at first, but the header will help it make sense.
As you can see, utilizing extended accounting isn't for the casual user... but if you can find value in the data it collects you'll reap the benefits of your labor learning the PERL module. If you are serious, I'd recommend taking the example above to break out selected items and formatting or sorting them in a more palatable way. Here is a simple modified version that outputs one line per record for a small handful of items:
use strict;
use warnings;
use Sun::Solaris::Exacct qw(:EXACCT_ALL);
die("Usage is $0 n") unless (@ARGV == 1);
# Open the exact file and display the header information.
my $ef = ea_new_file($ARGV[0], &O_RDONLY) || die(error_str());
printf("Creator: %sn", $ef->creator());
printf("Hostname: %snn", $ef->hostname());
## Print Header:
printf("%10s %4s %4s %5s %30sn", "Counter", "UID", "GID", "PID", "CMD");
my $idxCounter = 1;
# Dump the file contents
while (my $obj = $ef->get()) { ## Get an object from the EA File and reposition to next.
$idxCounter++; ## Count records.
my $objectType = $obj->type(); ## Return the object type (group or item)
my $objectCatalogObj = $obj->catalog(); ## Return a catalog object for this object
my ($a, $b, $c) = $objectCatalogObj->value(); ## Breakout the catalog triplet
#printf("Object is: %s - Catalog: %s %s %sn", $objectType, $a, $b, $c ); ## Output the catalog and object type for the object at hand.
if ( $objectType == EO_GROUP && $c == EXD_GROUP_PROC ) { ## If this is a PROC Group....
my @objectList = $obj->value(); ## Return the sub-group which will contain actual items.
my $xxPID = "";
my $xxCMD = "";
my $xxUID = "";
my $xxGID = "";
foreach my $item (@objectList) {
my $itemsType = $item->type(); ## Get type for new object.. is it a EO_ITEM or EO_GROUP?
if ($itemsType == EO_ITEM){
my $itemCatalog = $item->catalog(); ## Return the "Catalog Object" for this object.
my ($itemType, $itemGroup, $itemId) = $itemCatalog->value(); ## Breakout the catalog triple
my $itemValue = $item->value(); ## Get the item value itself.
#print("ttId: $itemId tValue: $itemValuen"); ## Now print just the catalog item id and item value.
$xxPID = $itemValue if ( $itemId == EXD_PROC_PID );
$xxUID = $itemValue if ( $itemId == EXD_PROC_UID );
$xxGID = $itemValue if ( $itemId == EXD_PROC_GID );
$xxCMD = $itemValue if ( $itemId == EXD_PROC_COMMAND );
} else {
print("ttERROR: Expected Item, got a group instead.n");
}
}
## Now output pretty formated data:
printf("%10d %4d %4d %5d %30sn", $idxCounter, $xxUID, $xxGID, $xxPID, $xxCMD);
}
}
# Report any errors
if (ea_error() != EXR_OK && ea_error() != EXR_EOF) {
printf("nERROR: %sn", ea_error_str());
exit(1);
}
Here is what the above looks like when run:
$ ./prettyproc.pl /var/adm/exacct/proc | head
Creator: SunOS
Hostname: quadra
Counter UID GID PID CMD
2 0 0 6878 acctadm
3 0 0 6879 acctadm
4 1004 999 6883 db2set
5 1004 999 6882 sh
6 1004 999 6881 db2fm
7 0 0 6880 sh
Please note that there should a lot of additional checking in the above, and you should differentiate between items that are full versus partial, but this should help you get started down the extended accounting road. :)
I like to use the extended accounting system too.
It could be improved, if you don’t have to trigger the wracct by an external process, but by the scheduler at programmable times.
If you have a list of processes, you can’t do wracct on all of them at a exact time. But you don’t have to, if the process does not run.
So with a little help from a scheduler, which saves the data, if a process gets scheduled after accounting trigger time, no data is lost and all processes get accounted at the same time.
To my knowledge, this feature is not there, but should be implementable.
I should have patented that. :)
Knut Grunwald (Email) (URL) - 09 February '09 - 13:48
There’s also getacct(2) system call which lets you get in-memory exacct record w/o writing it to a file. This is why extended accounting can be enabled without logging into a file.Andrei Dorofeev (Email) - 09 February '09 - 20:48
Good explanation on extended accounting. Just the thing I was looking for. You were right, SUN doc just gives you the highlight and nothing in detail.I took your second script, and expanded to include more objects. It worked like a charm.
Thanks!!!
Rupen - 23 April '09 - 15:11
So with a little help from a scheduler, which saves the data, if a process gets scheduled after accounting trigger time, no data is lost and all processes get accounted at the same time.Chris (Email) (URL) - 10 May '09 - 07:39
Excellent,Nice collection of top bookmarking site. Good thought and great idea. Thanks for the information.
Accounting Homework (Email) (URL) - 25 June '09 - 13:28
cheap uggugg outlet
ugg boots
cheap uggs online
cheap ugg online
cheap ugg boots online
[[http://www.cheapuggsonline.net]]
[[http://www.uggbootshome.net]]
cheap uggs online (Email) (URL) - 17 December '09 - 06:37
[[http://www.uggbootsstore.net/]] uggs outlet[[http://www.uggbootsstore.net/]] ugg outlet
uggs on sale (Email) (URL) - 30 December '09 - 06:17
Welcome to have a look!ugg fashion shoes—classic,cove,nightfall,sundance,mini…
UGGBOOTS-free shipping! Discount40%-50% off (Email) (URL) - 30 December '09 - 07:40
[[http://www.emocuk.com]] this post is really awesomeporno izle (Email) (URL) - 07 January '10 - 22:24
I found your website about a month ago and check it several times a day. It is by far one of the funniest sites that I have come across. I just wanted to say thank you for the laughs and keep up the great work![[http://www.louboutinshoesonline.com/]]
christian louboutin shoes (Email) (URL) - 11 January '10 - 08:37
I find a good website, they are wholesale nike shoes,wholesale nike shoes,wholesale jordan shoes,nike shox,air jordan boot,puma shoes,if you want to wholesale nike shoes,wholesale jordan shoes, nike shox,air jordan boots,puma shoes, you can check the [[[http://www.goods-in-china.com]]]]wholesale nike shoes (Email) (URL) - 14 January '10 - 03:44
Good post! Thanks you for your information! China Wholesale Wholesale China Wholesalers Wholesale Game Accessories Wholesale Iphone Accessories Video Game Accessories Wholesale Wholesale Wii Accessories Wholesale Xbox 360 Accessories Wholesale Xbox 360 Games Wholesale Video Games Cheap Video Games Cheap Ps3 Games Cheap Xbox 360 Games Wholesale Computers Wholesale Laptop Computers Wholesale Laptops Discount Computers Cheap Computers Wholesale Iphones Wholesale Iphone Wholesale Iphones 3g Hiphones Wholesale Hiphone Wholesale Hiphones Wholesale Nokia Wholesale Nokia 8800 Wholesale Nokia n97 wholesale blackberry wholesale blackberry phones wholesale blackberry 9700 wholesale blackberry 9600 wholesale blackberry 9500raging bull (Email) (URL) - 15 January '10 - 06:33
Good post! Thanks for your information! ed hardy ed hardy ed hardy clothing ed hardy clothing ed hardy swimwear ed hardy swimwear ed hardy jeans ed hardy jeans ed hardy hoodies ed hardy hoodies ed hardy shoes ed hardy shoes ed hardy uk ed hardy uk ed hardy bags ed hardy bags ed hardy shirts ed hardy shirts christian audigier christian audigier ed hardy mens ed hardy mens ed hardy womens ed hardy womens ed hardy kids ed hardy kids ed hardyed hardy (Email) (URL) - 15 January '10 - 07:38
Good post! Thanks for your information! ed hardy ed hardy ed hardy clothing ed hardy clothing ed hardy swimwear ed hardy swimwear ed hardy jeans ed hardy jeans ed hardy hoodies ed hardy hoodies ed hardy shoes ed hardy shoes ed hardy uk ed hardy uk ed hardy bags ed hardy bags ed hardy shirts ed hardy shirts christian audigier christian audigier ed hardy mens ed hardy mens ed hardy womens ed hardy womens ed hardy kids ed hardy kids ed hardyuggs (Email) (URL) - 19 January '10 - 09:17
Good post! Thanks for your information!brand clothing (Email) (URL) - 20 January '10 - 06:37
thank you !!ed hardy (Email) (URL) - 20 January '10 - 06:38
[[http://www.buykamagra.com]] buy kamagra[[http://www.viagracialis.com]] viagra cialis
M65 Jacket (Email) (URL) - 21 January '10 - 02:05
[[http://www.brand-clothing.com]] brand clothingbrand clothing (Email) (URL) - 21 January '10 - 02:50
good postabercrombie clothing (Email) (URL) - 22 January '10 - 08:34
Good post! Thanks for your information!As Seen On TV (Email) (URL) - 27 January '10 - 06:43
It is my great pleasure to visit your website and to enjoy your excellent post here. I like that very much. I can feel that you paid much attention forthose articles, as all of them make sense and are very useful. Thanks so much for sharing. I can be very good reader&listener if you are same searching for all to be good. Appreciate for your time!
Happy New Year!
[[http://www.uggboots-home.net]]
uggs (Email) (URL) - 28 January '10 - 10:44
Nothing is able to fulfill, as long as confidence. Everything is difficult at the beginning, is now at the beginning of the show that you have succeeded in half.iphone (Email) (URL) - 29 January '10 - 07:54
Thank u for sharing,very good and useful for me.I will have eyes on your post,and i am Looking forward to more useful info!uggs on sale-ugg outlet store (Email) (URL) - 03 February '10 - 09:19
nice post here, if you want to know more about best mbts and ugg boots, just click here[[http://www.bestmbtshoes.com]]
[[http://www.uggbootsroom.com]]
ugg (Email) (URL) - 06 February '10 - 03:26
Nothing is able to fulfill, as long as confidence. Everything is difficult at the beginning, is now at the beginning of the show that you have succeeded in half.puma boots (Email) (URL) - 06 February '10 - 07:54
Your article is very useful!Thank you for sharing.Nice post.Tiffany Accessories (Email) (URL) - 08 February '10 - 08:45
dsfsdfsdfsdfjdsfsdfsdfsdfuıfsdfsdzayıflama hapı (Email) (URL) - 23 February '10 - 12:04
It is by far one of the funniest sites that I have come across. I just wanted to say thank you for the laughs and keep up the great workporno izle (Email) (URL) - 11 March '10 - 01:20
It is by far one of the funniest sites that I have come across. I just wanted to say thank you for the laughs and keep up the great workTechnology (URL) - 11 March '10 - 12:05
This is really a great stuff for sharing.keep it up .Thanks for sharing.[url= [[http://www.airmax-shox.com/en/category..]]]]
nike airmax (Email) - 12 March '10 - 07:27
nice artwork thanks for sharingacente (Email) (URL) - 12 March '10 - 09:24
nice websites and your commentporno izle (Email) (URL) - 12 March '10 - 13:03
nice artwork thankscheap clothes (Email) (URL) - 16 March '10 - 04:43
for sharingair jordan (Email) (URL) - 16 March '10 - 04:43
Interesting blog. Actually google made searching of information easy on any topic. Well keep it up and post more interesting blogs.Accounting Homework Help (Email) (URL) - 24 March '10 - 14:22
Wow, I never knew that Solaris Extended Accounting. That’s pretty interesting…Yacht Charter Greece (Email) (URL) - 25 March '10 - 12:11
Wow, I never knew that Solaris Extended Accounting. That’s pretty interesting…Yachtcharter Griechenland (Email) (URL) - 29 March '10 - 06:35
Wow, I never knew that Solaris Extended Accounting. That’s pretty interesting…Yachtcharter Griechenland (Email) (URL) - 31 March '10 - 07:37
thank you very muchsikis (Email) (URL) - 01 April '10 - 04:00
research bing for a similarnike kicks (Email) (URL) - 01 April '10 - 06:31
Wow, I never knew that Solaris Extended Accounting. That’s pretty interesting…Yacht Charter Greece (Email) (URL) - 01 April '10 - 10:36
Wow, I never knew that Solaris Extended Accounting. That’s pretty interesting…nike shoes sale (Email) (URL) - 22 April '10 - 03:40
great reading. I recently came across your blog and enjoy reading along. I thought I would leave my first comment here. you post offen refer the very points in it.. Nice blog. I will keep visiting this blog more often. no doubt that the site [[http://www.super-e-world.com/]] offen mention this.wholesale electronics (Email) (URL) - 23 April '10 - 06:53
hahaoriginal supras shoe (Email) (URL) - 28 April '10 - 09:07
thank you ,I have learned a lot.Nike air max shoes sale (Email) (URL) - 30 April '10 - 20:52
nice artwork thanks.[[http://www.trademic.com]]
wholesale (Email) (URL) - 04 May '10 - 03:26
P90x .It really is not expensive if you factor in the costof a gym membership,P90x workout . The cost for P90X is
about three months of a paid gym membership but you get to
keep the program foreverP90x . You can try many of the
online sites, but it will be the same as buying from the
company or a Beachbody Coach. Make sure you are getting
original DVD’s. People are selling copies all over. The
problem is how long will they last, P90x workout ,and you
truly need the exercise and nutrition guide to even follow
the program. You can go to any site or you can go to
www.p90xmall.com and click on products. P90x dvd You can
order directly from the site,P90x dvd.
p90x (Email) (URL) - 05 May '10 - 07:44
Nike air max have utilized the technology of air in it’s sole to give us a more comfortable and supportive cushion to walk on.You may also love nike shox and it is natural to attract most consumers.Waiting for the shoe store to open up so you can get your hands on the first pair of nike shoes what you like. [[http://www.airmax-online.com/]]Online products (Email) (URL) - 06 May '10 - 09:39
[[http://www.gucci-shoes-bags.com]][[http://www.guccinewshop.com]]
Dear friends welcome to our store: we have a specail offer now which is once you buy any product you can get a free gift as well, these gifts are in the gift area, you can free to choose and please add to the shopping cart, we will send it together with your purchased product. Thanks!
gucci (Email) (URL) - 07 May '10 - 04:53
china wholesale usb mp3 player[[http://www.iaamart.com]]
china wholesale usb mp3 player (Email) (URL) - 11 May '10 - 09:52
If you are headed to a big party or other special occasion, these manolo shoes Ice sandals definitely fit the bill. Wear these Christian Louboutin with a black outfit for big time drama. The ysl boots feature cut-outs around the peep-toe, a buckle closure on the slingback and a 3-inch wrapped heel. You can order these ysl shoes right now at [[http://www.louboutinshoesdirect.com/.]].manolo blahnik shoes (Email) (URL) - 12 May '10 - 01:48
If you are looking for the best brand new laptop batteries at the most preferred price, you have come to the right place. [[http://www.adapterlist.com/toshiba/sat..]] We provide the highest quality Battery at the lowest price with the highest level of service, all in a secure and convenient platform.laptop battery (Email) (URL) - 14 May '10 - 08:51
thank you for this outstanding article.I thought certino was the best technologh for laptop battery performance.We specialize in [[http://www.globallaptopbattery.co.uk/s..]] ,laptop AC adapters. All our products are brand new, with the excellent service from our laptop battery of customer service team.laptop batteries (Email) (URL) - 14 May '10 - 08:54
People deserve very good life time and personal loans or just consolidation loan will make it better. Because freedom depends on money.Melody33Duke (Email) (URL) - 23 May '10 - 23:39
Arch2Arch is Memphis spa & threading salon providing services related to massage, eyebrow threading, facial, bridal makeup, henna tattoo & waxing. Arch 2 Arch is located on 3750 Hacks Cross Rd , Memphis,Tn. Visit our Memphis salon.Memphis Salon (Email) (URL) - 26 May '10 - 13:08
Buy Nike Air Max 90 Shoes just $45-55 USD in[[http://www.iofferitems.com,]], 40-70% Off. Cheap Air Max 90 Shoes, Free Shipping! Buy Air Max 90 Now!nike air max 90 shoes (Email) (URL) - 28 May '10 - 02:02
Buy Nike Air Max 90 Shoes just $45-55 USD in [[http://www.iofferitems.com,]], 40-70% Off. Cheap Air Max 90 Shoes, Free Shipping! Buy Air Max 90 Now!nike air max 90 shoes (Email) (URL) - 28 May '10 - 05:22
[[http://www.airjordanshoescheap.com/]]air jordan shoes (Email) (URL) - 02 June '10 - 02:24
New Orleans Saints football jerseys sale at clearance price,get cheap jerseys and newest style NFL jerseys at mvpjersey.com [[http://www.mvpjersey.com/]]mvpjersey (Email) (URL) - 19 June '10 - 09:25
[[http://www.mbtshoeslatest.com]][[http://www.nikeairmaxshoe.com]]
Nike air max shoe (Email) (URL) - 24 June '10 - 07:51
American classic leather goods brand Coach, the style of which is simple and durable and are popular with most people. Coach Bags has good reputation, which are embraced by the high society and the common people. The original inspiration of designing Coach Handbags is from one softball glove. The first Coach Brand founder, Miles caha watch the softball game and found the special features of its gloves Coach Handbags 2010, which is convenient and durable and then he design Coach bags at once. As a result, it is popular by most consumers. Furthermore, these Cheap Coach Bags are at a competitive price which can easily accept by large people and now there are many Coach Outlet set up among many countries so you can buy it very easily.[[http://www.bag-salon.com]]
coach bags (Email) (URL) - 04 July '10 - 08:09
I totally love this article.ed hardy (Email) (URL) - 06 July '10 - 09:01
good day:) it’s my first time here but i really enjoy what you posts here in your site Michael Jordan Shoes.i will always visit your site for more updates. Lots of Good information in your posting Cheap Jordan Shoes, I bookmarked your blog post so I can visit again in the near future, Cheers :)Air jordan 1 (Email) (URL) - 03 August '10 - 06:52
Your post is awesome, but why not take a look at our site: [[http://www.p90xwork.com]]p90x dvd (Email) (URL) - 06 August '10 - 15:20
The first layer of MBT Shoes means a high quality MBT Footwear cowhide after processing of machine. The main feature of MBT first layer cowhide: Masai Shoes surface layer are made of grain materials with close woven fibers; MBT Sandals feature smooth feeling, good strength and great abrasive resistance. MBT Medical Shoes lining are composed of suede with thick fiber, big diameter and flocking wool on the surface. Comparing with second layer of Discount MBT Sheos, first layer of MBT Shoes Cheap with more smooth surface and better quality, can be worn longer time. Our website launches MBT Outlet with first layer cowhide, so you can feel free to shop here and get satisfied MBT Shoes Clearance, including MBT Sawa, MBT Sirima, MBT Kaya, MBT Changa and so on .Welcome to our website: [[http://www.mbtshoesmasai.com]]
mbtshoesmasai (Email) (URL) - 09 August '10 - 02:47
Buy a piece of ghd for yourself. Come and join us [[http://www.ghdiron-outlet.com/]] to win the cheap ghd.ghd outlet (Email) (URL) - 13 August '10 - 02:50
As we know, now GHD are loved by more and more people, which will save up to 45%.welcome to [[http://www.ghdoutlet-au.com/.]].ghd straighteners (Email) (URL) - 13 August '10 - 02:52
Come and join us [[http://www.ghdoutlet-uk.com/index.php]] to win the ghd iv styler.ghd hair straighteners (Email) (URL) - 13 August '10 - 02:53
[[http://www.avitoipadconverter.com]] AVI to iPad Converter is just the most suitable tool for iPad which let iPad user freely convert various video or audio files to iPad just with simple clicks.[[http://www.magicdvdtoipad.com]]
AVI to iPad (Email) (URL) - 16 August '10 - 05:47
I have to admit the post is well written and the point of view is quite interesting. I had no idea about this until now.online options trading (Email) (URL) - 19 August '10 - 09:56
It is very beautiful. Thank you for sharing. There is a site: [[http://www.lovemypursemall.com]]discount designer bags (Email) (URL) - 19 August '10 - 13:30
very cool article ,thanks for sharing the article!like my cool stuff .very useful.uCoolStuff is the leading China wholesaler for [[http://www.ucoolstuff.com]] cool stuff, [[http://www.ucoolstuff.com]] cool gifts , unusual gadgets and other unique gift ideas. We provide the very latest cool stuff and cool gifts for you
cool stuff (Email) (URL) - 25 August '10 - 07:05
excellent article , I added you to my [[http://www.china-wholesale-directory.c..]] Top China Wholesalers category.. thanks for sharing the article!China Wholesale Directory (Email) (URL) - 25 August '10 - 07:07