+1. (I cheated -- I've seen the case materials ahead of time. :-) This enhancement (and the need to perform subsequent actions to decompress the crash dump) probably deserves special mention in the Release Notes. I'd also add, in retrospect, it seems like perhaps mdb ought to have its man page updated with at least a passing reference to compressed crash dumps (and the step required to decompress them.)
-- Garrett Sherry Moore wrote: > I am sponsoring this fasttrack for Dave Plauger and Steve Sistare. The > timer is set for next Tuesday August 18, 2009. Requesting Micro/Patch > binding. > > The one-pager, project specification and man page diffs are available > in the materials directory. > > Sherry Moore > > Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI > This information is Copyright 2009 Sun Microsystems > > 1. Introduction > 1.1. Project/Component Working Name: > Fast Crash Dump > 1.2. Name of Document Author/Supplier: > Dave Plauger > Steve Sistare > 1.3. Date of This Document: > August 11, 2009 > > 4. Technical Description: > 4.1. Details: > New command line flags to dumpadm(1M) control how core files > are to be saved. The setting is saved across reboots in > /etc/dumpadm.conf. The new default behavior is to save files > in compressed format instead of always uncompressing them, as > it does currently. > > If saving compressed, savecore(1M) copies the core file from > the dump device to vmdump.N, where N is the usual dump > integer. Copying a core file is much faster than uncompressing > it into unix.N and vmcore.N images; and it takes up much less > disk space. On systems that dump to the swap area there is > less risk that the core image will be over-written by swap > activity before it can be extracted. > > savecore(1M) performance has been improved by reading the dump > file with fread(3C) instead of pread(2). > > The compressed core dump format is largely unchanged. The dump > header and the dump version number are unchanged. However, > there are changes to the way memory pages are saved within the > compressed file. A compressed dump file must be uncompressed > first, by manually running savecore(1M) a second time, before > it can be used by other tools. Therefore, there is no impact > on mdb(1) due to the changes in compression methods. Once the > core dump has been uncompressed, the resulting unix.N and > vmcore.N files are in the same format as before. > > This project has introduced a bzip2 compression library [2] > into Solaris common code, where it is shared by savecore(1M) > and the kernel. The current lzjb compression algorithm is much > faster, but also much weaker. The bzip2 library requires much > more memory and compute resources. If these resources are > available during panic, the kernel will save memory pages with > bzip2 instead of lzjb, and savecore(1M) will use the same > bzip2 library in order to uncompress the pages. > > The kernel function dumpsys() does most of the work in > creating core dump images. The section that saves memory pages > has been expanded to support parallelism. Most kernel services > are not available during panic. Instead, CPUs spinning in > panic_idle() call into dumpsys() and coordinate via > memory. These helper CPUs copy pages, compress them, and > produce streams of compression data that savecore(1M) can > uncompress. The panic CPU acts as the master and does all page > mapping and I/O operations. > > There are two compression modes in this implementation. The > older method, lzjb is the default on smaller systems. With up > to 4 CPUs, it usually speeds up dump by 2-4 times. The new > bzip2 library is employed on large systems with many spare > CPUs and memory. This can speed up dumps by 4-10 times. The > mode is chosen at crash time based on processor type, number > of CPUs, and available free memory for buffers. > > The existing savecore -L (live dump) option creates a dump > image on a running system. This option is available only when > there is a dedicated dump device. In this case, the dump > helpers in the kernel run as system tasks. > > file(1) can detect the new compressed format. For example, > # file vmcore.0 > vmcore.0: SunOS 5.11 snv_81 64-bit SPARC crash dump from 'oaf415' > # file vmdump.0 > vmdump.0: SunOS 5.11 snv_81 64-bit SPARC compressed crash dump from > 'oaf415' > > For more information, see the project specification in the > materials directory. > > 4.2. Bug/RFE Number(s): > > RFE 6828976 Fast Crash Dump > > 4.5. Interfaces: > > New command line flags to dumpadm(1M). And additions to the > meaning of existing flags to savecore(1M). > > Micro/patch binding requested. > > INTERFACE COMMITMENT LEVEL COMMENT > > dumpadm -z (1M) Committed Enables save compressed, or not. > > > 4.6. Doc Impact: > > Man page changes for dumpadm(1M) and savecore(1M). > > See appendix A for diffs. > > 6. Resources and Schedule: > > 6.4. Product Approval Committee requested information: > 6.4.1. Consolidation or Component Name: > OS/Net > > 6.5. ARC review type: Fasttrack > > 6.6. ARC Exposure: Open. > > A. Man pages > A.1 dumpadm(1M) > A.2 savecore(1M) > > A.1 Man pages dumpadm(1M) > > > System Administration Commands dumpadm(1M) > > NAME > dumpadm - configure operating system crash dump > > SYNOPSIS > /usr/sbin/dumpadm [-nuy] [-c content-type] [-d dump-device] > [-m mink | minm | min%] [-s savecore-dir] > [-r root-dir] [-z y | n] | > > DESCRIPTION > The dumpadm program is an administrative command that > manages the configuration of the operating system crash dump > facility. A crash dump is a disk copy of the physical memory > of the computer at the time of a fatal system error. When a > fatal operating system error occurs, a message describing > the error is printed to the console. The operating system > then generates a crash dump by writing the contents of phy- > sical memory to a predetermined dump device, which is typi- > cally a local disk partition. The dump device can be config- > ured by way of dumpadm. Once the crash dump has been written > to the dump device, the system will reboot. > > Fatal operating system errors can be caused by bugs in the | > operating system, its associated device drivers and loadable | > modules, or by faulty hardware. Whatever the cause, the | > crash dump itself provides invaluable information to your | > support engineer to aid in diagnosing the problem. As such, | > it is vital that the crash dump be retrieved and given to | > your support provider. Following an operating system crash, | > the savecore(1M) utility is executed automatically during | > boot to retrieve the crash dump from the dump device, and | > write it to your file system in compressed form to a file | > name vmdump.X, where X is an integer identifying the dump. | > Afterwards, savecore(1M) can be invoked on the same or | > another system to expand the compressed crash dump to a pair | > of files named unix.X and vmcore.X. The directory in which | > the crash dump is saved on reboot can also be configured | > using dumpadm. > > > For systems with a UFS root file system, the default dump | > device is configured to be an appropriate swap partition. | > Swap partitions are disk partitions reserved as virtual | > memory backing store for the operating system. Thus, no per- | > manent information resides in swap to be overwritten by the | > dump. See swap(1M). For systems with a ZFS root file system, | > dedicated ZFS volumes are used for swap and dump areas. For | > further information about setting up a dump area with ZFS, | > see the ZFS Administration Guide. To view the current dump | > configuration, use the dumpadm command with no arguments: > > example# dumpadm > > Dump content: kernel pages > Dump device: /dev/dsk/c0t0d0s1 (swap) > Savecore directory: /var/crash/saturn > Savecore enabled: yes > Save compressed: yes | > > When no options are specified, dumpadm prints the current | > crash dump configuration. The example shows the set of | > default values: the dump content is set to kernel memory | > pages only, the dump device is a swap disk partition, the | > directory for savecore files is set to /var/crash/hostname. | > savecore(1M) is set to run automatically on reboot and save | > the crash dump in a compressed format. > > -z y | n | > Modify the dump configuration to control the operation | > of savecore on reboot. The options are y (yes) to enable | > saving core files in a compressed format, and n (no) | > automatically uncompress the crash dump file. The | > default is yes, because crash dump files can be very | > large and will require less file system space if saved | > in a compressed format. | > > > EXAMPLES > Example 1 Reconfiguring The Dump Device To A Dedicated Dump > Device: > > The following command reconfigures the dump device to a > dedicated dump device: > > example# dumpadm -d /dev/dsk/c0t2d0s2 > > Dump content: kernel pages > Dump device: /dev/dsk/c0t2d0s2 (dedicated) > Savecore directory: /var/crash/saturn > Savecore enabled: yes > Save compressed: yes | > > A.2 Man pages for savecore(1M) > > System Administration Commands savecore(1M) > > NAME > savecore - save a crash dump of the operating system > > SYNOPSIS > /usr/bin/savecore [-Lvd] [-f dumpfile] [directory] > > > DESCRIPTION > The savecore utility saves a crash dump of the kernel > (assuming that one was made) and writes a reboot message in > the shutdown log. It is invoked by the dumpadm service each > time the system boots. > > savecore can be configured by dumpadm(1M) to save crash dump | > data in either a compressed or uncompressed format. For the | > compressed format, savecore saves the crash dump data in the | > file directory/vmdump.N, where N in the name is replaced by | > a number which grows every time savecore is run in that | > directory. The compressed file can be uncompressed in a | > separate step using the -f dumpfile option. For the | > uncompressed format, savecore saves the crash dump data in | > the file directory/vmcore.N and the kernel's namelist in | > directory/unix.N. > > OPTIONS > > -f dumpfile Save a crash dump from the specified file | > instead of from the system's current dump | > device. When given directory/vmdump.N, | > uncompress the file to vmcore.N and unix.N, | > where N is the same number as in the | > compressed name. | > > This option may also be useful if the infor- | > mation stored on the dump device has been | > copied to an on-disk file by means of the | > dd(1M) command. > > FILES > directory/vmdump.n | > directory/vmcore.n > directory/unix.n > >