Solaris remains the only operating system capable of microstate
accounting. Other operating systems like Linux, FreeBSD, and Windows can
not accurately report how their kernel spends an application's user
mode time and kernel mode time. Although, Linux kernel 3.0 says it
supports microstate accounting it only reports approximate time spent as
percentages. What that means is applications can hide their poor
performance in processor cycles.
Even if your kernel doesn't support microstate accounting you can still investigate your application for poor performance using commands like time, killall, timeout and vmstat.
The command time reports three psuedo time values of a running process: real time, user time, and system time. Only real time is valuable, but it isn't actually real time. Run time using your application's absolute path as its argument:
time <command> 2>&1;
Once your application opens, guide your application to the point you want to check then kill it by sending your application the signal SIGTERM, SIGSTOP or SIGKILL. (You could also start using it as you normally would then kill it when it starts hanging or slowing down.) Run killall to kill all processes owned by your application:
killall -s <signal> <command or pid>;
Run your application again, but this time use your application's real time as the argument for the command timeout along with "vmstat 1". The command timeout runs vmstat every 1 second for the amount of real time. Guide your application to the same point you wanted to check before. The command vmstat will display CPU information every second leading up to your checkpoint including the processing of the kill signal. Here's the command to run:
Even if your kernel doesn't support microstate accounting you can still investigate your application for poor performance using commands like time, killall, timeout and vmstat.
The command time reports three psuedo time values of a running process: real time, user time, and system time. Only real time is valuable, but it isn't actually real time. Run time using your application's absolute path as its argument:
time <command> 2>&1;
Once your application opens, guide your application to the point you want to check then kill it by sending your application the signal SIGTERM, SIGSTOP or SIGKILL. (You could also start using it as you normally would then kill it when it starts hanging or slowing down.) Run killall to kill all processes owned by your application:
killall -s <signal> <command or pid>;
Run your application again, but this time use your application's real time as the argument for the command timeout along with "vmstat 1". The command timeout runs vmstat every 1 second for the amount of real time. Guide your application to the same point you wanted to check before. The command vmstat will display CPU information every second leading up to your checkpoint including the processing of the kill signal. Here's the command to run:
<command> 2>&1; timeout <real time> vmstat 1 2>&1;
Do you have a suggestion about how to improve this blog? Let's talk about it. Contact me at David.Brenner.Jr@Gmail.com or 720-584-5229.
Comments
Post a Comment
Comments to this blog will be reviewed within 72 hours. No trolling please