Prefetch Technologies // Keeping your cache lines cozy

Archive

Posts from 2007

Catching SIGSEGVs as they happen

linuxMay 22, 2007 1 min read

Periodically situations arise where applications will write to memory that isn't mapped into their address space. On UNIX systems, this results in a SIGSEGV signal being sent to the offending process. If for some reason you can't get a core file, you can run the application under the control of the catchsegv utility. The following example shows the results that are displayed when a SIGSEGV signal is received, and the program was run under the control of the catchsegv script: This is a nifty utility, and can be useful for viewing the environment of a process at the time the segmentation violation occurred.

$ read more →

Implementing shared memory resource controls on Solaris hosts

solarisMay 22, 2007 3 min

With the availability of the Solaris 10 operating system, the way IPC facilities (e.g., shared memory, message queues, etc.) are managed changed. In previous releases of the Solaris operating system, editing /etc/system was the recommended way to increase the values of a given IPC tunable. With the release of Solaris 10, IPC tunables are now managed through the Solaris resource manager. The resource manager makes each tunable available through one or more resource controls, which provide an upper bound on the size of a given resource…

$ read more →

LDAP client deficiencies

securityMay 21, 2007 2 min

I have been spending a bit of time lately configuring Solaris and Linux hosts to authenticate against LDAP. Authentication works well on the surface, but the actual client implementations are somewhat lacking. Let's take the Linux pam_ldap module for instance. To authenticate a single session, the pam_ldap module performs thirty-three operations, which includes 7 TCP connections and a number of redundant searches…

$ read more →

An MD device that went too far

storageMay 16, 2007 1 min

Recently I was approached to help debug a problem with a Linux MD device that wouldn't start. When I ran raidstart to start the device, it spit out a number of errors on the console, and messages similar to the following were written to the system log: After pondering the error for a bit, it dawned on me that the partition table might be fubar. My theory proved correct, since partition six (the one associated with the md device that wouldn't start) had an ending cylinder count (7476) that was greater than the number of physical cylinders (7294) on the drive: Once I corrected the end cyclinder and recreated the file system, everything worked as expected. Now I have no idea how the system got into this state (I didn't build the system), since the installers I tested display errors when you specify an ending cylinder count that is larger than the maximum number of cylinders available.

$ read more →

Adding status support to the Solaris dd utility

solarisMay 14, 2007 1 min

I really dig Solaris, but it is missing a few basic features I have come to rely on. One of these features is the ability to send the dd utility a signal to get the status of a copy operation. Since Solaris is now opensource (or mostly opensource), I thought I would hack some code together to implement this feature. After a bit of coding (and testing), I requested a sponsor to putback my change into opensolaris…

$ read more →