Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  status.go   Sprache: unbekannt

 
Spracherkennung für: .go vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

// package proc contains functionality to read proc status files.
package proc

import (
 "strconv"
 "strings"
)

// ProcStatus holds information regarding the memory usage of
// an executing process. The memory sizes in each of the field
// is in bytes.
type ProcStatus struct {
 // Process PID.
 pid int

 // Peak virtual memory size.
 VmPeak uint64

 // Virtual memory size.
 VmSize uint64

 // Locked Memory size.
 VmLck uint64

 // Pinned memory size.
 VmPin uint64

 // Peak resident set size.
 VmHWM uint64

 // Resident set size (sum of RssAnon, RssFile and RssShmem).
 VmRss uint64

 // Size of resident anonymous memory.
 RssAnon uint64

 // Size of resident shared memory.
 RssShmem uint64

 // Size of data segments.
 VmData uint64

 // Size of stack segments.
 VmStk uint64

 //Size of text segments.
 VmExe uint64

 //Shared library code size.
 VmLib uint64

 // Page table entries size.
 VmPTE uint64

 // Size of second-level page tables.
 VmPMD uint64

 // Swapped-out virtual memory size by anonymous private.
 VmSwap uint64

 // Size of hugetlb memory page size.
 HugetlbPages uint64
}

// fillProcStatus takes the key and value, converts the value
// to the proper size unit and is stored in the ProcStatus.
func fillProcStatus(s *ProcStatus, key, value string) {
 v := strToUint64(value)
 switch key {
 case "VmPeak":
  s.VmPeak = v
 case "VmSize":
  s.VmSize = v
 case "VmLck":
  s.VmLck = v
 case "VmPin":
  s.VmPin = v
 case "VmHWM":
  s.VmHWM = v
 case "VmRSS":
  s.VmRss = v
 case "RssAnon":
  s.RssAnon = v
 case "RssShmem":
  s.RssShmem = v
 case "VmData":
  s.VmData = v
 case "VmStk":
  s.VmStk = v
 case "VmExe":
  s.VmExe = v
 case "VmLib":
  s.VmLib = v
 case "VmPTE":
  s.VmPTE = v
 case "VmPMD":
  s.VmPMD = v
 case "VmSwap":
  s.VmSwap = v
 case "HugetlbPages":
  s.HugetlbPages = v
 }
}

// strToUint64 takes the string and converts to unsigned 64-bit integer.
// If the string contains a memory unit such as kB and is converted to
// bytes.
func strToUint64(v string) uint64 {
 // v could be "1024 kB" so scan for the empty space and
 // split between the value and the unit.
 var separatorIndex int
 if separatorIndex = strings.IndexAny(v, " "); separatorIndex < 0 {
  separatorIndex = len(v)
 }
 value, err := strconv.ParseUint(v[:separatorIndex], 1064)
 if err != nil {
  return 0
 }

 var scale uint64 = 1
 switch strings.TrimSpace(v[separatorIndex:]) {
 case "kB", "KB":
  scale = 1024
 case "mB", "MB":
  scale = 1024 * 1024
 }
 return value * scale
}

[Dauer der Verarbeitung: 0.20 Sekunden, vorverarbeitet 2026-06-28]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik