func printStats() { statTimer := time.NewTicker(30 * time.Second) for { <-statTimer.C var memstats runtime.MemStats runtime.ReadMemStats(&memstats) log.Printf("stats [up since: %s]\n", humanize.Time(timeStarted)) log.Printf(" - CPUTemp=%.02f deg C, MemStats.Alloc=%s, MemStats.Sys=%s, totalNetworkMessagesSent=%s\n", globalStatus.CPUTemp, humanize.Bytes(uint64(memstats.Alloc)), humanize.Bytes(uint64(memstats.Sys)), humanize.Comma(int64(totalNetworkMessagesSent))) log.Printf(" - UAT/min %s/%s [maxSS=%.02f%%], ES/min %s/%s\n", humanize.Comma(int64(globalStatus.UAT_messages_last_minute)), humanize.Comma(int64(globalStatus.UAT_messages_max)), float64(maxSignalStrength)/10.0, humanize.Comma(int64(globalStatus.ES_messages_last_minute)), humanize.Comma(int64(globalStatus.ES_messages_max))) log.Printf(" - Total traffic targets tracked=%s, last GPS fix: %s\n", humanize.Comma(int64(len(seenTraffic))), humanize.Time(mySituation.LastFixLocalTime)) } }
//FIXME: This needs to be switched to show a "sessions log" from the sqlite database. func viewLogs(w http.ResponseWriter, r *http.Request) { names, err := ioutil.ReadDir("/var/log/stratux/") if err != nil { return } fi := make([]fileInfo, 0) for _, val := range names { if val.Name()[0] == '.' { continue } // Remove hidden files from listing if !val.IsDir() { mtime := val.ModTime().Format("2006-Jan-02 15:04:05") sz := humanize.Comma(val.Size()) fi = append(fi, fileInfo{Name: val.Name(), Mtime: mtime, Size: sz}) } } tpl, err := template.New("tpl").Parse(dirlisting_tpl) if err != nil { return } data := dirlisting{Name: r.URL.Path, ServerUA: "Stratux " + stratuxVersion + "/" + stratuxBuild, Children_files: fi} err = tpl.Execute(w, data) if err != nil { log.Printf("viewLogs() error: %s\n", err.Error()) } }
func (w *hrsWriter) writeSize(v Value) { t := v.Type() switch t.Kind() { case ListKind, MapKind, SetKind: l := v.(lenable).Len() if l < 4 { return } w.write(fmt.Sprintf(" // %s items", humanize.Comma(int64(l)))) default: panic("unreachable") } }
func main() { // use [from/to/by] or [from/iterations] nFrom := flag.Uint64("from", 1e2, "start iterations from this number") nTo := flag.Uint64("to", 1e4, "run iterations until arriving at this number") nBy := flag.Uint64("by", 1, "increment each iteration by this number") nIncrements := flag.Uint64("iterations", 0, "number of iterations to execute") encodingType := flag.String("encoding", "string", "encode/decode as 'string', 'binary', 'binary-int', 'binary-varint'") flag.Parse(true) flag.Usage = func() { fmt.Printf("%s\n", os.Args[0]) flag.PrintDefaults() return } t0 := time.Now() nBytes := uint64(0) nIterations := uint64(0) encoderDecoder := getEncoder(*encodingType) startingLoop := newBigFloat(*nFrom) var endLoop *big.Float var incrementer *big.Float if *nIncrements > 0 { // using from/iterations flags fmt.Printf("encoding: %v from: %v iterations: %v\n", *encodingType, *nFrom, *nIncrements) incrementer = newBigFloat(1) n := newBigFloat(*nIncrements) endLoop = n.Add(n, startingLoop) } else { // using from/to/by flags fmt.Printf("encoding: %v from: %v to: %v by: %v\n", *encodingType, *nFrom, *nTo, *nBy) incrementer = newBigFloat(*nBy) endLoop = newBigFloat(*nTo) } for i := startingLoop; i.Cmp(endLoop) < 0; i = i.Add(i, incrementer) { nIterations++ nBytes += runTest(encoderDecoder, i) } t1 := time.Now() d := t1.Sub(t0) fmt.Printf("IO %s (%v nums) in %s (%s/s)\n", humanize.Bytes(nBytes), humanize.Comma(int64(nIterations)), d, humanize.Bytes(uint64(float64(nBytes)/d.Seconds()))) }
func formatStatus(acc diffSummaryProgress, singular, plural string) { pluralize := func(singular, plural string, n uint64) string { var noun string if n != 1 { noun = plural } else { noun = singular } return fmt.Sprintf("%s %s", humanize.Comma(int64(n)), noun) } insertions := pluralize("insertion", "insertions", acc.Adds) deletions := pluralize("deletion", "deletions", acc.Removes) changes := pluralize("change", "changes", acc.Changes) oldValues := pluralize(singular, plural, acc.OldSize) newValues := pluralize(singular, plural, acc.NewSize) status.Printf("%s (%.2f%%), %s (%.2f%%), %s (%.2f%%), (%s vs %s)", insertions, (float64(100*acc.Adds) / float64(acc.OldSize)), deletions, (float64(100*acc.Removes) / float64(acc.OldSize)), changes, (float64(100*acc.Changes) / float64(acc.OldSize)), oldValues, newValues) }
//FIXME: This needs to be switched to show a "sessions log" from the sqlite database. func viewLogs(w http.ResponseWriter, r *http.Request) { var logPath string if _, err := os.Stat("/etc/FlightBox"); !os.IsNotExist(err) { logPath = "/root/log/" } else { // if not using the FlightBox config, use "normal" log file locations logPath = "/var/log/stratux/" } names, err := ioutil.ReadDir(logPath) if err != nil { return } fi := make([]fileInfo, 0) for _, val := range names { if val.Name()[0] == '.' { continue } // Remove hidden files from listing if !val.IsDir() { mtime := val.ModTime().Format("2006-Jan-02 15:04:05") sz := humanize.Comma(val.Size()) fi = append(fi, fileInfo{Name: val.Name(), Mtime: mtime, Size: sz}) } } tpl, err := template.New("tpl").Parse(dirlisting_tpl) if err != nil { return } data := dirlisting{Name: r.URL.Path, ServerUA: "Stratux " + stratuxVersion + "/" + stratuxBuild, Children_files: fi} err = tpl.Execute(w, data) if err != nil { log.Printf("viewLogs() error: %s\n", err.Error()) } }
func printStats() { statTimer := time.NewTicker(30 * time.Second) for { <-statTimer.C var memstats runtime.MemStats runtime.ReadMemStats(&memstats) log.Printf("stats [started: %s]\n", humanize.RelTime(time.Time{}, stratuxClock.Time, "ago", "from now")) log.Printf(" - CPUTemp=%.02f deg C, MemStats.Alloc=%s, MemStats.Sys=%s, totalNetworkMessagesSent=%s\n", globalStatus.CPUTemp, humanize.Bytes(uint64(memstats.Alloc)), humanize.Bytes(uint64(memstats.Sys)), humanize.Comma(int64(totalNetworkMessagesSent))) log.Printf(" - UAT/min %s/%s [maxSS=%.02f%%], ES/min %s/%s\n, Total traffic targets tracked=%s", humanize.Comma(int64(globalStatus.UAT_messages_last_minute)), humanize.Comma(int64(globalStatus.UAT_messages_max)), float64(maxSignalStrength)/10.0, humanize.Comma(int64(globalStatus.ES_messages_last_minute)), humanize.Comma(int64(globalStatus.ES_messages_max)), humanize.Comma(int64(len(seenTraffic)))) if globalSettings.GPS_Enabled { log.Printf(" - Last GPS fix: %s, GPS solution type: %d using %d satellites (%d/%d seen/tracked), NACp: %d, est accuracy %.02f m\n", stratuxClock.HumanizeTime(mySituation.LastFixLocalTime), mySituation.quality, mySituation.Satellites, mySituation.SatellitesSeen, mySituation.SatellitesTracked, mySituation.NACp, mySituation.Accuracy) log.Printf(" - GPS vertical velocity: %.02f ft/sec; GPS vertical accuracy: %v m\n", mySituation.GPSVertVel, mySituation.AccuracyVert) } } }
func printStats() { statTimer := time.NewTicker(30 * time.Second) diskUsageWarning := false for { <-statTimer.C var memstats runtime.MemStats runtime.ReadMemStats(&memstats) log.Printf("stats [started: %s]\n", humanize.RelTime(time.Time{}, stratuxClock.Time, "ago", "from now")) log.Printf(" - Disk bytes used = %s (%.1f %%), Disk bytes free = %s (%.1f %%)\n", humanize.Bytes(usage.Used()), 100*usage.Usage(), humanize.Bytes(usage.Free()), 100*(1-usage.Usage())) log.Printf(" - CPUTemp=%.02f deg C, MemStats.Alloc=%s, MemStats.Sys=%s, totalNetworkMessagesSent=%s\n", globalStatus.CPUTemp, humanize.Bytes(uint64(memstats.Alloc)), humanize.Bytes(uint64(memstats.Sys)), humanize.Comma(int64(totalNetworkMessagesSent))) log.Printf(" - UAT/min %s/%s [maxSS=%.02f%%], ES/min %s/%s, Total traffic targets tracked=%s", humanize.Comma(int64(globalStatus.UAT_messages_last_minute)), humanize.Comma(int64(globalStatus.UAT_messages_max)), float64(maxSignalStrength)/10.0, humanize.Comma(int64(globalStatus.ES_messages_last_minute)), humanize.Comma(int64(globalStatus.ES_messages_max)), humanize.Comma(int64(len(seenTraffic)))) log.Printf(" - Network data messages sent: %d total, %d nonqueueable. Network data bytes sent: %d total, %d nonqueueable.\n", globalStatus.NetworkDataMessagesSent, globalStatus.NetworkDataMessagesSentNonqueueable, globalStatus.NetworkDataBytesSent, globalStatus.NetworkDataBytesSentNonqueueable) if globalSettings.GPS_Enabled { log.Printf(" - Last GPS fix: %s, GPS solution type: %d using %d satellites (%d/%d seen/tracked), NACp: %d, est accuracy %.02f m\n", stratuxClock.HumanizeTime(mySituation.LastFixLocalTime), mySituation.Quality, mySituation.Satellites, mySituation.SatellitesSeen, mySituation.SatellitesTracked, mySituation.NACp, mySituation.Accuracy) log.Printf(" - GPS vertical velocity: %.02f ft/sec; GPS vertical accuracy: %v m\n", mySituation.GPSVertVel, mySituation.AccuracyVert) } // Check if we're using more than 95% of the free space. If so, throw a warning (only once). if !diskUsageWarning && usage.Usage() > 95.0 { err_p := fmt.Errorf("Disk bytes used = %s (%.1f %%), Disk bytes free = %s (%.1f %%)", humanize.Bytes(usage.Used()), 100*usage.Usage(), humanize.Bytes(usage.Free()), 100*(1-usage.Usage())) addSystemError(err_p) diskUsageWarning = true } logStatus() } }