11.01.2013 Views

IBM AIX Continuous Availability Features - IBM Redbooks

IBM AIX Continuous Availability Features - IBM Redbooks

IBM AIX Continuous Availability Features - IBM Redbooks

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

This option should be used with care because it can be expensive from a performance<br />

standpoint. When large ranges are freed and deferred, all the pages in the range are<br />

disclaimed. Presuming there is no error, all the memory will be faulted and zero filled the next<br />

time it is referenced. “Read” references to freed memory are medium severity errors, while<br />

“write” references always cause a system crash. If the disposition of medium severity errors is<br />

set to cause a system crash, the system will crash on a “read” reference.<br />

errctrl -c alloc.xmdbg deferred_free=<br />

Redzones for large allocations<br />

This option sets the frequency of redzone page construction. This option is specific for<br />

allocations of a page or more. With default error disposition in effect any “read” references to<br />

redzone pages will cause an error log event, and “write” references will cause a system<br />

crash.<br />

errctrl -c alloc.xmdbg redzone=<br />

VMM page state checks<br />

This option sets the frequency at which xmfree() will check page protection settings, storage<br />

key bits and pin counts for memory being freed back to a heap. Not all errors in this area are<br />

fatal. For instance, a page that has higher than expected pin count at free time will waste<br />

pinned storage, but there are usually no fatal consequences of that.<br />

When a page is returned that has a lower than expected pin count, has the wrong page<br />

protection settings, or has the wrong hardware storage key associated with it, the system will<br />

crash.<br />

errctrl -c alloc.xmdbg vmmcheck=<br />

3.9.5 XMDBG tunables not affected by error check level<br />

Memory leak percentage<br />

This tunable sets the percentage of heap memory that can be consumed before an error is<br />

logged. This is specific to the heaps controlled by the component. Heaps that are controlled<br />

by other components are not affected.<br />

For example, alloc.heap0 is a separate component that controls the heap used by the loader,<br />

and it uses a different percentage than the kernel_heap, which is controlled by alloc.xmdbg.<br />

Component level heaps created by heap_create() can be registered separately, and can be<br />

given different percentages. Refer to 3.9.7, “Heap registration for individual debug control” on<br />

page 137 for information about the individual heap registration mechanism.<br />

errctrl -c alloc.xmdbg memleak_pct=<br />

Tip: This tunable requires the user to make a judgment about how much storage should be<br />

consumed before a leak should be suspected. Users who do not have that information<br />

should not use the command. The default percentage is 100% (1024/1024).<br />

Memory leak errors are classified as LOW_SEVERITY errors and the default disposition is to<br />

ignore them. The error disposition for low severity errors can be modified to log an error or to<br />

cause a system crash. This tunable can be seen in KDB by using the xm -Q command. The<br />

field Ratio of memory to declare a memory leak shows the memory leak percentage.<br />

Memory leak count<br />

This tunable sets an outstanding allocation limit for all the fragment sizes. This is intended as<br />

an aid in catching memory leaks that are very slow-growing. If the total number of outstanding<br />

allocations of any fragment size grows beyond this limit, an error is logged. For example, an<br />

134 <strong>IBM</strong> <strong>AIX</strong> <strong>Continuous</strong> <strong>Availability</strong> <strong>Features</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!