Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants...

131
Unix::Statgrab - System Monitoring Jens Rehsack 2013 Jens Rehsack () Unix::Statgrab - System Monitoring 2013 1 / 28

Transcript of Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants...

Page 1: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Unix::Statgrab - System Monitoring

Jens Rehsack

2013

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 1 / 28

Page 2: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Overview

Part I

Introduction

1 Introduction

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 2 / 28

Page 3: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Introduction

Audience

AudienceDeveloper who wants to create or improve monitoring software

Developer who wants to evaluate system stats for content sensitive codepaths

Developer who wants to to learn the difference to earlier libstatgrab /Unix::Statgrab API

Developers or Operators (Admins) who wants to learn about measurement ofstatistic values of the machine

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 3 / 28

Page 4: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Introduction

Audience

AudienceDeveloper who wants to create or improve monitoring software

Developer who wants to evaluate system stats for content sensitive codepaths

Developer who wants to to learn the difference to earlier libstatgrab /Unix::Statgrab API

Developers or Operators (Admins) who wants to learn about measurement ofstatistic values of the machine

Prerequisites of the Audience

Following knowledge is expected:

advanced skills in at least one object oriented and procedural programminglanguage

more than one year practical experience in object oriented development

Experience with Unix or compatible operating systems

slightly above basic Perl experience

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 3 / 28

Page 5: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Introduction

Motivation

XS / C

use of native API to get OS stats

performance advantage

interoperability (most VM’s have a * native interface)

portability - widest calling convention support in C

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 4 / 28

Page 6: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Introduction

Platforms I

Tested and confirmed running

DragonFly BSD 3.4

FreeBSD 7,8 (i386, amd64), FreeBSD 9 (i386, amd64, sparc64, ia64),FreeBSD 10-CURRENT (i386, amd64, sparc64, ia64)

HP-UX 11.11 (parisc) HP-UX 11.23 (parisc, ia64), HP-UX 11.31 (ia64)

Linux 2.6 (Ubuntu 10.04, SLES 9-11, Redhat 6, CentOS 6, µCLinux/arm7),Linux 3.X (Ubuntu 12.04)

MacOS X 10.6, 10.8 (amd64)

NetBSD 5.1-6.1 (amd64), NetBSD-CURRENT (amd64)

OpenBSD 4.9, 5.3 (amd64)

Solaris 8,9 (sparc), Solaris 10 (sparc, x86 & amd64), Solaris 11 (amd64)

AIX 5.2, 5.3, 6.1 (ppc64)

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 5 / 28

Page 7: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Introduction

Platforms II

in progress . . .

Windows (using Interix, maybe mSys)

kFreeBSD

Hurd

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 6 / 28

Page 8: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Introduction

Platforms II

in progress . . .

Windows (using Interix, maybe mSys)

kFreeBSD

Hurd

Wishlist

Digital Unix / Tru64 / OSF1

Haiku

VMS

zOS

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 6 / 28

Page 9: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Overview

Part II

libstatgrab

2 Host Information

3 CPU statistics

4 Memory statistics

5 Disk / Storage statistics

6 User statistics

7 Process statistics

8 Network statistics

9 Error management

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 7 / 28

Page 10: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 11: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

bundles some operating system information as

name (Linux, FreeBSD, AIX),

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 12: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

bundles some operating system information as

name (Linux, FreeBSD, AIX),

release (eg. kernel version),

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 13: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

bundles some operating system information as

name (Linux, FreeBSD, AIX),

release (eg. kernel version),

entire OS version string (eg. Darwin KernelVersion 12.4.0: Wed May 1 17:57:12 PDT 2013;root:xnu-2050.24.15 1/RELEASE X86 64),

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 14: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

bundles some operating system information as

name (Linux, FreeBSD, AIX),

release (eg. kernel version),

entire OS version string (eg. Darwin KernelVersion 12.4.0: Wed May 1 17:57:12 PDT 2013;root:xnu-2050.24.15 1/RELEASE X86 64),

platform, what finally means CPU informationfrom OS perspective,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 15: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

bundles some operating system information as

name (Linux, FreeBSD, AIX),

release (eg. kernel version),

entire OS version string (eg. Darwin KernelVersion 12.4.0: Wed May 1 17:57:12 PDT 2013;root:xnu-2050.24.15 1/RELEASE X86 64),

platform, what finally means CPU informationfrom OS perspective,

hostname name of the host.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 16: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

bundles some operating system information as

name (Linux, FreeBSD, AIX),

release (eg. kernel version),

entire OS version string (eg. Darwin KernelVersion 12.4.0: Wed May 1 17:57:12 PDT 2013;root:xnu-2050.24.15 1/RELEASE X86 64),

platform, what finally means CPU informationfrom OS perspective,

hostname name of the host.

bitwidth (usually 32 or 64),

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 17: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

bundles some operating system information as

name (Linux, FreeBSD, AIX),

release (eg. kernel version),

entire OS version string (eg. Darwin KernelVersion 12.4.0: Wed May 1 17:57:12 PDT 2013;root:xnu-2050.24.15 1/RELEASE X86 64),

platform, what finally means CPU informationfrom OS perspective,

hostname name of the host.

bitwidth (usually 32 or 64),

