Swap File Utilization

In this example, we report excessive swap file utilization, exhaustion of system virtual memory.

The SwapExhausted script might send an alert message like the following:

                                PIKT ALERT
                         Wed Dec 12 21:13:21 2001
                                  kiev2

EMERGENCY:
    SwapExhausted
        Report when the system swapfile is exhausted

        swap utilization is 100%:

        swapfile             dev  swaplo blocks   free
        /dev/dsk/c0t1d0s1   32,9       8 1025112      0

        swap                  662992  655952    7040    99%    /tmp

        655652  /tmp/SAS_worka0000268D
        4       /tmp/screens

        contents of /tmp:

        total 624
        drwx------   2 droulser perf         473 Dec 12 17:41 SAS_worka0000268D
        drwxr-xr-x   2 root     other         69 Dec 12 08:14 screens
        -rw-rw-r--   1 root     sys       301828 Dec 12 19:32 ups_data

        last pid: 11924;  load averages:  0.27,  0.07,  0.05    21:13:24
        34 processes:  33 sleeping, 1 on cpu

        Memory: 224M real, 4320K free, 501M swap in use


          PID USERNAME THR PRI NICE  SIZE   RES STATE   TIME    CPU COMMAND
        11924 root       1   0    0 1580K 1004K cpu0    0:01  1.27% top
            1 root       1  58    0  708K  164K sleep   0:08  0.09% init
         3524 droulser   4  51    0   24M   20M run     2:10 19.27% sas
        ...

In the SwapExhausted Pikt script following, note how we go beyond reporting just the fact that system swap space is exhausted.  We also provide diagnostic information to suggest possible causes.

#if solaris

SwapExhausted           // note: we should seriously consider having this
                        // script auto-installing auxiliary swap files, at
                        // least in some situations; we might then have
                        // a system startup script auto-delete these auxiliary
                        // swap files on system reboot

        init
                status =piktstatus
                level =piktlevel
                task "Report when the system swapfile is exhausted"
                input proc "=swap -l | =behead(1)"
                dat $swapfile 1
                dat #blocks   $-1
                dat #free     $
                // keys $swapfile

        begin
                set #blksum = 0
                set #fresum = 0
                set #hr = #hour()

        rule
                set $line[#innum()] = $inlin
                set #blksum += #blocks
                set #fresum += #free

        end
                set #use = (#blksum-#fresum)/#blksum
                if #use >= 100%
                        output mail "swap utilization is
                                     $text(100*#use,0)%:=newline"
                        output mail "swapfile           dev  swaplo blocks   free"
                        for #i=1 #i<=#innum() #i+=1
                                output mail $line[#i]
                        endfor
                        output mail =newline
                        output mail $command("=dfk /tmp | =behead(1)")
                        =dutop(10, /tmp)
                        output mail "contents of /tmp:=newline"
                        =outputproc(mail, "=ll /tmp")
                        output mail =newline
                        =toptop(20)
                endif

#endif  // solaris

This is just one program example.  You could add rules, or write new scripts, for example to:  report when system virtual memory runs low, create additional swap files on the fly, log memory usage over time, log and report per-process or per-user memory usage, etc.

For more examples, see Samples.

 
Home | FAQ | News | Intro | Samples | Tutorial | Reference | Software
Developer's Notes | Licensing | Authors | Pikt-Users | Pikt-Workers | Related Projects | Site Index | Privacy Policy | Contact Us
Page best viewed at 1024x768 or greater.   Page last updated 2019-01-12.   This site is PIKT® powered.
Copyright © 1998-2019 Robert Osterlund. All rights reserved.
Home FAQ News Intro Samples Tutorial Reference Software
PIKT Logo
PIKT Page Title
Learn about
config file
formats