/*
 * Copyright (c) 2000,2004,2007-2008 Silicon Graphics, Inc.  All Rights Reserved.
 * Portions Copyright (c) International Business Machines Corp., 2002
 * Portions Copyright (c) 2007-2009 Aconex.  All Rights Reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2 of the License, or (at your
 * option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * for more details.
 */

root {
    hinv
    kernel
    mem
    swap
    network
    disk
    filesys
    swapdev
    rpc
    nfs
    nfs3
    nfs4
    proc
    xfs
    pmda
    ipc 
    vfs
    quota
    tmpfs
    sysfs
    cgroup		60:*:*
}

hinv {
    physmem		60:1:9
    pagesize		60:1:11
    ncpu		60:0:32
    ndisk		60:0:33
    nfilesys		60:5:0
    machine		60:18:7
    map		
    cpu
}

hinv.map {
    scsi		60:15:0
    cpu_num		60:18:6
    cpu_node		60:18:8
}

hinv.cpu {
    clock		60:18:0
    vendor		60:18:1
    model		60:18:2
    stepping		60:18:3
    cache		60:18:4
    bogomips		60:18:5
}

kernel {
    all
    percpu
    pernode
    uname
}

kernel.all {
    cpu
    load		60:2:0
    intr		60:0:12
    pswitch		60:0:13
    sysfork		60:0:14
    syscall		60:4:1
    hz			60:0:48
    uptime		60:26:0
    idletime		60:26:1
    nusers		60:25:0
    lastpid		60:2:1
    runnable		60:2:2
    nprocs		60:2:3
}

kernel.all.cpu {
    user		60:0:20
    nice		60:0:21
    sys			60:0:22
    idle		60:0:23
    intr		60:0:34
    wait
    irq
    steal		60:0:55
    guest		60:0:60
}

kernel.all.cpu.wait {
    total		60:0:35
}

kernel.all.cpu.irq {
    soft		60:0:53
    hard		60:0:54
}

kernel.percpu {
    interrupts		60:4:0
    syscall		60:4:2
    cpu
}

kernel.percpu.cpu {
    user		60:0:0
    nice		60:0:1
    sys			60:0:2
    idle		60:0:3
    intr		60:0:31
    wait
    irq
    steal		60:0:58
    guest		60:0:61
}

kernel.percpu.cpu.wait {
    total		60:0:30
}

kernel.percpu.cpu.irq {
    soft		60:0:56
    hard		60:0:57
}

kernel.pernode {
    cpu
}

kernel.pernode.cpu {
    user		60:0:62
    nice		60:0:63
    sys			60:0:64
    idle		60:0:65
    intr		60:0:66
    wait
    irq
    steal		60:0:67
    guest		60:0:68
}

kernel.pernode.cpu.wait {
    total		60:0:69
}

kernel.pernode.cpu.irq {
    soft		60:0:70
    hard		60:0:71
}

kernel.uname {
    release		60:12:0
    version		60:12:1
    sysname		60:12:2
    machine		60:12:3
    nodename		60:12:4
    distro		60:12:7
}

ipc {
    sem
    msg
    shm 
}

ipc.sem {
    max_semmap		60:21:0
    max_semid		60:21:1
    max_sem		60:21:2
    num_undo		60:21:3
    max_perid		60:21:4
    max_ops		60:21:5
    max_undoent		60:21:6
    sz_semundo		60:21:7
    max_semval		60:21:8
    max_exit		60:21:9
}

ipc.msg {
    sz_pool		60:22:0
    mapent		60:22:1
    max_msgsz		60:22:2
    max_defmsgq		60:22:3
    max_msgqid		60:22:4
    max_msgseg		60:22:5
    num_smsghdr		60:22:6
    max_seg		60:22:7
}

ipc.shm {
    max_segsz		60:23:0
    min_segsz		60:23:1
    max_seg		60:23:2
    max_segproc		60:23:3
    max_shmsys		60:23:4
}

pmda {
    uname		60:12:5
    version		60:12:6
}

disk {
    dev
    all
    partitions
}