host state - one of sg physical host,sg virtual machine, sg paravirtual machine,sg hardware virtualized orsg unknown configuration),

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 18: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

bundles some operating system information as

name (Linux, FreeBSD, AIX),

release (eg. kernel version),

entire OS version string (eg. Darwin KernelVersion 12.4.0: Wed May 1 17:57:12 PDT 2013;root:xnu-2050.24.15 1/RELEASE X86 64),

platform, what finally means CPU informationfrom OS perspective,

hostname name of the host.

bitwidth (usually 32 or 64),

host state - one of sg physical host,sg virtual machine, sg paravirtual machine,sg hardware virtualized orsg unknown configuration),

current number of CPU’s,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 19: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

bundles some operating system information as

name (Linux, FreeBSD, AIX),

release (eg. kernel version),

entire OS version string (eg. Darwin KernelVersion 12.4.0: Wed May 1 17:57:12 PDT 2013;root:xnu-2050.24.15 1/RELEASE X86 64),

platform, what finally means CPU informationfrom OS perspective,

hostname name of the host.

bitwidth (usually 32 or 64),

host state - one of sg physical host,sg virtual machine, sg paravirtual machine,sg hardware virtualized orsg unknown configuration),

current number of CPU’s,

maximum number of CPU’s.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 20: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Host Information

Host Info

sg host info

typedef struct {

char *os_name;

char *os_release;

char *os_version;

char *platform;

char *hostname;

unsigned bitwidth;

sg_host_state host_state;

unsigned ncpus;

unsigned maxcpus;

time_t uptime;

time_t systime;

} sg_host_info;

bundles some operating system information as

name (Linux, FreeBSD, AIX),

release (eg. kernel version),

entire OS version string (eg. Darwin KernelVersion 12.4.0: Wed May 1 17:57:12 PDT 2013;root:xnu-2050.24.15 1/RELEASE X86 64),

platform, what finally means CPU informationfrom OS perspective,

hostname name of the host.

bitwidth (usually 32 or 64),

host state - one of sg physical host,sg virtual machine, sg paravirtual machine,sg hardware virtualized orsg unknown configuration),

current number of CPU’s,

maximum number of CPU’s.

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 8 / 28

Page 21: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU stats

sg cpu stats

typedef struct {

unsigned long long user , kernel , idle , iowait , swap , nice , total;

unsigned long long context_switches , voluntary_context_switches , involuntary_context_switches ,

syscalls , interrupts , soft_interrupts ,

time_t systime;

} sg_cpu_stats;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 9 / 28

Page 22: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU stats

sg cpu stats

typedef struct {

unsigned long long user , kernel , idle , iowait , swap , nice , total;

unsigned long long context_switches , voluntary_context_switches , involuntary_context_switches ,

syscalls , interrupts , soft_interrupts ,

time_t systime;

} sg_cpu_stats;

absolute ticks of measurable CPU states,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 9 / 28

Page 23: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU stats

sg cpu stats

typedef struct {

unsigned long long user , kernel , idle , iowait , swap , nice , total;

unsigned long long context_switches , voluntary_context_switches , involuntary_context_switches ,

syscalls , interrupts , soft_interrupts ,

time_t systime;

} sg_cpu_stats;

absolute ticks of measurable CPU states,

context switches over all CPU’s, also separated by voluntary and involuntary,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 9 / 28

Page 24: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU stats

sg cpu stats

typedef struct {

unsigned long long user , kernel , idle , iowait , swap , nice , total;

unsigned long long context_switches , voluntary_context_switches , involuntary_context_switches ,

syscalls , interrupts , soft_interrupts ,

time_t systime;

} sg_cpu_stats;

absolute ticks of measurable CPU states,

context switches over all CPU’s, also separated by voluntary and involuntary,

syscalls made, interrupts and soft-interrupts occured,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 9 / 28

Page 25: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU stats

sg cpu stats

typedef struct {

unsigned long long user , kernel , idle , iowait , swap , nice , total;

unsigned long long context_switches , voluntary_context_switches , involuntary_context_switches ,

syscalls , interrupts , soft_interrupts ,

time_t systime;

} sg_cpu_stats;

absolute ticks of measurable CPU states,

context switches over all CPU’s, also separated by voluntary and involuntary,

syscalls made, interrupts and soft-interrupts occured,

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 9 / 28

Page 26: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU percents

sg cpu percents

typedef struct {

double user;

double kernel;

double idle;

double iowait;

double swap;

double nice;

time_t time_taken;

} sg_cpu_percents;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 10 / 28

Page 27: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU percents

sg cpu percents

typedef struct {

double user;

double kernel;

double idle;

double iowait;

double swap;

double nice;

time_t time_taken;

} sg_cpu_percents;

relative ticks of measurable CPU states:

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 10 / 28

Page 28: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU percents

sg cpu percents

typedef struct {

double user;

double kernel;

double idle;

double iowait;

double swap;

double nice;

time_t time_taken;

} sg_cpu_percents;

relative ticks of measurable CPU states: ticks in user mode,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 10 / 28

Page 29: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU percents

sg cpu percents

typedef struct {

double user;

double kernel;

double idle;

double iowait;

double swap;

double nice;

time_t time_taken;

} sg_cpu_percents;

relative ticks of measurable CPU states: ticks in user mode, kernel mode,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 10 / 28

