标签: memory

获取linux可执行文件的最大内存使用量

我需要一个 shell 脚本来检索 Linux 可执行文件的最大内存消耗。可执行文件可能会使用大量 RAM 生成子进程,这些 RAM 应该包含在总数中。

我已经尝试过了/usr/bin/time -f "%M" /path/to/executable,但这总是会产生结果0,尽管使用ps我可以验证该过程确实消耗了大量的 RAM。

为什么总是time给我,我怎样才能得到我要找的号码?0

scripting memory shell time

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

tmpfs 会碎片化吗?

既然tmpfs只存在于内存中,它会像内存一样变得碎片化吗?是否有机制可以自动对内存进行碎片整理,从而提高(甚至略微提高)存储文件的访问速度?

filesystems memory tmpfs fragmentation defragmentation

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

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

假设我有一个 docker 主机,其中设置了 50 个容器,每个容器运行一个由 Apache 提供服务的站点。

据我了解,每个容器都会运行一个 Apache 实例,通常每个 Apache 实例每 ram 使用 ~250mb。Apache 然后每个子进程需要几 mb。

假设每个容器都需要完整 Apache 实例的内存,我是否正确?例如。50 个站点需要 50 x ~300mb?

或者 Apache 是否能够在容器之间共享部分内存以提高内存效率?

Docker 是否适合高效的“大规模”托管(例如,大量站点,每个站点都需要很少的资源),其中每个站点都是一个容器?或者只让一个 Apache 容器服务于 50 个站点是否可行?

memory memory-usage apache-2.2 docker

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

板坯使用率极高?

在具有 32GB RAM 内存的 Centos 7 服务器上,我正在运行一些程序,即 MySQL、Apache2、PHP。最近我想验证剩余的内存量,因为我计划安装更多的程序,令我惊讶的是内存量很低!经过调查,我发现 Slab 使用了超过 20GB。2 天前,我删除了缓存,因此平板使用率下降到 0 并再次缓慢增加。在使用程序监视它时,我注意到使用率呈线性增长。在过去 24 小时内,它增加了约 5200MB(60 小时内总共增加了 13GB)。磁盘上的总数据在 40GB 以下。'find /' 的输出只有几 MB。如果 dentries 被缓存,似乎有很多东西?

我有帖子说 curl 附带的 NSS 是原因。我检查了那里安装的 NSS 版本,它是一个应该应用修复程序的版本。

我还发现建议使用 vfs_cache_pressure 的帖子,但是增加它似乎并没有阻止使用率上升到极高的值。

我想知道对于小于 50GB 的小磁盘,身份的正常内存量是多少?我怎样才能找到来源以及如何解决这个问题?

相关图片:
slabtop 的屏幕截图:这里
slab 可回收和缓存内存的图表:这里

编辑:

# sysctl -n vm.vfs_cache_pressure
10000
Run Code Online (Sandbox Code Playgroud)

(以前是 100,我增加了 x100 但内存仍然增加相同的数量)

# find / -type d -size +10M -ls
#
Run Code Online (Sandbox Code Playgroud)

(无输出)

至于 cronjobs,除了每日日志轮换之外,还有一个脚本可以建立一些 tcp 连接来获取数据并将其存储在数据库中(原始套接字,没有 curl 或任何东西)。除了那个 cronjob,还有 2 个每周运行一次的备份 cronjob。唯一应该能够导致 I/O 的是安装了 SMF 的 …

memory cache

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

在 RAM 中创建块设备

我的日常任务之一是使用我们的软件创建 USB 闪存盘的可启动映像。映像必须包含两个分区,第一个分区为 FAT32,第二个为 EXT3。首先,我们将 Linux 内核和一个小的启动脚本放在我们要启动的设备上的引导加载程序中,并在启动时读取。

在第二个分区上,我们放置了 rootfs。

现在,这是我的做法:

  1. 将 USB 随身碟插入我的 Linux comp。找出它的设备文件(这里假设/dev/sdx)

  2. 将它的前 600 MB 清零:dd if=/dev/zero of=/dev/sdx bs=1M count=600

  3. 创建两个分区,第一个 10 MB 和第二个 500 MB: sfdisk /dev/sdx --unit S << EOF ,20000,c ,1000000,83 EOF

    mkfs.vfat /dev/sdx1 mkfs.ext3 /dev/sdx2

(假设扇区大小为 512 字节!)

  1. 将内核和启动脚本复制到 /dev/sdx1
  2. 将预编译的 RootFS 解压到 /dev/sdx2
  3. 将U盘中的现成镜像复制回我们的硬盘:dd if=/dev/sdx of=usb.img bs=1M count=520
  4. 压缩它并发送给测试这个软件的人。
  5. 然后人们解压缩,用 dd if=usb.img of=/dev/sdx 刷入他们的 U 盘并插入他们的设备并测试。

现在,所有这些都有效。明显的改进是创建一个脚本来自动完成这一切。这也可以完成,但仍然需要一个手动步骤:插入 USB 随身碟。

我在想,我们可以使用 RAM 中的块设备来代替实际的 USB 磁盘。这样不仅可以省去手动插入U盘的步骤,而且速度也会更快。

所以我需要的是 RAM 中的普通块设备。可以像物理 USB 笔式驱动器一样分成多个分区。

