首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ekg-core/GHC RTS :在Google Cloud Run上运行时伪造GC统计数据

ekg-core/GHC RTS :在Google Cloud Run上运行时伪造GC统计数据
EN

Stack Overflow用户
提问于 2020-07-04 23:29:49
回答 1查看 52关注 0票数 1

我在谷歌云基础设施上部署了两个服务;服务1在计算引擎上运行,服务2在云运行上运行,我想通过ekg-core库(https://hackage.haskell.org/package/ekg-core-0.1.1.7/docs/System-Metrics.html)记录它们的内存使用情况。

日志括号类似于以下内容:

代码语言:javascript
复制
mems <- newStore
registerGcMetrics mems
void $ concurrently io (loop mems)
where
  loop ms = do
    m <- sampleAll ms
    ... (lookup the gauges from m and log their values)
    threadDelay dt
    loop ms

我对此感到非常困惑:在服务2(云运行1)的情况下,rts.gc.current_bytes_usedrts.gc.max_bytes_used量规都返回常量0,即使我使用相同的采样/日志记录功能和为这两个服务构建选项。我应该补充说,concurrently中的并发进程是一个web服务器,我预计基本内存负载大约为200KB,而不是0B。

这就是我的知识结束的地方;这种行为会不会是由于谷歌云运行管理程序("gVisor")以非标准的方式实现了某些syscall (gVisor syscall指南:https://gvisor.dev/docs/user_guide/compatibility/linux/amd64/)?

感谢您对指南/手册/计算机智慧的任何指点。

详细信息:

这两个选项都是使用以下选项构建的:

-optl-pthread -optc-Os -threaded -rtsopts -with-rtsopts=-N -with-rtsopts=-T

唯一的区别是,服务2有一个额外的标志-with-rtsopts=-M2G,因为云运行服务必须使用最多2 GB的内存。这两种情况下的容器操作系统都是Debian 10.4 ("Buster")。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-05 03:02:23

考虑一下这一点,这种行为在“无服务器”模型中是完全合理的;当服务不处理请求1时,资源( CPU和内存)被限制为0,而这正是ekg所获得的。

然而,为什么即使在请求之外也打印出日志仍然是一个谜。

1

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

https://stackoverflow.com/questions/62730996

复制
相关文章

相似问题

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