Page 30: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU percents

sg cpu percents

typedef struct {

double user;

double kernel;

double idle;

double iowait;

double swap;

double nice;

time_t time_taken;

} sg_cpu_percents;

relative ticks of measurable CPU states: ticks in user mode, kernel mode, idle time,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 10 / 28

Page 31: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU percents

sg cpu percents

typedef struct {

double user;

double kernel;

double idle;

double iowait;

double swap;

double nice;

time_t time_taken;

} sg_cpu_percents;

relative ticks of measurable CPU states: ticks in user mode, kernel mode, idle time, waiting for i/o,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 10 / 28

Page 32: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU percents

sg cpu percents

typedef struct {

double user;

double kernel;

double idle;

double iowait;

double swap;

double nice;

time_t time_taken;

} sg_cpu_percents;

relative ticks of measurable CPU states: ticks in user mode, kernel mode, idle time, waiting for i/o,during page swap,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 10 / 28

Page 33: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU percents

sg cpu percents

typedef struct {

double user;

double kernel;

double idle;

double iowait;

double swap;

double nice;

time_t time_taken;

} sg_cpu_percents;

relative ticks of measurable CPU states: ticks in user mode, kernel mode, idle time, waiting for i/o,during page swap, nice rescheduled

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 10 / 28

Page 34: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

CPU percents

sg cpu percents

typedef struct {

double user;

double kernel;

double idle;

double iowait;

double swap;

double nice;

time_t time_taken;

} sg_cpu_percents;

relative ticks of measurable CPU states: ticks in user mode, kernel mode, idle time, waiting for i/o,during page swap, nice rescheduled

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 10 / 28

Page 35: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

Load percents

sg load stats

typedef struct {

double min1;

double min5;

double min15;

time_t systime;

} sg_load_stats;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 11 / 28

Page 36: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

Load percents

sg load stats

typedef struct {

double min1;

double min5;

double min15;

time_t systime;

} sg_load_stats;

percentage of cpu usage per

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 11 / 28

Page 37: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

Load percents

sg load stats

typedef struct {

double min1;

double min5;

double min15;

time_t systime;

} sg_load_stats;

percentage of cpu usage per 1 minute,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 11 / 28

Page 38: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

Load percents

sg load stats

typedef struct {

double min1;

double min5;

double min15;

time_t systime;

} sg_load_stats;

percentage of cpu usage per 1 minute, 5 minutes and

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 11 / 28

Page 39: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

Load percents

sg load stats

typedef struct {

double min1;

double min5;

double min15;

time_t systime;

} sg_load_stats;

percentage of cpu usage per 1 minute, 5 minutes and 15 minutes.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 11 / 28

Page 40: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

CPU statistics

Load percents

sg load stats

typedef struct {

double min1;

double min5;

double min15;

time_t systime;

} sg_load_stats;

percentage of cpu usage per 1 minute, 5 minutes and 15 minutes.

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 11 / 28

Page 41: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Memory stats

sg mem stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

unsigned long long cache;

time_t systime;

} sg_mem_stats;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 12 / 28

Page 42: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Memory stats

sg mem stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

unsigned long long cache;

time_t systime;

} sg_mem_stats;

information about main memory of the system:

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 12 / 28

Page 43: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Memory stats

sg mem stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

unsigned long long cache;

time_t systime;

} sg_mem_stats;

information about main memory of the system: total,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 12 / 28

Page 44: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Memory stats

sg mem stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

unsigned long long cache;

time_t systime;

} sg_mem_stats;

information about main memory of the system: total, free,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 12 / 28

Page 45: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Memory stats

sg mem stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

unsigned long long cache;

time_t systime;

} sg_mem_stats;

information about main memory of the system: total, free, used,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 12 / 28

Page 46: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Memory stats

sg mem stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

unsigned long long cache;

time_t systime;

} sg_mem_stats;

information about main memory of the system: total, free, used, cache,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 12 / 28

Page 47: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Memory stats

sg mem stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

unsigned long long cache;

time_t systime;

} sg_mem_stats;

information about main memory of the system: total, free, used, cache,

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 12 / 28

Page 48: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Swap stats

sg swap stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

time_t systime;

} sg_swap_stats;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 13 / 28

Page 49: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Swap stats

sg swap stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

time_t systime;

} sg_swap_stats;

information about swap memory of the system:

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 13 / 28

Page 50: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Swap stats

sg swap stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

time_t systime;

} sg_swap_stats;

information about swap memory of the system: total,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 13 / 28

Page 51: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Swap stats

sg swap stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

time_t systime;

} sg_swap_stats;

information about swap memory of the system: total, free,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 13 / 28

Page 52: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Swap stats

sg swap stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

time_t systime;

} sg_swap_stats;

information about swap memory of the system: total, free, used,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 13 / 28

Page 53: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Memory statistics

Swap stats

sg swap stats

typedef struct {

unsigned long long total;

unsigned long long free;

unsigned long long used;

time_t systime;

} sg_swap_stats;

information about swap memory of the system: total, free, used,

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 13 / 28

Page 54: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Disk I/O stats

sg disk io stats

typedef struct {

char *disk_name;

unsigned long long read_bytes;

unsigned long long write_bytes;

time_t systime;

} sg_disk_io_stats ;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 14 / 28

