Articles of 内存使用

Docker + Apache,内存使用情况如何工作?

比方说,我有一个docker主机设置了50个容器,每个容器运行一个由Apache服务的站点。 据我了解,每个容器将运行一个Apache实例,通常每个Apache实例每ram使用约250mb。 那么Apache每个subprocess需要几个MB。 我是否正确地假设每个容器都需要一个完整的Apache实例的内存? 例如。 50个站点需要50 x〜300mb? 或者Apache能够在容器之间共享部分内存来提高内存效率? Docker是否适合高效的“大规模”托pipe(例如,每个站点都是容器的大量站点,每个站点都需要很less的资源)? 或者只有一个Apache容器为50个站点提供服务是可行的?

当内存占用过多时自动挂起/hibernate进程

我正在使用16GB内存的8核PC上运行一个小型的Debian计算集群。 我正在运行大约1k个任务的批次(每个批次总共有一个月的预计完成时间)。 一个任务是单线程的(所以我可以在每台PC上并行运行多个),不会消耗太多的IO(在启动时加载几兆字节的数据,在退出时转储数兆字节的数据;不与外部通信否则),其运行时间是未知的(从几分钟到几周),其内存消耗是未知的(从几兆字节到8GB;使用可能增长缓慢或快速)。 我想尽可能在​​单台PC上同时完成多项任务,但是我想避免过多的交换。 所以我有一个想法:我可以监视这些任务的内存使用情况,并暂停( kill -SIGSTOP )或hibernate(使用类似CryoPID的工具)任务,这些任务会消耗太多的内存以便稍后重新启动。 内存使用量是指“活动虚拟页面”的数量,或者实际上已经被触摸的已分配但不是共享的内存页面的数量(这些任务可以在不使用它们的情况下分配内存)。 我开始寻找一些工具来做到这一点。 我知道我可以在限制内存的cgroup中限制或运行任务,但是如果我正确理解这些任务,这些解决scheme将会终止进程,而不是暂停进程。 我想避免杀死他们,因为我需要从头开始,这意味着浪费时间。 而且,他们实际上不能测量活动虚拟页面的数量。 我可以使用真正的虚拟机,但是在这种情况下它们似乎具有相当大的开销 – 具有单独的内核,内存分配等会减less可用内存; 我必须运行其中的8个。 而且,据我所知,他们也会增加计算开销。 我想象一个实现这种行为的工具会把一些函数连接到一个页面错误通知,它会决定每个页面错误是否是暂停过程的时间。 但我不知道任何可以这样工作的工具。 还有其他的select吗?

避免交换ElastiCache Redis

我们一直在ElastiCache Redis实例交换中遇到麻烦。 亚马逊似乎有一些粗暴的内部监控,注意到交换使用率高峰,只是重新启动ElastiCache实例(从而失去了我们所有的caching项目)。 以下是过去14天ElastiCache实例上的BytesUsedForCache(蓝线)和SwapUsage(橙线)的图表: 您可以看到越来越多的交换使用的模式似乎触发我们的ElastiCache实例重启,其中我们失去了所有的caching项目(BytesUsedForCache下降到0)。 我们ElastiCache仪表板的“caching事件”选项卡上有相应的条目: 来源ID | types| date| 事件 cache-instance-id | cache-cluster | 星期二9月22日07:34:47 GMT-400 2015 | caching节点0001重新启动 cache-instance-id | cache-cluster | 星期二9月22日07:34:42 GMT-400 2015 | 在节点0001上重新启动caching引擎时出错 cache-instance-id | cache-cluster | Sun Sep 20 11:13:05 GMT-400 2015 | caching节点0001重新启动 cache-instance-id | cache-cluster | Thu Sep 17 22:59:50 GMT-400 2015 | caching节点0001重新启动 cache-instance-id | […]

我的ZFS重复数据删除表目前有多大?

我已经阅读了大量有关ZFS重复数据删除规划RAM要求的信息。 我刚刚升级了我的文件服务器的内存,以支持一些非常有限的ZFS zvols重复数据删除,我不能使用快照和克隆(因为他们是zvols格式化为不同的文件系统),但将包含很多重复的数据。 我想确保我添加的新RAM将支持我打算进行的有限重复数据删除。 在规划中,我的数字看起来不错,但我想确定一下。 我怎样才能知道我现场系统上的ZFS重复数据删除表(DDT)的当前大小? 我阅读这个邮件列表线程,但我不清楚他们如何获得这些数字。 (如果需要,我可以发布zdb tank的输出,但我正在寻找一个可以帮助其他人的通用答案)

缓冲区/caching线在输出中的含义是免费的

为什么我的服务器显示 total used free shared buffers cached Mem: 12286456 11715372 571084 0 81912 6545228 -/+ buffers/cache: 5088232 7198224 Swap: 24571408 54528 24516880 我不知道在linux中计算内存。 我认为它说5088232用于7198224是免费的,这意味着它实际上消耗5GB的RAM?