Purpose: Summarize memory compaction data in two modes:
    - periodic: aggregates stats and reports at fixed time intervals
    - cyclic:   reports one table row per compaction cycle with duration

Min dtrace version: 2.0.2 (The script may work with lower versions too,
    but it has not been tested with lower versions.)

Arguments:
1) For UEK8 and later
   need "-D uek8" as macro optional value in command line
2) For periodic output pass 0 (default) and interval (default 10) in seconds
   For per-cycle output pass 1

Output format:
    In periodic mode:

        Starting compaction monitor in periodic mode : <val> seconds interval (reports only on activity)
        [Time]                    [TASK]         MIso    MScn    MTkn    FFIso    FFScn    FFTkn    FIso    FScn    FTkn    MigOK  MigFail
        <Time stamp>
                                  <task name>    <val>   <val>   <val>   <val>    <val>    <val>    <val>   <val>   <val>   <val>  <val>
                                  <task name>    <val>   <val>   <val>   <val>    <val>    <val>    <val>   <val>   <val>   <val>  <val>
        <Time stamp>
                                  <task name>    <val>   <val>   <val>   <val>    <val>    <val>    <val>   <val>   <val>   <val>  <val>
                                  <task name>    <val>   <val>   <val>   <val>    <val>    <val>    <val>   <val>   <val>   <val>  <val>

    In per-cycle mode: 

        Starting compaction monitor in cyclic mode
        [Time]                    [TASK]         MIso    MScn    MTkn    FFIso    FFScn    FFTkn    FIso    FScn    FTkn    MigOK  MigFail  Dur(ms)
        <Time stamp>
                                  <task name>    <val>   <val>   <val>   <val>    <val>    <val>    <val>   <val>   <val>   <val>  <val>     <val> 
                                  <task name>    <val>   <val>   <val>   <val>    <val>    <val>    <val>   <val>   <val>   <val>  <val>     <val>
        <Time stamp>
                                  <task name>    <val>   <val>   <val>   <val>    <val>    <val>    <val>   <val>   <val>   <val>  <val>     <val>
                                  <task name>    <val>   <val>   <val>   <val>    <val>    <val>    <val>   <val>   <val>   <val>  <val>     <val>


Sample output:

# ./compaction_tracker.d 1 -Duek8
Starting compaction monitor in cyclic mode
[Time]                    [TASK]             MIso       MScn       MTkn      FFIso      FFScn      FFTkn       FIso       FScn       FTkn      MigOK    MigFail    Dur(ms)
2026 Apr  7 11:45:49      kcompactd0            0          0          0          0          0          0          0          0          0          0          0          0
2026 Apr  7 11:45:49      kcompactd0            0          0          0          0          0          0          0          0          0          0          0          0
2026 Apr  7 11:45:50      kcompactd0          727     266240      31952          0          0          0       4908    2276900      31970      31952          0        100
2026 Apr  7 11:46:22      kcompactd0            0          0          0          0          0          0          0          0          0          0          0          0
2026 Apr  7 11:46:22      kcompactd0            0          0          0          0          0          0          0          0          0          0          0          0
2026 Apr  7 11:46:22      kcompactd0          540     264704       1776          0          0          0       4558    2148529       1781       1776          0         16
^C

# ./compaction_tracker.d  -Duek8
Starting compaction monitor in periodic mode : 10 seconds interval (reports only on activity)
[Time]                    [TASK]             MIso       MScn       MTkn      FFIso      FFScn      FFTkn       FIso       FScn       FTkn      MigOK    MigFail
2026 Apr  7 11:46:57
                         kcompactd0          511     259584       1115          0          0          0       4541    2138369        704        704        411
2026 Apr  7 11:47:27
                         kcompactd0          516     258560       1451          0          0          0       4603    2168197       1572       1451          0
2026 Apr  7 11:48:07
                         kcompactd0          525     263168       3979          0          0          0       4548    2223917       3570       3570        409
2026 Apr  7 11:48:37
                         kcompactd0          527     261632       1558          0          0          0       4564    2146283       1567       1558          0
2026 Apr  7 11:49:07
                         kcompactd0          517     260608       1048          0          0          0       4550    2150015       1070       1048          0
^C


# ./compaction_tracker.d
Starting compaction monitor in periodic mode : 10 seconds interval (reports only on activity)
[Time]                    [TASK]             MIso       MScn       MTkn       FIso       FScn       FTkn      MigOK    MigFail
2026 Apr  7 11:50:17
                         kcompactd0          539     190042      25333       4734    2195265      25326      25326          7
2026 Apr  7 11:50:47
                         kcompactd0          390     197120       2049       4599    2173662       2035       2035         14
2026 Apr  7 11:51:17
                         kcompactd0          911     458752       5575       9209    4376259       5049       5049        526
2026 Apr  7 11:51:47
                         kcompactd0          484     237056       1911       4598    2145293       1619       1619        292
2026 Apr  7 11:52:27
                         kcompactd0          452     229376        508       4576    2140771        592        508          0
2026 Apr  7 11:52:57
                         kcompactd0          428     215040       1050       4591    2141872       1082       1050          0
2026 Apr  7 11:53:27
                         kcompactd0          422     211456       1577       4625    2141386       1576       1576          1