Page 55: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Disk I/O stats

sg disk io stats

typedef struct {

char *disk_name;

unsigned long long read_bytes;

unsigned long long write_bytes;

time_t systime;

} sg_disk_io_stats ;

for each block device known to the system

name of the block device,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 14 / 28

Page 56: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Disk I/O stats

sg disk io stats

typedef struct {

char *disk_name;

unsigned long long read_bytes;

unsigned long long write_bytes;

time_t systime;

} sg_disk_io_stats ;

for each block device known to the system

name of the block device,

amount of bytes read

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 14 / 28

Page 57: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Disk I/O stats

sg disk io stats

typedef struct {

char *disk_name;

unsigned long long read_bytes;

unsigned long long write_bytes;

time_t systime;

} sg_disk_io_stats ;

for each block device known to the system

name of the block device,

amount of bytes read

amount of bytes written

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 14 / 28

Page 58: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Disk I/O stats

sg disk io stats

typedef struct {

char *disk_name;

unsigned long long read_bytes;

unsigned long long write_bytes;

time_t systime;

} sg_disk_io_stats ;

for each block device known to the system

name of the block device,

amount of bytes read

amount of bytes written

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 14 / 28

Page 59: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Paging stats

sg page stats

typedef struct {

unsigned long long pages_pagein;

unsigned long long pages_pageout;

time_t systime;

} sg_page_stats;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 15 / 28

Page 60: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Paging stats

sg page stats

typedef struct {

unsigned long long pages_pagein;

unsigned long long pages_pageout;

time_t systime;

} sg_page_stats;

for entire system

amount of bytes paged in,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 15 / 28

Page 61: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Paging stats

sg page stats

typedef struct {

unsigned long long pages_pagein;

unsigned long long pages_pageout;

time_t systime;

} sg_page_stats;

for entire system

amount of bytes paged in,

amount of bytes paged out

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 15 / 28

Page 62: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Paging stats

sg page stats

typedef struct {

unsigned long long pages_pagein;

unsigned long long pages_pageout;

time_t systime;

} sg_page_stats;

for entire system

amount of bytes paged in,

amount of bytes paged out

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 15 / 28

Page 63: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 64: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 65: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 66: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 67: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

device type: one of sg fs unknown,sg fs regular, sg fs special,sg fs loopback, sg fs remote or anycombinationAnything but unknown is covered bysg fs alltypes, any local type by sg fs local

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 68: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

device type: one of sg fs unknown,sg fs regular, sg fs special,sg fs loopback, sg fs remote or anycombinationAnything but unknown is covered bysg fs alltypes, any local type by sg fs local

size of the file system in bytes

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 69: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

device type: one of sg fs unknown,sg fs regular, sg fs special,sg fs loopback, sg fs remote or anycombinationAnything but unknown is covered bysg fs alltypes, any local type by sg fs local

size of the file system in bytes

also separated into used, free and avail

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 70: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

device type: one of sg fs unknown,sg fs regular, sg fs special,sg fs loopback, sg fs remote or anycombinationAnything but unknown is covered bysg fs alltypes, any local type by sg fs local

size of the file system in bytes

also separated into used, free and avail

inodes of the file system

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 71: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

device type: one of sg fs unknown,sg fs regular, sg fs special,sg fs loopback, sg fs remote or anycombinationAnything but unknown is covered bysg fs alltypes, any local type by sg fs local

size of the file system in bytes

also separated into used, free and avail

inodes of the file system

also separated into used, free and avail

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 72: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

device type: one of sg fs unknown,sg fs regular, sg fs special,sg fs loopback, sg fs remote or anycombinationAnything but unknown is covered bysg fs alltypes, any local type by sg fs local

size of the file system in bytes

also separated into used, free and avail

inodes of the file system

also separated into used, free and avail

optimal size of the I/O blocks when accessingthe file system in bytes

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 73: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

device type: one of sg fs unknown,sg fs regular, sg fs special,sg fs loopback, sg fs remote or anycombinationAnything but unknown is covered bysg fs alltypes, any local type by sg fs local

size of the file system in bytes

also separated into used, free and avail

inodes of the file system

also separated into used, free and avail

optimal size of the I/O blocks when accessingthe file system in bytes

block size (minimum allocation size) of the filesystem in bytes

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 74: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

device type: one of sg fs unknown,sg fs regular, sg fs special,sg fs loopback, sg fs remote or anycombinationAnything but unknown is covered bysg fs alltypes, any local type by sg fs local

size of the file system in bytes

also separated into used, free and avail

inodes of the file system

also separated into used, free and avail

optimal size of the I/O blocks when accessingthe file system in bytes

block size (minimum allocation size) of the filesystem in bytes

amount of blocks of the file system

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 75: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

device type: one of sg fs unknown,sg fs regular, sg fs special,sg fs loopback, sg fs remote or anycombinationAnything but unknown is covered bysg fs alltypes, any local type by sg fs local

size of the file system in bytes

also separated into used, free and avail

inodes of the file system

also separated into used, free and avail

optimal size of the I/O blocks when accessingthe file system in bytes

block size (minimum allocation size) of the filesystem in bytes

amount of blocks of the file system

also separated into used, free and avail

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 76: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Disk / Storage statistics