disk.dev {
    read		60:0:4
    write		60:0:5
    total		60:0:28
    blkread		60:0:6
    blkwrite		60:0:7
    blktotal		60:0:36
    read_bytes		60:0:38
    write_bytes		60:0:39
    total_bytes		60:0:40
    read_merge		60:0:49
    write_merge		60:0:50
    avactive		60:0:46
    aveq		60:0:47
    scheduler		60:0:59
}

disk.all {
    read		60:0:24
    write		60:0:25
    total		60:0:29
    blkread		60:0:26
    blkwrite		60:0:27
    blktotal		60:0:37
    read_bytes		60:0:41
    write_bytes		60:0:42
    total_bytes		60:0:43
    read_merge		60:0:51
    write_merge		60:0:52
    avactive		60:0:44
    aveq		60:0:45
}

disk.partitions {
    read		60:10:0
    write		60:10:1
    total		60:10:2
    blkread		60:10:3
    blkwrite		60:10:4
    blktotal		60:10:5
    read_bytes		60:10:6
    write_bytes		60:10:7
    total_bytes		60:10:8
}

mem {
    physmem		60:1:0
    freemem		60:1:10
    util
    numa
    slabinfo
    vmstat
}

mem.util {
    used		60:1:1
    free		60:1:2
    shared		60:1:3
    bufmem		60:1:4
    cached		60:1:5
    other		60:1:12
    swapCached		60:1:13
    active		60:1:14
    inactive		60:1:15
    highTotal		60:1:16
    highFree		60:1:17
    lowTotal		60:1:18
    lowFree		60:1:19
    swapTotal		60:1:20
    swapFree		60:1:21
    dirty		60:1:22
    writeback		60:1:23
    mapped		60:1:24
    slab		60:1:25
    committed_AS	60:1:26
    pageTables		60:1:27
    reverseMaps		60:1:28
    cache_clean		60:1:29
    anonpages		60:1:30
    commitLimit		60:1:31
    bounce		60:1:32
    NFS_Unstable	60:1:33
    slabReclaimable	60:1:34
    slabUnreclaimable	60:1:35
    active_anon		60:1:36
    inactive_anon	60:1:37
    active_file		60:1:38
    inactive_file	60:1:39
    unevictable		60:1:40
    mlocked		60:1:41
    shmem		60:1:42
    kernelStack		60:1:43
    hugepagesTotal	60:1:44
    hugepagesFree	60:1:45
    hugepagesRsvd	60:1:46
    hugepagesSurp	60:1:47
    directMap4k		60:1:48
    directMap2M		60:1:49
    vmallocTotal	60:1:50
    vmallocUsed		60:1:51
    vmallocChunk	60:1:52
    mmap_copy		60:1:53
    quicklists		60:1:54
    corrupthardware	60:1:55
    anonhugepages	60:1:56
}

mem.numa {
    util
    alloc
}

mem.numa.util {
    total		60:36:0
    free		60:36:1
    used		60:36:2
    active		60:36:3
    inactive		60:36:4
    active_anon		60:36:5
    inactive_anon	60:36:6
    active_file		60:36:7
    inactive_file	60:36:8
    highTotal		60:36:9
    highFree		60:36:10
    lowTotal		60:36:11
    lowFree		60:36:12
    unevictable		60:36:13
    mlocked		60:36:14
    dirty		60:36:15
    writeback		60:36:16
    filePages		60:36:17
    mapped		60:36:18
    anonpages		60:36:19
    shmem		60:36:20
    kernelStack		60:36:21
    pageTables		60:36:22
    NFS_Unstable	60:36:23
    bounce		60:36:24
    writebackTmp	60:36:25
    slab		60:36:26
    slabReclaimable	60:36:27
    slabUnreclaimable	60:36:28
    hugepagesTotal	60:36:29
    hugepagesFree	60:36:30
    hugepagesSurp	60:36:31
}

mem.numa.alloc {
    hit			60:36:32
    miss		60:36:33
    foreign		60:36:34
    interleave_hit	60:36:35
    local_node		60:36:36
    other_node		60:36:37
} 