我刚刚研究了这个话题,似乎唯一的选择是

  1. tmpfs 和 …

linux memory

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

如何在不耗尽我所有 RAM 的情况下持续运行 Wireshark?

我需要整夜运行 Wireshark 来捕获来自某个 IP 地址的数据包。我注意到 Wireshark 运行的时间越长,占用的 RAM 就越多,因为它存储了运行期间发现的所有数据包。我有3种可能的解决方案,但我在网上找不到任何答案:

  1. 将 Wireshark 配置为仅在 RAM 中保存通过过滤器出现的数据包(不是所有数据包)。我不确定这是否可能。
  2. 配置 Wireshark 以每小时自动将数据包保存到文件中,并在存储到文件后释放其内存。
  3. 使用专为运行一段时间而设计的 Wireshark 替代方案。

memory wireshark

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

在 NFS 共享中复制文件是否涉及网络?

我假设使用以下方法在 NFS 共享中复制文件:

流程一:

  • 客户端请求从 NFS 共享复制数据(如果缓存不存在),数据块会异步复制到 NFS 客户端的内存,然后再次异步将其发送到 NFS 文件管理器以复制到新位置。
  • NFS 文件管理器在内存中异步接收数据块并将其写入新位置。
  • 在这个过程中,虽然读和写都会涉及到网络,但由于读写是异步的,整个读写操作的延迟将与整个数据的读写操作的延迟相同。

因此,从本地硬盘读取并写入NFS与从NFS读取并写入NFS几乎相同。

第一步,如果缓存已经存在,那么读取速度会非常快。

流程2:

  • 客户端向 NFS 服务器发送启动数据复制操作的请求,以及必须读取的位置和必须写入的位置(似乎不是)。
  • 服务器使用它自己的内存来完成其余的读写操作。

因此,不涉及网络。因此,可以有更好的性能(除非网络端没有延迟),但它可能不是这样的。

如果我错了,请随时纠正我。

另外,内存是否涉及每个操作,我的意思是当它通过网络发送数据时,数据首先从磁盘发送到内存(数据缓冲区),然后从内存(数据缓冲区)发送到数据缓冲区(在网络的另一侧)网络),但不是从数据缓冲区到网络另一端的磁盘,对吗?

performance memory nfs dd transfer

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

为什么我的 Linux 内核无法回收其平板内存?

我有一个系统,它的内存使用量不断增加,直到达到了即使对于平常的事情也会发生交换的程度,从而变得非常无响应。罪魁祸首似乎是内核分配的内存,但我很难弄清楚内核中究竟发生了什么。

我如何知道哪些内核线程/模块/什么负责特定的内核内存块使用?

下面是系统内存使用情况随时间变化的图表:

系统内存使用情况; lab_unrecl 随着时间的推移而增长

slab_unrecl值随时间增长,对应于SUnreclaim中的字段/proc/meminfo

当我跑到slabtop该图的末尾并按缓存大小对其进行排序时,它向我展示了以下内容:

 Active / Total Objects (% used)    : 15451251 / 15530002 (99.5%)
 Active / Total Slabs (% used)      : 399651 / 399651 (100.0%)
 Active / Total Caches (% used)     : 85 / 113 (75.2%)
 Active / Total Size (% used)       : 2394126.21K / 2416458.60K (99.1%)
 Minimum / Average / Maximum Object : 0.01K / 0.16K / 18.62K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
3646503 …
Run Code Online (Sandbox Code Playgroud)

memory low-memory linux-kernel

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

无法在 AWS EC2 实例上分配可用内存(甚至一半!)

我有两个略有不同的相同类型的 AWS EC2 实例,具有大量内存(c4.8xlarge60GB RAM)。其中一个实例只是从备份映像 (AMI) 启动的副本,无法在其上重现问题。

我停止了除系统服务之外的所有服务,因此大部分内存都是空闲的:

> free -m
              total        used        free      shared  buff/cache   available
Mem:          60382         201       59545           9         635       59695
Swap:             0           0           0
Run Code Online (Sandbox Code Playgroud)

我无法使用实用程序分配甚至一半的可用内存stress

> sudo stress --vm 1 --vm-keep --vm-bytes 30G
stress: info: [40005] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: FAIL: [40006] (494) hogvm malloc failed: Cannot allocate memory
...
Run Code Online (Sandbox Code Playgroud)

这是以下的输出memtester

> sudo memtester 60000
memtester version 4.3.0 (64-bit)
Copyright (C) …
Run Code Online (Sandbox Code Playgroud)

memory amazon-ec2

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

fio 3.23 对许多小文件进行基准测试时的核心转储

我被要求fio为这个测试数据集提供基准测试结果:1048576x1MiB。因此,整体大小为1TiB。该集合包含2^20 个 1MiB文件。服务器运行CentOS Linux release 7.8.2003 (Core)。它有足够的内存:

[root@tbn-6 src]# free -g
              total        used        free      shared  buff/cache   available
Mem:            376           8         365           0           2         365
Swap:             3           2           1
Run Code Online (Sandbox Code Playgroud)

它实际上不是物理服务器。相反,它是一个具有以下 CPU 的 Docker 容器:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                48
On-line CPU(s) list:   0-47
Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 85 …
Run Code Online (Sandbox Code Playgroud)

memory oom crash fio

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