Filesystem stats

sg fs stats

typedef struct {

char *device_name;

char *fs_type;

char *mnt_point;

sg_fs_device_type device_type;

unsigned long long size;

unsigned long long used;

unsigned long long free;

unsigned long long avail;

unsigned long long total_inodes;

unsigned long long used_inodes;

unsigned long long free_inodes;

unsigned long long avail_inodes;

unsigned long long io_size;

unsigned long long block_size;

unsigned long long total_blocks;

unsigned long long free_blocks;

unsigned long long used_blocks;

unsigned long long avail_blocks;

time_t systime;

} sg_fs_stats;

for each mounted (and not filtered) file system

name of the mounted block device,

name of the file system type (eg. ext3, ffs, zfs)

full qualified path name of the mount point

device type: one of sg fs unknown,sg fs regular, sg fs special,sg fs loopback, sg fs remote or anycombinationAnything but unknown is covered bysg fs alltypes, any local type by sg fs local

size of the file system in bytes

also separated into used, free and avail

inodes of the file system

also separated into used, free and avail

optimal size of the I/O blocks when accessingthe file system in bytes

block size (minimum allocation size) of the filesystem in bytes

amount of blocks of the file system

also separated into used, free and avail

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 16 / 28

Page 77: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

User statistics

User stats

sg user stats

typedef struct {

char *login_name;

char *record_id;

size_t record_id_size;

char *device;

char *hostname;

pid_t pid;

time_t login_time;

time_t systime;

} sg_user_stats;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 17 / 28

Page 78: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

User statistics

User stats

sg user stats

typedef struct {

char *login_name;

char *record_id;

size_t record_id_size;

char *device;

char *hostname;

pid_t pid;

time_t login_time;

time_t systime;

} sg_user_stats;

statistics about logged in users, as

login name,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 17 / 28

Page 79: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

User statistics

User stats

sg user stats

typedef struct {

char *login_name;

char *record_id;

size_t record_id_size;

char *device;

char *hostname;

pid_t pid;

time_t login_time;

time_t systime;

} sg_user_stats;

statistics about logged in users, as

login name,

record id and size of that field (not ’\0’ terminated),

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 17 / 28

Page 80: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

User statistics

User stats

sg user stats

typedef struct {

char *login_name;

char *record_id;

size_t record_id_size;

char *device;

char *hostname;

pid_t pid;

time_t login_time;

time_t systime;

} sg_user_stats;

statistics about logged in users, as

login name,

record id and size of that field (not ’\0’ terminated),

device where user logged in,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 17 / 28

Page 81: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

User statistics

User stats

sg user stats

typedef struct {

char *login_name;

char *record_id;

size_t record_id_size;

char *device;

char *hostname;

pid_t pid;

time_t login_time;

time_t systime;

} sg_user_stats;

statistics about logged in users, as

login name,

record id and size of that field (not ’\0’ terminated),

device where user logged in,

hostname when remote login

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 17 / 28

Page 82: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

User statistics

User stats

sg user stats

typedef struct {

char *login_name;

char *record_id;

size_t record_id_size;

char *device;

char *hostname;

pid_t pid;

time_t login_time;

time_t systime;

} sg_user_stats;

statistics about logged in users, as

login name,

record id and size of that field (not ’\0’ terminated),

device where user logged in,

hostname when remote login

process id of the session’s ”root” process

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 17 / 28

Page 83: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

User statistics

User stats

sg user stats

typedef struct {

char *login_name;

char *record_id;

size_t record_id_size;

char *device;

char *hostname;

pid_t pid;

time_t login_time;

time_t systime;

} sg_user_stats;

statistics about logged in users, as

login name,

record id and size of that field (not ’\0’ terminated),

device where user logged in,

hostname when remote login

process id of the session’s ”root” process

login time of that session

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 17 / 28

Page 84: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

User statistics

User stats

sg user stats

typedef struct {

char *login_name;

char *record_id;

size_t record_id_size;

char *device;

char *hostname;

pid_t pid;

time_t login_time;

time_t systime;

} sg_user_stats;

statistics about logged in users, as

login name,

record id and size of that field (not ’\0’ terminated),

device where user logged in,

hostname when remote login

process id of the session’s ”root” process

login time of that session

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 17 / 28

Page 85: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 86: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 87: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 88: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 89: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 90: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 91: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 92: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

process’ user id,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 93: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

process’ user id, group id,

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 94: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

process’ user id, group id, effective user id and

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 95: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

process’ user id, group id, effective user id andeffective group id

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 96: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

process’ user id, group id, effective user id andeffective group id

context switches done by the process, alsoseparated by voluntary and involuntary

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 97: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

process’ user id, group id, effective user id andeffective group id

context switches done by the process, alsoseparated by voluntary and involuntary

virtual memory size of the process, thereofresident

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 98: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

process’ user id, group id, effective user id andeffective group id

context switches done by the process, alsoseparated by voluntary and involuntary

virtual memory size of the process, thereofresident

start time of the process, time spent on CPUduring lifetime, relative to system usage

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 99: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

process’ user id, group id, effective user id andeffective group id

context switches done by the process, alsoseparated by voluntary and involuntary

virtual memory size of the process, thereofresident

start time of the process, time spent on CPUduring lifetime, relative to system usage

