Archive
Posts from 2010
Advanced Bash Scripting Guide
I came across the Advanced Bash Scripting guide while checking through my RSS feeds this morning. It has a ton of great examples and goes pretty in-depth on Bash scripting features. A good read for sure. =)
$ read more →Problems growing RAID6 MD devices on RHEL5 systems
I attempted to grow an existing RAID6 MD device this week, and ran into the following error when I performed the grow operation: It appears the ability to grow a RAID6 device was added in the Linux 2.6.21 ker nel, and this feature has yet to be backported to RHEL5 (the mdadm manual page implies that this should work, so I reckon there is a documentation mismatch). If you are enountering this error, you will need to switch to a newer kernel in order to be able to grow RAID6 devices on RHEL5 systems. 2.6.33 worked like a champ, and I hope this issue is addressed when RHEL6 ships.
$ read more →Debugging syslog-ng problems
While debugging the syslog-ng issue I mentioned previously, I needed to be able to observe the syslog-ng pattern matches as they occurred. The syslog-ng daemon has a couple of useful options to assist with this. The first is the "-e" option, which causes the daemon to log to stdout. The second is the "-F" option, which stops the daemon from forking…
$ read more →Breaking down system time usage in the Solaris kernel
I am frequently asked (or paged) to review system performance issues on our Solaris 10 hosts. I use the typical set of Solaris performance tools to observe what my systems are doing, and start drilling down once I know if the problem is with userland applications or in the kernel itself. When I observe issues with the Solaris kernel (these are typically represented by high system time values in vmstat), the first thing I typically do is fire up lockstat to see where the kernel is spending its time: If I see a function that stands out from the rest, I will use the lockstat '-f" option to drill down by the kernel function with that name, and use the "-s" option to print the call stack leading up this function: I use lockstat quite a bit to observe what the kernel is doing, and to help me figure out where I should look for answers in the opensolaris source code. It's also useful for determining if you are encountering a kernel bug, since you can compare the backtrace returned from lockstat with the OpenSolaris bug databases.
$ read more →Great write-up on AMD's RVI (Rapid Virtualization Indexing) hardware assisted virtualization feature
I came across an awesome Q&Q where Tim Mueting from AMD described the hardware virtualization features in AMD Opteron CPUs. The following excerpt from the interview was especially interesting: Prior to the introduction of RVI, software solutions used something called shadow paging to translate a virtual machine “guest” physical address to the system’s physical address. Because the original page table architecture wasn’t designed with virtualization in mind, a mirror of the page tables had to be created in software, called shadow page tables, to keep information about the physical location of “guest” memory. With shadow paging, the hypervisor must keep the shadow page tables “in sync” with the page tables in hardware…
$ read more →