相关疑难解决方法(0)

当OOM杀手杀死一个进程时返回代码

我正在使用SUSE SLES 11在POWER7系统上运行多程序工作负载(基于SPEC CPU2006基准测试).

有时,工作负载中的每个应用程序都会消耗大量内存,并且总内存占用量超过系统中安装的可用内存(32 GB).

我禁用了交换,否则测量可能会对使用交换的进程产生严重影响.我知道通过这样做,内核,通过OOM杀手,可能会杀死一些进程.那很好.问题是我希望内核杀死的线程退出时出现错误(例如,进程被信号终止).

我有一个框架,启动所有进程,然后等待使用它们

waitpid(pid, &status, 0);
Run Code Online (Sandbox Code Playgroud)

即使一个线程被OOM杀手杀死(我知道因为我在屏幕上和/ var/log/messages中得到了一条消息),所以

WIFEXITED(status);
Run Code Online (Sandbox Code Playgroud)

返回一个,然后是通话

WEXITSTATUS(status);
Run Code Online (Sandbox Code Playgroud)

返回零.因此,我无法区分进程何时正确完成以及何时被OOM杀手杀死.

我做错了吗?你知道如何检测一个进程被OOM杀手杀死的时间.

非常感谢你,

胜利者

PS:我发现这篇文章提出了几乎相同的问题.但是,由于这是一个老帖子,答案不尽如人意,我决定发一个新问题.

linux out-of-memory return-code waitpid

6
推荐指数
1
解决办法
9135
查看次数

Git推"错误:索引包死于信号9"

我已经看到了几个类似的 问题,但是还没能解决我的问题,所以再问一遍.

我在现有的启用git的项目中添加了大量新文件,并尝试将其推送.当我执行推送时,它会压缩它们,然后写入它们,然后当它达到%100时,它会因此错误而失败:

error: index-pack died of signal 9 332.28 MiB | 5712 KiB/s   
error: pack-objects died with strange error
error: failed to push some refs to     '<username>@<my repo location'
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的事情:

  1. 进入回购并确保一切都是可写的,就像这里建议的那样

  2. binary -delta在.gitattributes中的某些文件类型上设置选项

  3. 将一些文件夹移出(和git提交删除),以便稍后再单独添加它们.

我有点想法......:/有什么建议吗?感谢任何建议 - 最多

编辑 - 我已经发现这是由于dreamhost因为过多的内存消耗而导致推送(我通过将我的app文件夹复制到dreamhost上的repo服务器并从那里进行推送).

找到了一些页面, - 谈论NO_MMAP=1git中的一个选项来帮助防止这种情况,但是他们在配置git时会谈到它.我可以在现有的git安装中设置此选项吗?它是git-inited应用程序的配置的一部分正在进行推送还是它是repo配置的一部分?

编辑2 - 按照上面的页面上的说明,我下载并制作了我自己的本地git二进制文件,并设置了NO_MMAP = 1选项.

我确定这些是在我的路径中安装了dreamhost的版本之前,并且"哪个git"显示了我的本地版本,到目前为止一切都很好.但是,我得到完全相同的问题.

我是否需要使用我的仓库做一些事情来使NO_MMAP选项工作,或者你认为问题是什么?

git git-push

6
推荐指数
2
解决办法
2万
查看次数

标签 统计

git ×1

git-push ×1

linux ×1

out-of-memory ×1

return-code ×1

waitpid ×1