nice value of the process (process schedulingincrement)

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 100: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

process’ user id, group id, effective user id andeffective group id

context switches done by the process, alsoseparated by voluntary and involuntary

virtual memory size of the process, thereofresident

start time of the process, time spent on CPUduring lifetime, relative to system usage

nice value of the process (process schedulingincrement)

device type: one of SG PROCESS STATE RUNNING,SG PROCESS STATE SLEEPING,SG PROCESS STATE STOPPED,SG PROCESS STATE ZOMBIE orSG PROCESS STATE UNKNOWN

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 101: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Process statistics

Process stats

sg process stats

typedef struct {

char *process_name;

char *proctitle;

pid_t pid;

pid_t parent;

pid_t pgid;

pid_t sessid;

uid_t uid;

uid_t euid;

gid_t gid;

gid_t egid;

unsigned long long context_switches ;

unsigned long long voluntary_context_switches;

unsigned long long involuntary_context_switches;

unsigned long long proc_size;

unsigned long long proc_resident;

time_t start_time;

time_t time_spent;

double cpu_percent;

int nice;

sg_process_state state;

time_t systime;

} sg_process_stats ;

for each existing process

name of the process image,

title of the process (usually FQPN + args)

process id of the process, the parent process, theprocess group leader and the session id of thesession the process belongs to

process’ user id, group id, effective user id andeffective group id

context switches done by the process, alsoseparated by voluntary and involuntary

virtual memory size of the process, thereofresident

start time of the process, time spent on CPUduring lifetime, relative to system usage

nice value of the process (process schedulingincrement)

device type: one of SG PROCESS STATE RUNNING,SG PROCESS STATE SLEEPING,SG PROCESS STATE STOPPED,SG PROCESS STATE ZOMBIE orSG PROCESS STATE UNKNOWN

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 18 / 28

Page 102: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network I/O stats

sg network io stats

typedef struct {

char *interface_name;

unsigned long long tx;

unsigned long long rx;

unsigned long long ipackets;

unsigned long long opackets;

unsigned long long ierrors;

unsigned long long oerrors;

unsigned long long collisions;

time_t systime;

} sg_network_io_stats;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 19 / 28

Page 103: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network I/O stats

sg network io stats

typedef struct {

char *interface_name;

unsigned long long tx;

unsigned long long rx;

unsigned long long ipackets;

unsigned long long opackets;

unsigned long long ierrors;

unsigned long long oerrors;

unsigned long long collisions;

time_t systime;

} sg_network_io_stats;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 19 / 28

Page 104: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network I/O stats

sg network io stats

typedef struct {

char *interface_name;

unsigned long long tx;

unsigned long long rx;

unsigned long long ipackets;

unsigned long long opackets;

unsigned long long ierrors;

unsigned long long oerrors;

unsigned long long collisions;

time_t systime;

} sg_network_io_stats;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

bytes transmitted and received

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 19 / 28

Page 105: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network I/O stats

sg network io stats

typedef struct {

char *interface_name;

unsigned long long tx;

unsigned long long rx;

unsigned long long ipackets;

unsigned long long opackets;

unsigned long long ierrors;

unsigned long long oerrors;

unsigned long long collisions;

time_t systime;

} sg_network_io_stats;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

bytes transmitted and received

packets transmitted and received

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 19 / 28

Page 106: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network I/O stats

sg network io stats

typedef struct {

char *interface_name;

unsigned long long tx;

unsigned long long rx;

unsigned long long ipackets;

unsigned long long opackets;

unsigned long long ierrors;

unsigned long long oerrors;

unsigned long long collisions;

time_t systime;

} sg_network_io_stats;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

bytes transmitted and received

packets transmitted and received

errors transmitting and receiving packets

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 19 / 28

Page 107: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network I/O stats

sg network io stats

typedef struct {

char *interface_name;

unsigned long long tx;

unsigned long long rx;

unsigned long long ipackets;

unsigned long long opackets;

unsigned long long ierrors;

unsigned long long oerrors;

unsigned long long collisions;

time_t systime;

} sg_network_io_stats;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

bytes transmitted and received

packets transmitted and received

errors transmitting and receiving packets

detected collisions

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 19 / 28

Page 108: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network I/O stats

sg network io stats

typedef struct {

char *interface_name;

unsigned long long tx;

unsigned long long rx;

unsigned long long ipackets;

unsigned long long opackets;

unsigned long long ierrors;

unsigned long long oerrors;

unsigned long long collisions;

time_t systime;

} sg_network_io_stats;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

bytes transmitted and received

packets transmitted and received

errors transmitting and receiving packets

detected collisions

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 19 / 28

Page 109: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network Interface stats

sg network iface stats

typedef struct {

char *interface_name;

unsigned long long speed;

unsigned long long factor;

sg_iface_duplex duplex;

sg_iface_updown up;

time_t systime;

} sg_network_iface_stats ;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 20 / 28

Page 110: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network Interface stats

sg network iface stats

typedef struct {

char *interface_name;

unsigned long long speed;

unsigned long long factor;

sg_iface_duplex duplex;

sg_iface_updown up;

time_t systime;

} sg_network_iface_stats ;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 20 / 28

Page 111: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network Interface stats

sg network iface stats