swap {
    pagesin		60:0:8
    pagesout		60:0:9
    in			60:0:10
    out			60:0:11
    free 		60:1:8
    length	 	60:1:6
    used 		60:1:7
}

network {
    interface
    sockstat
    ip
    icmp
    tcp
    udp
    udplite
    tcpconn
    ib
}

network.interface {
    collisions		60:3:13
    in
    out
    total
    mtu			60:3:21
    speed		60:3:22
    baudrate		60:3:23
    duplex		60:3:24
    up			60:3:25
    running		60:3:26
    inet_addr		60:33:0
}

network.interface.in {
    bytes		60:3:0
    packets		60:3:1
    errors		60:3:2
    drops		60:3:3
    fifo		60:3:4
    frame		60:3:5
    compressed		60:3:6
    mcasts		60:3:7
}

network.interface.out {
    bytes		60:3:8
    packets		60:3:9
    errors		60:3:10
    drops		60:3:11
    fifo		60:3:12
    carrier		60:3:14
    compressed		60:3:15
}

network.interface.total {
    bytes		60:3:16
    packets		60:3:17
    errors		60:3:18
    drops		60:3:19
    mcasts		60:3:20
}

network.sockstat {
    tcp
    udp
    raw
}

network.sockstat.tcp {
    inuse 		60:11:0
    highest 		60:11:1
    util 		60:11:2
}

network.sockstat.udp {
    inuse 		60:11:3
    highest 		60:11:4
    util 		60:11:5
}

network.sockstat.raw {
    inuse 		60:11:6
    highest 		60:11:7
    util 		60:11:8
}

network.ip {
    forwarding		60:14:00
    defaultttl		60:14:01
    inreceives		60:14:02
    inhdrerrors		60:14:03
    inaddrerrors	60:14:04
    forwdatagrams	60:14:05
    inunknownprotos	60:14:06
    indiscards		60:14:07
    indelivers		60:14:08
    outrequests		60:14:09
    outdiscards		60:14:10
    outnoroutes		60:14:11
    reasmtimeout	60:14:12
    reasmreqds		60:14:13
    reasmoks		60:14:14
    reasmfails		60:14:15
    fragoks		60:14:16
    fragfails		60:14:17
    fragcreates		60:14:18
}

network.icmp {
    inmsgs		60:14:20
    inerrors		60:14:21
    indestunreachs	60:14:22
    intimeexcds		60:14:23
    inparmprobs		60:14:24
    insrcquenchs	60:14:25
    inredirects		60:14:26
    inechos		60:14:27
    inechoreps		60:14:28
    intimestamps	60:14:29
    intimestampreps	60:14:30
    inaddrmasks		60:14:31
    inaddrmaskreps	60:14:32
    outmsgs		60:14:33
    outerrors		60:14:34
    outdestunreachs	60:14:35
    outtimeexcds	60:14:36
    outparmprobs	60:14:37
    outsrcquenchs	60:14:38
    outredirects	60:14:39
    outechos		60:14:40
    outechoreps		60:14:41
    outtimestamps	60:14:42
    outtimestampreps	60:14:43
    outaddrmasks	60:14:44
    outaddrmaskreps	60:14:45
}

network.tcp {
    rtoalgorithm	60:14:50
    rtomin		60:14:51
    rtomax		60:14:52
    maxconn		60:14:53
    activeopens		60:14:54
    passiveopens	60:14:55
    attemptfails	60:14:56
    estabresets		60:14:57
    currestab		60:14:58
    insegs		60:14:59
    outsegs		60:14:60
    retranssegs		60:14:61
    inerrs		60:14:62
    outrsts		60:14:63
}

network.udp {
    indatagrams		60:14:70
    noports		60:14:71
    inerrors		60:14:72
    outdatagrams	60:14:74
    recvbuferrors	60:14:75
    sndbuferrors	60:14:76
}

