From e48d4d71ac15c1f8bc3f18353bd00a009fe367ba Mon Sep 17 00:00:00 2001 From: Ewa Socala Date: Wed, 12 Aug 2015 11:04:06 +0200 Subject: [PATCH] Added bitbucket.org/bertimus9/systemstat to godeps --- Godeps/Godeps.json | 4 + .../bertimus9/systemstat/.gitignore | 25 ++ .../bertimus9/systemstat/AUTHORS | 1 + .../bertimus9/systemstat/LICENSE | 20 ++ .../bertimus9/systemstat/Makefile | 8 + .../bertimus9/systemstat/README.md | 69 +++++ .../bertimus9/systemstat/VERSION | 1 + .../systemstat/example_simple_test.go | 21 ++ .../bertimus9/systemstat/examples/go-top.go | 211 +++++++++++++++ .../bertimus9/systemstat/systemstat.go | 141 ++++++++++ .../bertimus9/systemstat/systemstat_linux.go | 244 ++++++++++++++++++ .../bertimus9/systemstat/systemstat_test.go | 35 +++ .../bertimus9/systemstat/testdata/loadavg | 1 + .../bertimus9/systemstat/testdata/meminfo | 42 +++ .../bertimus9/systemstat/testdata/procstat0 | 1 + .../bertimus9/systemstat/testdata/procstat1 | 1 + .../bertimus9/systemstat/testdata/procstat2 | 1 + .../bertimus9/systemstat/testdata/procstat3 | 1 + .../bertimus9/systemstat/testdata/procstat5 | 1 + .../bertimus9/systemstat/testdata/procstat6 | 1 + .../bertimus9/systemstat/testdata/stat | 12 + .../bertimus9/systemstat/testdata/stat2 | 12 + .../bertimus9/systemstat/testdata/stat3 | 12 + .../bertimus9/systemstat/testdata/stat4 | 12 + .../bertimus9/systemstat/testdata/stat5 | 12 + .../bertimus9/systemstat/testdata/stat6 | 12 + .../bertimus9/systemstat/testdata/stat7 | 12 + .../bertimus9/systemstat/testdata/uptime | 1 + 28 files changed, 914 insertions(+) create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/.gitignore create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/AUTHORS create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/LICENSE create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/Makefile create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/README.md create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/VERSION create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/example_simple_test.go create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/examples/go-top.go create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat.go create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat_linux.go create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat_test.go create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/loadavg create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/meminfo create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat0 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat1 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat2 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat3 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat5 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat6 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat2 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat3 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat4 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat5 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat6 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat7 create mode 100644 Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/uptime diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 9b74c1e9f82..08ada9cc165 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -5,6 +5,10 @@ "./..." ], "Deps": [ + { + "ImportPath": "bitbucket.org/bertimus9/systemstat", + "Rev": "1468fd0db20598383c9393cccaa547de6ad99e5e" + }, { "ImportPath": "bitbucket.org/ww/goautoneg", "Comment": "null-5", diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/.gitignore b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/.gitignore new file mode 100644 index 00000000000..fa49007ba62 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/.gitignore @@ -0,0 +1,25 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe + +*.swp +*.swo diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/AUTHORS b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/AUTHORS new file mode 100644 index 00000000000..50699b8a56c --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/AUTHORS @@ -0,0 +1 @@ +[Phillip](http://bitbucket.org/bertimus9) \ No newline at end of file diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/LICENSE b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/LICENSE new file mode 100644 index 00000000000..8bff9718644 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 Phillip Bond + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/Makefile b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/Makefile new file mode 100644 index 00000000000..5a4126d9045 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/Makefile @@ -0,0 +1,8 @@ +test: + gofmt -s -w . + go test ./... + go get bitbucket.org/bertimus9/systemstat + +coverage: + go get github.com/axw/gocov/gocov + gocov test . | gocov report diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/README.md b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/README.md new file mode 100644 index 00000000000..196982cb35e --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/README.md @@ -0,0 +1,69 @@ +# systemstat + +[Documentation online](http://godoc.org/bitbucket.org/bertimus9/systemstat) + +**systemstat** is a package written in Go generated automatically by `gobi`. + +**systemstat** allows you to add system statistics to your go program; it +currently polls the linux kernel for CPU usage, free/used memory and swap +sizes, and uptime for your go process, as well as the system you're running it +on, and the system load. It can be used to make a crippled version of top that +monitors the current go process and ignores other processes and the number of +users with ttys. See the examples directory for go-top.go, which is my attempt +at a top clone. Bear in mind that the intention of **systemstat** is to allow +your process to monitor itself and it's environment, not to replace top. + +## Install (with GOPATH set on your machine) +---------- + +* Step 1: Get the `systemstat` package + +``` +go get bitbucket.org/bertimus9/systemstat +``` + +* Step 2 (Optional): Run tests + +``` +$ go test -v bitbucket.org/bertimus9/systemstat +``` + +* Step 3 (Optional): Run example + +```bash +$ cd to the first directory in your $GOPATH +$ cd src/bitbucket.org/bertimus9/systemstat +$ go run examples/go-top.go +``` + +##Usage +---------- +``` +package main + +import ( + "bitbucket.org/bertimus9/systemstat" + "fmt" +) + +var sample systemstat.MemSample + +// This example shows how easy it is to get memory information +func main() { + sample = systemstat.GetMemSample() + fmt.Println("Total available RAM in kb:", sample.MemTotal, "k total") + fmt.Println("Used RAM in kb:", sample.MemUsed, "k used") + fmt.Println("Free RAM in kb:", sample.MemFree, "k free") + fmt.Printf("The output is similar to, but somewhat different than:\n\ttop -n1 | grep Mem:\n") +} +``` + +##License +---------- + +Copyright (c) 2013 Phillip Bond + +Licensed under the MIT License + +see file LICENSE + diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/VERSION b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/VERSION new file mode 100644 index 00000000000..8a9ecc2ea99 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/VERSION @@ -0,0 +1 @@ +0.0.1 \ No newline at end of file diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/example_simple_test.go b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/example_simple_test.go new file mode 100644 index 00000000000..24788ddfba1 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/example_simple_test.go @@ -0,0 +1,21 @@ +// Copyright (c) 2013 Phillip Bond +// Licensed under the MIT License +// see file LICENSE + +package systemstat_test + +import ( + "bitbucket.org/bertimus9/systemstat" + "fmt" +) + +var sample systemstat.MemSample + +// This example shows how easy it is to get memory information +func Example_simple() { + sample = systemstat.GetMemSample() + fmt.Println("Total available RAM in kb:", sample.MemTotal, "k total") + fmt.Println("Used RAM in kb:", sample.MemUsed, "k used") + fmt.Println("Free RAM in kb:", sample.MemFree, "k free") + fmt.Printf("The output is similar to, but somewhat different than:\n\ttop -n1 | grep Mem:\n") +} diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/examples/go-top.go b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/examples/go-top.go new file mode 100644 index 00000000000..710281f2f5e --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/examples/go-top.go @@ -0,0 +1,211 @@ +// Copyright (c) 2013 Phillip Bond +// Licensed under the MIT License +// see file LICENSE + +package main + +// go-top +// +// A sample program that emulates the way gnu top gets most of its +// information. It does not get information about other processes, just the +// calling process. +// +// To demonstrate how the output changes, you can invoke with the +// -coresToPeg=N option. For example: +// +// go run go-top.go -coresToPeg=2 +// +// will run two concurrent infinte loops and max out up to two cores (assuming +// you have more than one core). Note that the loops are not tuned to always +// hit 100% on all machines, but they get close. Also note that each core you +// want to max out will add up to 100% CPU usage to this process, but you will +// get less than 100% per core if there are other processes using the CPU, or +// if the kernel is suffering high load averages, etc. +// +// %CCPU measures cumulative CPU usage. It is useful when you have a daemon +// that only runs periodically, but does intense calculations. You can use +// long sample times, on the order of minutes, but still get an accurate +// measure of how much CPU time has been used over the life of the process, +// even if your samples occur when the CPU is temporarily idle. + +import ( + "bitbucket.org/bertimus9/systemstat" + "bytes" + "encoding/json" + "flag" + "fmt" + "math" + "runtime" + "time" +) + +var coresToPegPtr *int64 + +type stats struct { + startTime time.Time + + // stats this process + ProcUptime float64 //seconds + ProcMemUsedPct float64 + ProcCPUAvg systemstat.ProcCPUAverage + LastProcCPUSample systemstat.ProcCPUSample `json:"-"` + CurProcCPUSample systemstat.ProcCPUSample `json:"-"` + + // stats for whole system + LastCPUSample systemstat.CPUSample `json:"-"` + CurCPUSample systemstat.CPUSample `json:"-"` + SysCPUAvg systemstat.CPUAverage + SysMemK systemstat.MemSample + LoadAverage systemstat.LoadAvgSample + SysUptime systemstat.UptimeSample + + // bookkeeping + procCPUSampled bool + sysCPUSampled bool +} + +func NewStats() *stats { + s := stats{} + s.startTime = time.Now() + return &s +} + +func (s *stats) PrintStats() { + up, err := time.ParseDuration(fmt.Sprintf("%fs", s.SysUptime.Uptime)) + upstring := "SysUptime Error" + if err == nil { + updays := up.Hours() / 24 + switch { + case updays >= 365: + upstring = fmt.Sprintf("%.0f years", updays/365) + case updays >= 1: + upstring = fmt.Sprintf("%.0f days", updays) + default: // less than a day + upstring = up.String() + } + } + + fmt.Println("*********************************************************") + fmt.Printf("go-top - %s up %s,\t\tload average: %.2f, %.2f, %.2f\n", + s.LoadAverage.Time.Format("15:04:05"), upstring, s.LoadAverage.One, s.LoadAverage.Five, s.LoadAverage.Fifteen) + + fmt.Printf("Cpu(s): %.1f%%us, %.1f%%sy, %.1f%%ni, %.1f%%id, %.1f%%wa, %.1f%%hi, %.1f%%si, %.1f%%st %.1f%%gu\n", + s.SysCPUAvg.UserPct, s.SysCPUAvg.SystemPct, s.SysCPUAvg.NicePct, s.SysCPUAvg.IdlePct, + s.SysCPUAvg.IowaitPct, s.SysCPUAvg.IrqPct, s.SysCPUAvg.SoftIrqPct, s.SysCPUAvg.StealPct, + s.SysCPUAvg.GuestPct) + + fmt.Printf("Mem: %9dk total, %9dk used, %9dk free, %9dk buffers\n", s.SysMemK.MemTotal, + s.SysMemK.MemUsed, s.SysMemK.MemFree, s.SysMemK.Buffers) + fmt.Printf("Swap: %9dk total, %9dk used, %9dk free, %9dk cached\n", s.SysMemK.SwapTotal, + s.SysMemK.SwapUsed, s.SysMemK.SwapFree, s.SysMemK.Cached) + + fmt.Println("************************************************************") + if s.ProcCPUAvg.PossiblePct > 0 { + cpuHelpText := "[see -help flag to change %cpu]" + if *coresToPegPtr > 0 { + cpuHelpText = "" + } + fmt.Printf("ProcessName\tRES(k)\t%%CPU\t%%CCPU\t%%MEM\n") + fmt.Printf("this-process\t%d\t%3.1f\t%2.1f\t%3.1f\t%s\n", + s.CurProcCPUSample.ProcMemUsedK, + s.ProcCPUAvg.TotalPct, + 100*s.CurProcCPUSample.Total/s.ProcUptime/float64(1), + 100*float64(s.CurProcCPUSample.ProcMemUsedK)/float64(s.SysMemK.MemTotal), + cpuHelpText) + fmt.Println("%CCPU is cumulative CPU usage over this process' life.") + fmt.Printf("Max this-process CPU possible: %3.f%%\n", s.ProcCPUAvg.PossiblePct) + } +} + +func (s *stats) GatherStats(percent bool) { + s.SysUptime = systemstat.GetUptime() + s.ProcUptime = time.Since(s.startTime).Seconds() + + s.SysMemK = systemstat.GetMemSample() + s.LoadAverage = systemstat.GetLoadAvgSample() + + s.LastCPUSample = s.CurCPUSample + s.CurCPUSample = systemstat.GetCPUSample() + + if s.sysCPUSampled { // we need 2 samples to get an average + s.SysCPUAvg = systemstat.GetCPUAverage(s.LastCPUSample, s.CurCPUSample) + } + // we have at least one sample, subsequent rounds will give us an average + s.sysCPUSampled = true + + s.ProcMemUsedPct = 100 * float64(s.CurProcCPUSample.ProcMemUsedK) / float64(s.SysMemK.MemTotal) + + s.LastProcCPUSample = s.CurProcCPUSample + s.CurProcCPUSample = systemstat.GetProcCPUSample() + if s.procCPUSampled { + s.ProcCPUAvg = systemstat.GetProcCPUAverage(s.LastProcCPUSample, s.CurProcCPUSample, s.ProcUptime) + } + s.procCPUSampled = true +} + +func main() { + // get command line flags + coresToPegPtr = flag.Int64("coresToPeg", 0, "how many CPU cores would you like to artificially peg to 100% usage") + + flag.Parse() + + // this will help us poll the OS to get system statistics + stats := NewStats() + + runtime.GOMAXPROCS(runtime.NumCPU()) + + // WARNING: each call to burnCPU() will peg one core + // of your machine to 100% + // If you have code you'd like to drop in to this example, + // just run "go yourCode()" instead of "go burnCPU() + for i := *coresToPegPtr; i > 0; i-- { + fmt.Println("pegging one more CPU core.") + go burnCPU() + } + + for { + stats.GatherStats(true) + stats.PrintStats() + + // This next line lets out see the jsonified object + // produced by systemstat + // printJson(stats, false) + time.Sleep(3 * time.Second) + } +} + +func printJson(s *stats, indent bool) { + b, err := json.Marshal(s) + if err != nil { + fmt.Println("error:", err) + } + dst := new(bytes.Buffer) + if indent { + json.Indent(dst, b, "", " ") + } else { + dst.Write(b) + } + fmt.Println(dst.String()) + time.Sleep(time.Second * 3) +} + +func burnCPU() { + time.Sleep(4 * time.Second) + for { + b := 1.0 + c := 1.0 + d := 1.0 + for j := 1; j < 1000; j++ { + b *= float64(j) + for k := 1; k < 700000; k++ { + + c *= float64(k) + d = (28 + b*b/3.23412) / math.Sqrt(c*c) + c *= d + } + time.Sleep(500 * time.Nanosecond) + runtime.Gosched() + } + time.Sleep(10 * time.Second) + } +} diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat.go b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat.go new file mode 100644 index 00000000000..7ac1f616835 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat.go @@ -0,0 +1,141 @@ +// Copyright (c) 2013 Phillip Bond +// Licensed under the MIT License +// see file LICENSE + +package systemstat + +import ( + "time" +) + +// CPUSample is an object that represents the breakdown of time spent by the +// CPU in various types of tasks. Two CPUSamples are required to find the +// average usage over time, represented by the CPUAverage object. The CPUSample +// is taken from the line "cpu" from /proc/stat in the Linux kernel. +// +// Summarized from the proc(5) man page: +// /proc/stat : +// kernel/system statistics. Varies with architecture. +type CPUSample struct { + User uint64 // time spent in user mode + Nice uint64 // time spent in user mode with low priority (nice) + System uint64 // time spent in system mode + Idle uint64 // time spent in the idle task + Iowait uint64 // time spent waiting for I/O to complete (since Linux 2.5.41) + Irq uint64 // time spent servicing interrupts (since 2.6.0-test4) + SoftIrq uint64 // time spent servicing softirqs (since 2.6.0-test4) + Steal uint64 // time spent in other OSes when running in a virtualized environment + Guest uint64 // time spent running a virtual CPU for guest operating systems under the control of the Linux kernel. + Name string // name of the line in /proc/stat; cpu, cpu1, etc + Time time.Time // when the sample was taken + Total uint64 // total of all time fields +} + +type ProcCPUSample struct { + User float64 // time spent in user mode + System float64 // time spent in system mode + Time time.Time // when the sample was taken + Total float64 // total of all time fields + ProcMemUsedK int64 +} + +type ProcCPUAverage struct { + UserPct float64 // time spent in user mode + SystemPct float64 // time spent in system mode + TotalPct float64 // total of all time fields + PossiblePct float64 // total of all time fields + CumulativeTotalPct float64 // total of all time throughout process life + Time time.Time // when the sample was taken + Seconds float64 // how many seconds between the two samples +} + +// SimpleCPUAverage is an object that represents the average cpu usage over a +// time period. It is calculated by taking the difference between two +// CPUSamples (whose units are clock ticks), dividing by the number of elapsed +// ticks between the samples, and converting to a percent. It is a simplified version of the CPUAverage in that it only accounts for time in the Idle task and all other time (Busy). +type SimpleCPUAverage struct { + BusyPct float64 // percent of time spent by CPU performing all non-idle tasks + IdlePct float64 // percent of time spent by CPU in the idle task +} + +// CPUAverage is an object that represents the average cpu usage over a +// time period. It is calculated by taking the difference between two +// CPUSamples (whose units are clock ticks), dividing by the number of elapsed +// ticks between the samples, and converting to a percent. +type CPUAverage struct { + UserPct float64 + NicePct float64 + SystemPct float64 + IdlePct float64 + IowaitPct float64 + IrqPct float64 + SoftIrqPct float64 + StealPct float64 + GuestPct float64 + Time time.Time + Seconds float64 // how many seconds between the two samples +} + +type MemSample struct { + Buffers uint64 + Cached uint64 + MemTotal uint64 + MemUsed uint64 + MemFree uint64 + SwapTotal uint64 + SwapUsed uint64 + SwapFree uint64 + Time time.Time +} + +type LoadAvgSample struct { + One float64 + Five float64 + Fifteen float64 + Time time.Time +} + +type UptimeSample struct { + Uptime float64 + Time time.Time +} + +// GetCPUAverage returns the average cpu usage between two CPUSamples. +func GetCPUAverage(first CPUSample, second CPUSample) CPUAverage { + return getCPUAverage(first, second) +} + +// GetSimpleCPUAverage returns an aggregated average cpu usage between two CPUSamples. +func GetSimpleCPUAverage(first CPUSample, second CPUSample) SimpleCPUAverage { + return getSimpleCPUAverage(first, second) +} + +// GetProcCPUAverage returns the average cpu usage of this running process +func GetProcCPUAverage(first ProcCPUSample, second ProcCPUSample, procUptime float64) (avg ProcCPUAverage) { + return getProcCPUAverage(first, second, procUptime) +} + +// GetCPUSample takes a snapshot of kernel statistics from the /proc/stat file. +func GetCPUSample() (samp CPUSample) { + return getCPUSample("/proc/stat") +} + +// GetProcCPUSample takes a snapshot of kernel statistics from the /proc/stat file. +func GetProcCPUSample() (samp ProcCPUSample) { + return getProcCPUSample() +} + +// GetUptime takes a snapshot of load info from the /proc/loadavg file. +func GetUptime() (samp UptimeSample) { + return getUptime("/proc/uptime") +} + +// GetLoadAvgSample takes a snapshot of load info from the /proc/loadavg file. +func GetLoadAvgSample() (samp LoadAvgSample) { + return getLoadAvgSample("/proc/loadavg") +} + +// GetMemSample takes a snapshot of memory info from the /proc/meminfo file. +func GetMemSample() (samp MemSample) { + return getMemSample("/proc/meminfo") +} diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat_linux.go b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat_linux.go new file mode 100644 index 00000000000..02a475efe86 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat_linux.go @@ -0,0 +1,244 @@ +// Copyright (c) 2013 Phillip Bond +// Licensed under the MIT License +// see file LICENSE + +// +build linux + +package systemstat + +import ( + "bufio" + "bytes" + "io" + "io/ioutil" + "log" + "runtime" + "strconv" + "strings" + "syscall" + "time" +) + +func getUptime(procfile string) (uptime UptimeSample) { + // read in whole uptime file with cpu usage information ;"/proc/uptime" + contents, err := ioutil.ReadFile(procfile) + uptime.Time = time.Now() + if err != nil { + return + } + + reader := bufio.NewReader(bytes.NewBuffer(contents)) + line, _, err := reader.ReadLine() + fields := strings.Fields(string(line)) + + val, numerr := strconv.ParseFloat(fields[0], 64) + if numerr != nil { + return + } + uptime.Uptime = val + + return +} + +func getLoadAvgSample(procfile string) (samp LoadAvgSample) { + // read in whole loadavg file with cpu usage information ;"/proc/loadavg" + contents, err := ioutil.ReadFile(procfile) + samp.Time = time.Now() + if err != nil { + return + } + + reader := bufio.NewReader(bytes.NewBuffer(contents)) + line, _, err := reader.ReadLine() + fields := strings.Fields(string(line)) + for i := 0; i < 3; i++ { + val, numerr := strconv.ParseFloat(fields[i], 64) + if numerr != nil { + return + } + switch i { + case 0: + samp.One = val + case 1: + samp.Five = val + case 2: + samp.Fifteen = val + } + } + + return +} + +func getMemSample(procfile string) (samp MemSample) { + want := map[string]bool{ + "Buffers:": true, + "Cached:": true, + "MemTotal:": true, + "MemFree:": true, + "MemUsed:": true, + "SwapTotal:": true, + "SwapFree:": true, + "SwapUsed:": true} + + // read in whole meminfo file with cpu usage information ;"/proc/meminfo" + contents, err := ioutil.ReadFile(procfile) + samp.Time = time.Now() + if err != nil { + return + } + + reader := bufio.NewReader(bytes.NewBuffer(contents)) + for { + line, _, err := reader.ReadLine() + if err == io.EOF { + break + } + + fields := strings.Fields(string(line)) + fieldName := fields[0] + + _, ok := want[fieldName] + if ok && len(fields) == 3 { + val, numerr := strconv.ParseUint(fields[1], 10, 64) + if numerr != nil { + return + } + switch fieldName { + case "Buffers:": + samp.Buffers = val + case "Cached:": + samp.Cached = val + case "MemTotal:": + samp.MemTotal = val + case "MemFree:": + samp.MemFree = val + case "SwapTotal:": + samp.SwapTotal = val + case "SwapFree:": + samp.SwapFree = val + } + } + } + samp.MemUsed = samp.MemTotal - samp.MemFree + samp.SwapUsed = samp.SwapTotal - samp.SwapFree + return +} + +func getProcCPUSample() (s ProcCPUSample) { + var processInfo syscall.Rusage + syscall.Getrusage(syscall.RUSAGE_SELF, &processInfo) + + s.Time = time.Now() + s.ProcMemUsedK = int64(processInfo.Maxrss) + s.User = float64(processInfo.Utime.Usec)/1000000 + float64(processInfo.Utime.Sec) + s.System = float64(processInfo.Stime.Usec)/1000000 + float64(processInfo.Stime.Sec) + s.Total = s.User + s.System + + return +} + +func getCPUSample(procfile string) (samp CPUSample) { + // read in whole proc file with cpu usage information ; "/proc/stat" + contents, err := ioutil.ReadFile(procfile) + samp.Time = time.Now() + if err != nil { + return + } + + reader := bufio.NewReader(bytes.NewBuffer(contents)) + for { + line, _, err := reader.ReadLine() + if err == io.EOF { + break + } + + fields := strings.Fields(string(line)) + + if len(fields) > 0 { + fieldName := fields[0] + if fieldName == "cpu" { + parseCPUFields(fields, &samp) + } + } + } + return +} + +func getSimpleCPUAverage(first CPUSample, second CPUSample) (avg SimpleCPUAverage) { + //walltimediff := second.Time.Sub(first.Time) + //dT := float64(first.Total - second.Total) + + dI := float64(second.Idle - first.Idle) + dTot := float64(second.Total - first.Total) + avg.IdlePct = dI / dTot * 100 + avg.BusyPct = (dTot - dI) * 100 / dTot + //log.Printf("cpu idle ticks %f, total ticks %f, idle pct %f, busy pct %f\n", dI, dTot, avg.IdlePct, avg.BusyPct) + return +} + +func subtractAndConvertTicks(first uint64, second uint64) float64 { + return float64(first - second) +} + +func getCPUAverage(first CPUSample, second CPUSample) (avg CPUAverage) { + dTot := float64(second.Total - first.Total) + invQuotient := 100.00 / dTot + + avg.UserPct = subtractAndConvertTicks(second.User, first.User) * invQuotient + avg.NicePct = subtractAndConvertTicks(second.Nice, first.Nice) * invQuotient + avg.SystemPct = subtractAndConvertTicks(second.System, first.System) * invQuotient + avg.IdlePct = subtractAndConvertTicks(second.Idle, first.Idle) * invQuotient + avg.IowaitPct = subtractAndConvertTicks(second.Iowait, first.Iowait) * invQuotient + avg.IrqPct = subtractAndConvertTicks(second.Irq, first.Irq) * invQuotient + avg.SoftIrqPct = subtractAndConvertTicks(second.SoftIrq, first.SoftIrq) * invQuotient + avg.StealPct = subtractAndConvertTicks(second.Steal, first.Steal) * invQuotient + avg.GuestPct = subtractAndConvertTicks(second.Guest, first.Guest) * invQuotient + avg.Time = second.Time + avg.Seconds = second.Time.Sub(first.Time).Seconds() + return +} + +func getProcCPUAverage(first ProcCPUSample, second ProcCPUSample, procUptime float64) (avg ProcCPUAverage) { + dT := second.Time.Sub(first.Time).Seconds() + + avg.UserPct = 100 * (second.User - first.User) / dT + avg.SystemPct = 100 * (second.System - first.System) / dT + avg.TotalPct = 100 * (second.Total - first.Total) / dT + avg.PossiblePct = 100.0 * float64(runtime.NumCPU()) + avg.CumulativeTotalPct = 100 * second.Total / procUptime + avg.Time = second.Time + avg.Seconds = dT + return +} + +func parseCPUFields(fields []string, stat *CPUSample) { + numFields := len(fields) + stat.Name = fields[0] + for i := 1; i < numFields; i++ { + val, numerr := strconv.ParseUint(fields[i], 10, 64) + if numerr != nil { + log.Println("systemstat.parseCPUFields(): Error parsing (field, value): ", i, fields[i]) + } + stat.Total += val + switch i { + case 1: + stat.User = val + case 2: + stat.Nice = val + case 3: + stat.System = val + case 4: + stat.Idle = val + case 5: + stat.Iowait = val + case 6: + stat.Irq = val + case 7: + stat.SoftIrq = val + case 8: + stat.Steal = val + case 9: + stat.Guest = val + } + } +} diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat_test.go b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat_test.go new file mode 100644 index 00000000000..069c9188b33 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat_test.go @@ -0,0 +1,35 @@ +// Copyright (c) 2013 Phillip Bond +// Licensed under the MIT License +// see file LICENSE + +package systemstat + +import ( + "fmt" + "testing" +) + +var ( + msgFail = "%v method fails. Expects %v, returns %v" +) + +func TestGetUptime(t *testing.T) { + s := getUptime("testdata/uptime") + if s.Uptime != 18667.53 { + t.Errorf(msgFail, "getUptime", "18667.53", s.Uptime) + } +} + +func TestGetLoadAvgSample(t *testing.T) { + s := getLoadAvgSample("testdata/loadavg") + fmt.Printf("%#v\n", s) + if s.One != 0.1 { + t.Errorf(msgFail, "getUptime", "0.1", s.One) + } + if s.Five != 0.15 { + t.Errorf(msgFail, "getUptime", "0.15", s.Five) + } + if s.Fifteen != 0.14 { + t.Errorf(msgFail, "getUptime", "0.14", s.Fifteen) + } +} diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/loadavg b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/loadavg new file mode 100644 index 00000000000..9660368d67e --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/loadavg @@ -0,0 +1 @@ +0.10 0.15 0.14 1/538 27757 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/meminfo b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/meminfo new file mode 100644 index 00000000000..361aa6656a8 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/meminfo @@ -0,0 +1,42 @@ +MemTotal: 3768292 kB +MemFree: 831872 kB +Buffers: 153268 kB +Cached: 1622412 kB +SwapCached: 0 kB +Active: 1287508 kB +Inactive: 1297924 kB +Active(anon): 811384 kB +Inactive(anon): 227652 kB +Active(file): 476124 kB +Inactive(file): 1070272 kB +Unevictable: 196 kB +Mlocked: 196 kB +SwapTotal: 7907324 kB +SwapFree: 7907324 kB +Dirty: 228 kB +Writeback: 0 kB +AnonPages: 809948 kB +Mapped: 226452 kB +Shmem: 229284 kB +Slab: 210268 kB +SReclaimable: 148028 kB +SUnreclaim: 62240 kB +KernelStack: 4344 kB +PageTables: 37932 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 9791468 kB +Committed_AS: 4513904 kB +VmallocTotal: 34359738367 kB +VmallocUsed: 368496 kB +VmallocChunk: 34359365956 kB +HardwareCorrupted: 0 kB +AnonHugePages: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +DirectMap4k: 126592 kB +DirectMap2M: 3786752 kB diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat0 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat0 new file mode 100644 index 00000000000..ce37972c69c --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat0 @@ -0,0 +1 @@ +28267 (go-top) S 28256 28256 27864 34816 28256 4202496 736 0 0 0 17470 14 0 0 20 0 7 0 1882735 274173952 571 18446744073709551615 4194368 5592552 140737466979680 139798064197344 4333379 0 0 0 2143420159 18446744073709551615 0 0 17 1 0 0 0 0 0 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat1 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat1 new file mode 100644 index 00000000000..c77ddceba5d --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat1 @@ -0,0 +1 @@ +28267 (go-top) R 28256 28256 27864 34816 28256 4202496 736 0 0 0 18773 16 0 0 20 0 7 0 1882735 274173952 571 18446744073709551615 4194368 5592552 140737466979680 139798065368712 4457862 0 0 0 2143420159 18446744073709551615 0 0 17 3 0 0 0 0 0 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat2 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat2 new file mode 100644 index 00000000000..660b5e203ab --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat2 @@ -0,0 +1 @@ +28267 (go-top) R 28256 28256 27864 34816 28256 4202496 738 0 0 0 20618 18 0 0 20 0 7 0 1882735 274239488 571 18446744073709551615 4194368 5592552 140737466979680 140737466979424 4203351 0 0 0 2143420159 18446744073709551615 0 0 17 0 0 0 0 0 0 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat3 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat3 new file mode 100644 index 00000000000..707291e5fb9 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat3 @@ -0,0 +1 @@ +28267 (go-top) R 28256 28256 27864 34816 28256 4202496 738 0 0 0 21641 19 0 0 20 0 7 0 1882735 274239488 571 18446744073709551615 4194368 5592552 140737466979680 139798065356424 4333379 0 0 0 2143420159 18446744073709551615 0 0 17 0 0 0 0 0 0 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat5 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat5 new file mode 100644 index 00000000000..409e572983a --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat5 @@ -0,0 +1 @@ +28267 (go-top) R 28256 28256 27864 34816 28256 4202496 738 0 0 0 23722 21 0 0 20 0 7 0 1882735 274239488 571 18446744073709551615 4194368 5592552 140737466979680 139798065368712 4203351 0 0 0 2143420159 18446744073709551615 0 0 17 1 0 0 0 0 0 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat6 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat6 new file mode 100644 index 00000000000..a4bffeb6705 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat6 @@ -0,0 +1 @@ +28267 (go-top) S 28256 28256 27864 34816 28256 4202496 741 0 0 0 25512 22 0 0 20 0 7 0 1882735 274305024 571 18446744073709551615 4194368 5592552 140737466979680 140737466979424 4333379 0 0 0 2143420159 18446744073709551615 0 0 17 2 0 0 0 0 0 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat new file mode 100644 index 00000000000..3e39653ddd2 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat @@ -0,0 +1,12 @@ +cpu 17313 714 8241 717906 1456 0 364 0 0 0 +cpu0 6642 289 3526 173411 1162 0 355 0 0 0 +cpu1 2193 88 1066 183608 86 0 2 0 0 0 +cpu2 6463 217 2578 177186 141 0 4 0 0 0 +cpu3 2014 118 1070 183699 65 0 2 0 0 0 +intr 2312829 54 5540 0 0 0 0 0 0 1 24723 0 0 262321 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124099 1226 121928 26 141511 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +ctxt 3689186 +btime 1374442803 +processes 27752 +procs_running 1 +procs_blocked 0 +softirq 923034 6 201522 63 2716 129127 6 168304 89194 629 331467 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat2 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat2 new file mode 100644 index 00000000000..e455027c2cf --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat2 @@ -0,0 +1,12 @@ +cpu 17328 714 8254 725156 1457 0 366 0 0 0 +cpu0 6648 289 3531 175213 1164 0 356 0 0 0 +cpu1 2198 88 1066 185425 86 0 2 0 0 0 +cpu2 6466 217 2584 178996 141 0 4 0 0 0 +cpu3 2015 118 1071 185521 65 0 2 0 0 0 +intr 2316896 54 5562 0 0 0 0 0 0 1 24939 0 0 262321 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124124 1226 123058 26 142249 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +ctxt 3694091 +btime 1374442803 +processes 27777 +procs_running 1 +procs_blocked 0 +softirq 925673 6 202044 63 2716 129146 6 169061 89550 633 332448 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat3 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat3 new file mode 100644 index 00000000000..7e40bf388b6 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat3 @@ -0,0 +1,12 @@ +cpu 18661 714 8322 736828 1463 0 367 0 0 0 +cpu0 6715 289 3555 178374 1170 0 358 0 0 0 +cpu1 3134 88 1080 187754 86 0 2 0 0 0 +cpu2 6769 217 2603 181942 141 0 4 0 0 0 +cpu3 2042 118 1082 188756 65 0 2 0 0 0 +intr 2346985 54 5673 0 0 0 0 0 0 1 25358 0 0 269347 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124230 1226 125412 26 143648 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +ctxt 3722386 +btime 1374442803 +processes 27939 +procs_running 2 +procs_blocked 0 +softirq 939514 6 208124 63 2720 129245 6 170565 91355 637 336793 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat4 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat4 new file mode 100644 index 00000000000..2f61f46e2dd --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat4 @@ -0,0 +1,12 @@ +cpu 24106 714 8436 758512 1472 0 372 0 0 0 +cpu0 7831 289 3602 183989 1177 0 361 0 0 0 +cpu1 5075 88 1096 192627 86 0 3 0 0 0 +cpu2 7667 217 2640 187814 142 0 5 0 0 0 +cpu3 3531 118 1096 194081 66 0 2 0 0 0 +intr 2425351 54 5880 0 0 0 0 0 0 1 26243 0 0 282247 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124425 1226 130129 26 146647 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +ctxt 3788723 +btime 1374442803 +processes 28152 +procs_running 1 +procs_blocked 0 +softirq 975972 6 226788 63 2738 129419 6 173753 98111 659 344429 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat5 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat5 new file mode 100644 index 00000000000..b51720f07e4 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat5 @@ -0,0 +1,12 @@ +cpu 25797 714 8461 761860 1472 0 375 0 0 0 +cpu0 8406 289 3611 184664 1177 0 364 0 0 0 +cpu1 5391 88 1102 193577 86 0 3 0 0 0 +cpu2 8115 217 2646 188622 142 0 5 0 0 0 +cpu3 3884 118 1100 194996 66 0 2 0 0 0 +intr 2446830 54 5896 0 0 0 0 0 0 1 26399 0 0 286933 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124455 1226 131103 26 147182 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +ctxt 3804378 +btime 1374442803 +processes 28177 +procs_running 3 +procs_blocked 0 +softirq 985047 6 231802 63 2740 129448 6 174303 100182 665 345832 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat6 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat6 new file mode 100644 index 00000000000..54ea5d0fd28 --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat6 @@ -0,0 +1,12 @@ +cpu 31643 714 8507 766175 1477 0 377 0 0 0 +cpu0 9865 289 3628 185726 1182 0 366 0 0 0 +cpu1 6867 88 1110 194656 86 0 3 0 0 0 +cpu2 9658 217 2661 189610 142 0 5 0 0 0 +cpu3 5252 118 1108 196181 66 0 2 0 0 0 +intr 2492898 54 5942 0 0 0 0 0 0 1 26734 0 0 291667 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124574 1226 133046 26 148246 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +ctxt 3836141 +btime 1374442803 +processes 28244 +procs_running 5 +procs_blocked 0 +softirq 1009821 6 247713 63 2748 129565 6 175417 104452 670 349181 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat7 b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat7 new file mode 100644 index 00000000000..6ff438a421a --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat7 @@ -0,0 +1,12 @@ +cpu 32813 714 8513 766223 1477 0 377 0 0 0 +cpu0 10159 289 3628 185737 1182 0 367 0 0 0 +cpu1 7162 88 1110 194668 86 0 3 0 0 0 +cpu2 9945 217 2664 189623 142 0 5 0 0 0 +cpu3 5546 118 1109 196193 66 0 2 0 0 0 +intr 2498999 54 5954 0 0 0 0 0 0 1 26770 0 0 291667 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124585 1226 133246 26 148377 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +ctxt 3839591 +btime 1374442803 +processes 28269 +procs_running 5 +procs_blocked 0 +softirq 1014220 6 250668 63 2748 129576 6 175558 105038 670 349887 diff --git a/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/uptime b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/uptime new file mode 100644 index 00000000000..05adb73bc2c --- /dev/null +++ b/Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/uptime @@ -0,0 +1 @@ +18667.53 7140.26