typedef struct {

char *interface_name;

unsigned long long speed;

unsigned long long factor;

sg_iface_duplex duplex;

sg_iface_updown up;

time_t systime;

} sg_network_iface_stats ;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

capable to transfer times of sized units per second

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 20 / 28

Page 112: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network Interface stats

sg network iface stats

typedef struct {

char *interface_name;

unsigned long long speed;

unsigned long long factor;

sg_iface_duplex duplex;

sg_iface_updown up;

time_t systime;

} sg_network_iface_stats ;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

capable to transfer times of sized units per second

capable to transmit and receive simultanously (SG IFACE DUPLEX FULL, SG IFACE DUPLEX HALF orSG IFACE DUPLEX UNKNOWN)

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 20 / 28

Page 113: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network Interface stats

sg network iface stats

typedef struct {

char *interface_name;

unsigned long long speed;

unsigned long long factor;

sg_iface_duplex duplex;

sg_iface_updown up;

time_t systime;

} sg_network_iface_stats ;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

capable to transfer times of sized units per second

capable to transmit and receive simultanously (SG IFACE DUPLEX FULL, SG IFACE DUPLEX HALF orSG IFACE DUPLEX UNKNOWN)

NIC is SG IFACE UP or SG IFACE DOWN

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 20 / 28

Page 114: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Network statistics

Network Interface stats

sg network iface stats

typedef struct {

char *interface_name;

unsigned long long speed;

unsigned long long factor;

sg_iface_duplex duplex;

sg_iface_updown up;

time_t systime;

} sg_network_iface_stats ;

for each network interface

interface name (eg. ”em0”, ”fxp0”, ”en0”, ”eth0” . . . ),

capable to transfer times of sized units per second

capable to transmit and receive simultanously (SG IFACE DUPLEX FULL, SG IFACE DUPLEX HALF orSG IFACE DUPLEX UNKNOWN)

NIC is SG IFACE UP or SG IFACE DOWN

timestamp when collected this stats.

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 20 / 28

Page 115: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Error management

Error information

sg error details

typedef struct sg_error_details {

sg_error error;

int errno_value;

const char *error_arg;

} sg_error_details ;

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 21 / 28

Page 116: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Error management

Error information

sg error details

typedef struct sg_error_details {

sg_error error;

int errno_value;

const char *error_arg;

} sg_error_details ;

when an error occured (no stats are resulted upon querying):

libstatgrab error code (eg. SG ERROR INVALID ARGUMENT)

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 21 / 28

Page 117: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Error management

Error information

sg error details

typedef struct sg_error_details {

sg_error error;

int errno_value;

const char *error_arg;

} sg_error_details ;

when an error occured (no stats are resulted upon querying):

libstatgrab error code (eg. SG ERROR INVALID ARGUMENT)