network.udplite {
    indatagrams		60:14:77
    noports		60:14:78
    inerrors		60:14:79
    outdatagrams	60:14:80
    recvbuferrors	60:14:81
    sndbuferrors	60:14:82
}

filesys {
    capacity		60:5:1
    used		60:5:2
    free		60:5:3
    maxfiles		60:5:4
    usedfiles		60:5:5
    freefiles		60:5:6
    mountdir		60:5:7
    full		60:5:8
    blocksize           60:5:9
    avail               60:5:10
    readonly            60:5:11
}

tmpfs {
    capacity		60:34:1
    used		60:34:2
    free		60:34:3
    maxfiles		60:34:4
    usedfiles		60:34:5
    freefiles		60:34:6
    full		60:34:7
}

swapdev {
    free		60:6:0
    length		60:6:1
    maxswap		60:6:2
    vlength		60:6:3
    priority		60:6:4
}

nfs {
    client
    server
}

nfs.client {
    calls		60:7:1
    reqs		60:7:4
}

nfs.server {
    calls		60:7:50
    reqs		60:7:12
}

rpc {
    client
    server
}

rpc.client {
    rpccnt		60:7:20
    rpcretrans		60:7:21
    rpcauthrefresh	60:7:22
    netcnt		60:7:24
    netudpcnt		60:7:25
    nettcpcnt		60:7:26
    nettcpconn		60:7:27
}

rpc.server {
    rpccnt		60:7:30
    rpcerr		60:7:31
    rpcbadfmt		60:7:32
    rpcbadauth		60:7:33
    rpcbadclnt		60:7:34
    rchits		60:7:35
    rcmisses		60:7:36
    rcnocache		60:7:37
    fh_cached		60:7:38
    fh_valid		60:7:39
    fh_fixup		60:7:40
    fh_lookup		60:7:41
    fh_stale		60:7:42
    fh_concurrent	60:7:43
    netcnt		60:7:44
    netudpcnt		60:7:45
    nettcpcnt		60:7:46
    nettcpconn		60:7:47
    fh_anon		60:7:51
    fh_nocache_dir	60:7:52
    fh_nocache_nondir	60:7:53
    io_read		60:7:54
    io_write		60:7:55
    th_cnt		60:7:56
    th_fullcnt		60:7:57
}

nfs3 {
    client
    server
}

nfs3.client {
    calls		60:7:60
    reqs		60:7:61
}

nfs3.server {
    calls		60:7:62
    reqs		60:7:63
}

nfs4 {
    client
    server
}

nfs4.client {
    calls		60:7:64
    reqs		60:7:65
}

nfs4.server {
    calls		60:7:66
    reqs		60:7:67
}

proc {
    nprocs		60:8:99
    runq
}

proc.runq {
    runnable		60:13:0
    blocked		60:13:1
    sleeping		60:13:2
    stopped		60:13:3
    swapped		60:13:4
    defunct		60:13:5
    unknown		60:13:6
    kernel		60:13:7
}

xfs {
    allocs
    alloc_btree
    block_map
    bmap_btree
    dir_ops
    transactions
    inode_ops
    log
    log_tail
    xstrat
    write		60:16:51
    write_bytes		60:16:52
    read		60:16:53
    read_bytes		60:16:54
    attr
    quota
    iflush_count	60:16:67
    icluster_flushcnt	60:16:68
    icluster_flushinode	60:16:69
    buffer
    vnodes
    control
    btree
}

xfs.allocs {
    alloc_extent	60:16:0
    alloc_block		60:16:1
    free_extent		60:16:2
    free_block		60:16:3
}


xfs.alloc_btree {
    lookup		60:16:4
    compare		60:16:5
    insrec		60:16:6
    delrec		60:16:7
}

xfs.block_map {
    read_ops		60:16:8
    write_ops		60:16:9
    unmap		60:16:10
    add_exlist		60:16:11
    del_exlist		60:16:12
    look_exlist		60:16:13
    cmp_exlist		60:16:14
}

xfs.bmap_btree {
    lookup		60:16:15
    compare		60:16:16
    insrec		60:16:17
    delrec		60:16:18
}

