MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / readSmapsRollup

Function readSmapsRollup

agent/app/service/process.go:274–308  ·  view source on GitHub ↗
(pid int32, mem *MemoryDetail)

Source from the content-addressed store, hash-verified

272}
273
274func readSmapsRollup(pid int32, mem *MemoryDetail) error {
275 filePath := fmt.Sprintf("/proc/%d/smaps_rollup", pid)
276 file, err := os.Open(filePath)
277 if err != nil {
278 return err
279 }
280 defer file.Close()
281
282 scanner := bufio.NewScanner(file)
283
284 for scanner.Scan() {
285 line := scanner.Text()
286 fields := strings.Fields(line)
287 if len(fields) < 2 {
288 continue
289 }
290
291 key := strings.TrimSuffix(fields[0], ":")
292 value, _ := strconv.ParseUint(fields[1], 10, 64)
293 value *= 1024
294
295 switch key {
296 case "Pss":
297 mem.PSS = value
298 case "Private_Clean", "Private_Dirty":
299 mem.USS += value
300 case "Shared_Clean", "Shared_Dirty":
301 if mem.Shared == 0 {
302 mem.Shared = value
303 }
304 }
305 }
306
307 return scanner.Err()
308}
309
310func readSmaps(pid int32, mem *MemoryDetail) error {
311 filePath := fmt.Sprintf("/proc/%d/smaps", pid)

Callers 1

getMemoryDetailFunction · 0.85

Calls 2

CloseMethod · 0.65
ScanMethod · 0.65

Tested by

no test coverage detected