system (errno.h) error code (eg. EBUSY

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 21 / 28

Page 118: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Error management

Error information

sg error details

typedef struct sg_error_details {

sg_error error;

int errno_value;

const char *error_arg;

} sg_error_details ;

when an error occured (no stats are resulted upon querying):

libstatgrab error code (eg. SG ERROR INVALID ARGUMENT)

system (errno.h) error code (eg. EBUSY

optional error explanation message (eg. file name, process id, . . . )

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 21 / 28

Page 119: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Overview

Part III

Unix::Statgrab

10 Entry Functions

11 SYNOPSIS

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 22 / 28

Page 120: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

Entry Functions

Entry Functions

get_error (); # return details about last error

get_host_info (); # returns sg_host_info

get_cpu_stats (); # returns sg_cpu_stats

get_disk_io_stats (); # returns sg_disk_io_stats

get_fs_stats (); # returns sg_fs_stats

get_load_stats (); # returns sg_load_stats

get_mem_stats (); # returns sg_mem_stats

get_swap_stats (); # returns sg_swap_stats

get_network_io_stats (); # returns sg_network_io_stats

get_network_iface_stats (); # returns sg_network_iface_stats

get_page_stats (); # returns sg_page_stats

get_user_stats (); # returns sg_user_stats

get_process_stats (); # returns sg_process_stats

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 23 / 28

Page 121: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

Common . . .

Common . . .

use Unix:: Statgrab;

my $host_info = get_host_info () or croak( get_error()->strperror () );

printf( "%d\n", $host_info ->entries () );

my $cpu_stats = get_cpu_stats () or croak( get_error()->strperror () );

printf( "%d\n", $cpu_stats ->entries () );

my $disk_io_stats = get_disk_io_stats() or croak( get_error()->strperror () );

printf( "%d\n", $disk_io_stats ->entries () );

my $fs_stats = get_fs_stats () or croak( get_error()->strperror () );

printf( "%d\n", $fs_stats ->entries () );

my $load_stats = get_load_stats () or croak( get_error()->strperror () );

printf( "%d\n", $load_stats ->entries () );

my $mem_stats = get_mem_stats () or croak( get_error()->strperror () );

printf( "%d\n", $mem_stats ->entries () );

my $swap_stats = get_swap_stats () or croak( get_error()->strperror () );

printf( "%d\n", $swap_stats ->entries () );

my $net_io_stats = get_network_io_stats () or croak( get_error()->strperror () );

printf( "%d\n", $net_io_stats ->entries () );

my $net_iface_stats = get_network_iface_stats () or croak( get_error()->strperror () );

printf( "%d\n", $net_iface_stats ->entries () );

my $paging_stats = get_page_stats () or croak( get_error()->strperror () );

printf( "%d\n", $paging ->entries () );

my $user_stats = get_user_stats () or croak( get_error()->strperror () );

printf( "%d\n", $user_stats ->entries () );

my $proc_stats = get_process_stats() or croak( get_error()->strperror () );

printf( "%d\n", $proc_stats ->entries () );

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 24 / 28

Page 122: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

SYNOPSIS

SYNOPSIS

use Unix:: Statgrab;

my $host_stats = get_host_info ();

print $host_stats ->hostname . " is a " . $host_stats ->bitwidth . " " . $host_stats ->os_name . "\n";

my $filesystems = get_fs_stats ();

my @mount_points = map { $filesystems ->mnt_point($_) } (0 .. $filesystems ->entries () - 1);

print $host_stats ->hostname . " has " . join( ", ", @mount_points ) . " mounted\n";

my $proc_list = get_process_stats ();

my @proc_by_type;

foreach my $proc_entry (0 .. $proc_list ->entries () - 1) {

$proc_by_type[$proc_list ->state($proc_entry )]++;

}

my $total_procs = 0;

$total_procs += $_ for grep { defined $_ } @proc_by_type;

foreach my $state (qw(SG_PROCESS_STATE_RUNNING SG_PROCESS_STATE_SLEEPING

SG_PROCESS_STATE_STOPPED SG_PROCESS_STATE_ZOMBIE

SG_PROCESS_STATE_UNKNOWN )) {

defined $proc_by_type[Unix::Statgrab ->$state] or next;

print $proc_by_type[Unix::Statgrab ->$state] . " of " . $total_procs . " procs in $state\n";

}

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 25 / 28

Page 123: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

SYNOPSIS II

SYNOPSIS diff / percent

use Unix:: Statgrab;

my $last_cpu_stats = get_cpu_stats () or croak( get_error()->strperror () );

do_sth_way_longer ();

my $cpu_diff = get_cpu_stats()-> get_cpu_stats_diff($last_cpu_stats );

my $last_cpu_percent = $last_cpu_percent ->get_cpu_percents ();

my $diff_cpu_percent = $cpu_diff ->get_cpu_percents ();

my $now_cpu_percent = get_cpu_stats()-> get_cpu_percents ();

my $last_disk_io_stats = get_disk_io_stats() or croak( get_error()->strperror () );

do_sth_way_longer ();

my $disk_io_diff = get_disk_io_stats()-> get_disk_io_stats_diff ($last_disk_io_stats );

my $last_fs_stats = get_fs_stats () or croak( get_error()->strperror () );

do_sth_way_longer ();

my $fs_diff = get_fs_stats ()-> get_fs_stats_diff($last_fs_stats );

my $last_net_io_stats = get_network_io_stats () or croak( get_error()->strperror () );

do_sth_way_longer ();

my $net_io_diff = get_network_io_stats ()-> get_network_io_stats_diff($last_net_io_stats );

my $last_paging_stats = get_page_stats () or croak( get_error()->strperror () );

do_sth_way_longer ();

my $paging_diff = get_page_stats()-> get_page_stats_diff($last_paging_stats );

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 26 / 28

Page 124: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

Resources

Softwarehttp://www.i-scream.org/libstatgrab/

http://search.cpan.org/dist/Unix-Statgrab/

https://metacpan.org/module/Unix::Statgrab

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 27 / 28

Page 125: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

Resources

Softwarehttp://www.i-scream.org/libstatgrab/

http://search.cpan.org/dist/Unix-Statgrab/

https://metacpan.org/module/Unix::Statgrab

Mailing List

https://lists.i-scream.org/pipermail/users/

[email protected]

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 27 / 28

Page 126: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

Resources

Softwarehttp://www.i-scream.org/libstatgrab/

http://search.cpan.org/dist/Unix-Statgrab/

https://metacpan.org/module/Unix::Statgrab

Mailing List

https://lists.i-scream.org/pipermail/users/

[email protected]

IRCirc://irc.freenode.net/#libstatgrab

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 27 / 28

Page 127: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

Thank You

Thank you

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 28 / 28

Page 128: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

Thank You

Thank you

Tim Bishop for caring for high quality release

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 28 / 28

Page 129: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

Thank You

Thank you

Tim Bishop for caring for high quality release

H. Merijn Brand for doing additional tests on more exotic platforms

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 28 / 28

Page 130: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

Thank You

Thank you

Tim Bishop for caring for high quality release

H. Merijn Brand for doing additional tests on more exotic platforms

Reini Urban for proving on commodity hardware for being sane

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 28 / 28

Page 131: Unix::Statgrab - System Monitoringsno/talks/yapc-eu-2013/Unix-Statgrab.pdf · Developer who wants to evaluate system stats for content sensitive code paths Developer who wants to

SYNOPSIS

Thank You

Thank you

Tim Bishop for caring for high quality release

H. Merijn Brand for doing additional tests on more exotic platforms

Reini Urban for proving on commodity hardware for being sane

Questions?Jens Rehsack <[email protected]>

Jens Rehsack () Unix::Statgrab - System Monitoring 2013 28 / 28