xfs.dir_ops {
    lookup		60:16:19
    create		60:16:20
    remove		60:16:21
    getdents		60:16:22
}

xfs.transactions {
    sync		60:16:23
    async		60:16:24
    empty		60:16:25
}

xfs.inode_ops {
    ig_attempts		60:16:26
    ig_found		60:16:27
    ig_frecycle		60:16:28
    ig_missed		60:16:29
    ig_dup		60:16:30
    ig_reclaims		60:16:31
    ig_attrchg		60:16:32
}

xfs.log {
    writes		60:16:33
    blocks		60:16:34
    write_ratio		60:16:78
    noiclogs		60:16:35
    force		60:16:36
    force_sleep		60:16:37
}

xfs.log_tail {
    try_logspace	60:16:38
    sleep_logspace	60:16:39
    push_ail
}

xfs.log_tail.push_ail {
    pushes		60:16:40
    success		60:16:41
    pushbuf		60:16:42
    pinned		60:16:43
    locked		60:16:44
    flushing		60:16:45
    restarts		60:16:46
    flush		60:16:47
}

xfs.xstrat {
    bytes		60:16:48
    quick		60:16:49
    split		60:16:50
}

xfs.attr {
    get			60:16:55
    set			60:16:56
    remove		60:16:57
    list		60:16:58
}

xfs.quota {
    reclaims		60:16:59
    reclaim_misses	60:16:60
    dquot_dups		60:16:61
    cachemisses		60:16:62
    cachehits		60:16:63
    wants		60:16:64
    shake_reclaims	60:16:65
    inact_reclaims	60:16:66
}

xfs.vnodes {
    active		60:16:70
    alloc		60:16:71
    get			60:16:72
    hold		60:16:73
    rele		60:16:74
    reclaim		60:16:75
    remove		60:16:76
    free		60:16:77
}

xfs.control {
    reset		60:16:79
}

xfs.buffer {
    get                 60:17:0
    create              60:17:1
    get_locked          60:17:2
    get_locked_waited   60:17:3
    busy_locked         60:17:4
    miss_locked         60:17:5
    page_retries        60:17:6
    page_found          60:17:7
    get_read            60:17:8
}

xfs.btree {
    alloc_blocks
    alloc_contig
    block_map
    inode
}

xfs.btree.alloc_blocks {
    lookup		60:16:80
    compare		60:16:81
    insrec		60:16:82
    delrec		60:16:83
    newroot		60:16:84
    killroot		60:16:85
    increment		60:16:86
    decrement		60:16:87
    lshift		60:16:88
    rshift		60:16:89
    split		60:16:90
    join		60:16:91
    alloc		60:16:92
    free		60:16:93
    moves		60:16:94
}

xfs.btree.alloc_contig {
    lookup		60:16:95
    compare		60:16:96
    insrec		60:16:97
    delrec		60:16:98
    newroot		60:16:99
    killroot		60:16:100
    increment		60:16:101
    decrement		60:16:102
    lshift		60:16:103
    rshift		60:16:104
    split		60:16:105
    join		60:16:106
    alloc		60:16:107
    free		60:16:108
    moves		60:16:109
}

xfs.btree.block_map {
    lookup		60:16:110
    compare		60:16:111
    insrec		60:16:112
    delrec		60:16:113
    newroot		60:16:114
    killroot		60:16:115
    increment		60:16:116
    decrement		60:16:117
    lshift		60:16:118
    rshift		60:16:119
    split		60:16:120
    join		60:16:121
    alloc		60:16:122
    free		60:16:123
    moves		60:16:124
}

xfs.btree.inode {
    lookup		60:16:125
    compare		60:16:126
    insrec		60:16:127
    delrec		60:16:128
    newroot		60:16:129
    killroot		60:16:130
    increment		60:16:131
    decrement		60:16:132
    lshift		60:16:133
    rshift		60:16:134
    split		60:16:135
    join		60:16:136
    alloc		60:16:137
    free		60:16:138
    moves		60:16:139
}

