首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >get rusage.maxrss在macOS和Linux上的奇怪值

get rusage.maxrss在macOS和Linux上的奇怪值
EN

Stack Overflow用户
提问于 2020-01-25 21:44:15
回答 1查看 717关注 0票数 0

目前我正在写关于高朗的在线判断系统。为了检测用户程序内存的使用情况,我决定分析cmd.ProcessState.SysUsage()并检查Rusage.Maxrss。现在我很困惑,因为当我尝试在我的mac上运行Rusage.Maxrss调用的结果是很奇怪的

下面是我在macOS和Linux上运行的代码(这个代码被简化了,这个代码调用了当前进程的Getrusage() ),我得到了一些结果:

代码语言:javascript
复制
package main

import (
    "fmt"
    "syscall"
)

func main() {
    rusage := syscall.Rusage{}
    pageSize := syscall.Getpagesize()
    if err := syscall.Getrusage(syscall.RUSAGE_SELF, &rusage); err != nil {
        fmt.Println(err)
        panic(err)
    }

    fmt.Printf("page size: %d\nrusage.Maxrss: %d\n", pageSize, rusage.Maxrss)
}

下面是我得到的结果

  • MacOS:运行test.go页面大小: 4096 rusage.Maxrss: 2007040
  • Linux/Ubuntu-18.04: go运行test.go页面大小: 4096 rusage.Maxrss: 17580

你能解释一下它为什么会有这么大的价值吗?正如我所看到的macOS手册和linux手册页: rusage.Maxrss (或C语言的rusage.ru_maxrss )是以千字节为单位的,所以在macOS上,我的代码使用了~2GB的内存,而它只使用~20 my?

这是衡量用户程序使用rusage.Maxrss使用的内存的一个好决定,还是有更好的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-26 04:54:35

在我的Mac上,getrusage()手册页面上写着:"ru_maxrss --使用的最大驻留集大小((以字节为单位))“(重点是添加的)。这似乎对你的结果有意义。

你所指的苹果遗留文档存档中的iOS手册页确实说这些单位是千字节。目前还不清楚这是由于iOS和macOS之间的不同行为所致,还是因为手册页中的错误已经被纠正了。令人遗憾的是,苹果没有将维护的手册页面保持在网上。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59913657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档