前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux一次 out of memory经历

Linux一次 out of memory经历

作者头像
Sheldon.Lee
发布2020-05-25 17:26:31
5.1K0
发布2020-05-25 17:26:31
举报

最近在看百度PaddleNlp的模型,本着是骡子是马先拿出来溜溜的原则,于是根据指导安装了Paddle,下载了 短文本语义匹配的模型

使用:官网说的挺详细了,在实际使用的时候可以通过调用ssh脚本或者直接执行python命令或函数,传入相应的参数即刻。也可通过python自带的 WSGI 构建一个简单的web接口进行调用。

回到题目,在进行模型的推理的时候,自行实现了一个多线程的推理接口,当同时进行了两个推理的时候发现进程被干掉了。而且直接显示: Python进程已杀死。。(话说还是第一次看到这样直接的提示。

于是搜了一下发现有可能是因为内存问题导致OOM了,发现可以通过一个命令查看进程的消耗情况:

journalctl -xb | egrep -i 'killed process'

显示 如下:进程ID 为2284

再往上翻翻,可以看到各个字段的含义如下:

Kernel: [ pid ]    uid  tgid   total_vm  rss           nr_ptes  swapents oom_score_adj name

每列的含义:

pid:进程ID uid:用户ID tgid:线程组ID total_vm:虚拟内存使用(单位为4 kB内存页) rss: Resident Set Size(常驻内存集)单位是内存页数,同样的每页4 KB nr_ptes:页表项 swapents:交换条目 oom_score_adj 通常为0;较低的数字表示当调用OOM杀手时,进程将不太可能死亡。

再往上翻翻(这里可以grep 发生kill的时间,也就是 journalctl -xb | grep 'time')把各个进程的rss项相加,可以算出已使用的内存,我的计算结果是:

916746 * 4 / 1024  = 3.49G

而服务器标的内存就4G。。程序使用的虚拟总内存是 486238 * 4 / 1024 /1024 =1.85 GB; 实际映射到内存中的为 273138 * 4 / 1024 /1024 = 1.04G

因此如果还需要内存的话则超过了系统的内存,导致了内存溢出。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年1月16日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档