network.tcpconn {
    established		60:19:1
    syn_sent		60:19:2
    syn_recv		60:19:3
    fin_wait1		60:19:4
    fin_wait2		60:19:5
    time_wait		60:19:6
    close		60:19:7
    close_wait		60:19:8
    last_ack		60:19:9
    listen		60:19:10
    closing		60:19:11
}

mem.slabinfo {
    objects
    slabs
}

mem.slabinfo.objects {
    active		60:20:0
    total		60:20:1
    size		60:20:2
}

mem.slabinfo.slabs {
    active		60:20:3
    total		60:20:4
    pages_per_slab	60:20:5
    objects_per_slab	60:20:6
    total_size		60:20:7
}

mem.vmstat {
	/* sorted by name to make maintenance easier */
        allocstall	60:28:35
        kswapd_inodesteal	60:28:33
        kswapd_steal	60:28:32
	nr_anon_pages	60:28:39
	nr_bounce	60:28:40
        nr_dirty	60:28:0
        nr_mapped	60:28:4
        nr_page_table_pages 60:28:3
        nr_slab		60:28:5
        nr_slab_reclaimable		60:28:37
	nr_slab_unreclaimable		60:28:38
        nr_unstable	60:28:2
        nr_vmscan_write	60:28:42
        nr_writeback	60:28:1
        pageoutrun	60:28:34
        pgactivate	60:28:14
        pgalloc_dma	60:28:12
        pgalloc_high	60:28:10
        pgalloc_normal	60:28:11
        pgdeactivate	60:28:15
        pgfault		60:28:16
        pgfree		60:28:13
        pginodesteal	60:28:30
        pgmajfault	60:28:17
	pgpgin		60:28:6
        pgpgout		60:28:7
        pgrefill_dma	60:28:20
        pgrefill_high	60:28:18
        pgrefill_normal	60:28:19
        pgrotated	60:28:36
        pgscan_direct_dma	60:28:29
        pgscan_direct_high	60:28:27
        pgscan_direct_normal	60:28:28
        pgscan_kswapd_dma	60:28:26
        pgscan_kswapd_high	60:28:24
        pgscan_kswapd_normal	60:28:25
        pgsteal_dma     60:28:23
        pgsteal_high    60:28:21
        pgsteal_normal  60:28:22
        pswpin		60:28:8
        pswpout		60:28:9
        slabs_scanned	60:28:31
}

vfs {
    files
    inodes
    dentry
}

vfs.files {
    count		60:27:0
    free		60:27:1
    max			60:27:2
}

vfs.inodes {
    count		60:27:3
    free		60:27:4
}

vfs.dentry {
    count		60:27:5
    free		60:27:6
}

network.ib {
    status		60:29:20
    control		60:29:21
    in
    out
    total
}

network.ib.in {
    bytes		60:29:0
    packets		60:29:1
    errors
}

network.ib.in.errors {
    drop		60:29:2
    filter		60:29:3
    local		60:29:4
    remote		60:29:5
}

network.ib.out {
    bytes		60:29:6
    packets		60:29:7
    errors
}

network.ib.out.errors {
    drop		60:29:8
    filter		60:29:9
}

network.ib.total {
    bytes               60:29:16
    packets		60:29:17
    errors
}

network.ib.total.errors {
    drop		60:29:18
    filter		60:29:19
    link		60:29:10
    recover		60:29:11
    integrity		60:29:12
    vl15		60:29:13
    overrun		60:29:14
    symbol		60:29:15
}

quota {
    state
    project
}

quota.state {
    project
}

quota.state.project {
    accounting		60:30:0
    enforcement		60:30:1
}

quota.project {
    space
    files
}

quota.project.space {
    hard  		60:30:6
    soft  		60:30:7
    used  		60:30:8
    time_left  		60:30:9
}

quota.project.files {
    hard  		60:30:10
    soft  		60:30:11
    used  		60:30:12
    time_left  		60:30:13
}

sysfs {
    kernel
}

sysfs.kernel {
    uevent_seqnum	60:35:0
}

