Questions tagged «memory»

在计算中,内存是指计算系统的状态信息,因为它在某些物理结构中保持活动状态。

2
有人真正使用透明大页面并从中受益吗?
最近,我一直在努力处理透明的大页面性能问题,并且注意到许多数据库系统建议将其关闭。我说的是Oracle,Postgresql,MySQL,Cassandra,NuoDB,Redis,Hadoop等。 举些例子: 彼得·扎伊采夫(2014年7月23日)。为什么TokuDB讨厌透明的HugePages。Percona。 米歇尔·凯西(2013-09-17)。透明巨大页面的性能问题。甲骨文 亚当·阿布雷瓦亚(Adam Abrevaya)和奥列格·莱文(Oleg Levin)(2014-05-15)。 Linux透明大页面,JEMalloc和NuoDB。NuoDB开发中心。 所以我想知道:什么功能可以从此功能中受益?

1
如何监视每个进程/每个线程的内存消耗(分为堆,堆栈,数据,代码)?
在开始编写自己的代码之前,我想确定是否有GNU / Linux软件能够输出类似于QNX的软件showmem。 对于正在运行的每个进程的每个线程,我希望看到内存消耗分为以下几类: Process listing (Total, Code, Data, Heap, Stack, Other) 319488 1024000 24587 167936 24576 0 4103 devc-con-hid (thread 2) 0 0 0 0 4096 0 4103 devc-con-hid (thread 2) 0 0 0 0 20480 0 4103 devc-con-hid (thread 1) 0 102400 8192 0 0 0 4103 devc-con-hid …
11 linux  memory  stack 

2
将固定的RAM存储器区域保留为块设备(具有给定的起始物理地址)
关于RAM磁盘有很多问题,我知道ramfs和tmpfs允许将ram用作块设备。但是,我的兴趣是使用固定的内存地址范围作为块设备。 这是由于必须使用系统中可用的非易失性RAM。我有6GB的可用RAM和8GB的非易失性RAM。/ proc / iomem的输出为我提供了以下内容 100000000-17fffffff:系统RAM 180000000-37fffffff:保留 此处从6GB到14GB的区域对应于非易失性RAM区域,该区域由E820 BIOS内存映射标记为保留。我的主要目的是将此NVRAM用作Linux中的块设备。这对于测试NVRAM系统很有用。是否已经有任何Linux命令可以使我将该区域用作块设备,还是必须编写自己的内核设备驱动程序来实现这一目的?
11 linux  memory  ramdisk 

4
当CPU /内存使用率过高时,Bash脚本会自动终止进程
我创建了一个脚本,该脚本可以在CPU和/或内存使用率达到80%时终止进程。发生这种情况时,它将创建一个被终止进程的列表。我该怎么做才能改善它? while [ 1 ]; do echo echo checking for run-away process ... CPU_USAGE=$(uptime | cut -d"," -f4 | cut -d":" -f2 | cut -d" " -f2 | sed -e "s/\.//g") CPU_USAGE_THRESHOLD=800 PROCESS=$(ps aux r) TOPPROCESS=$(ps -eo pid -eo pcpu -eo command | sort -k 2 -r | grep -v …

3
确定Linux下套接字消耗多少内存的公式是什么?
我正在做一些容量规划,我想知道是否有一个公式可以用来(从内存的角度)预测服务器上可以处理多少个TCP连接。目前,我只关心内存需求。 我认为公式中会显示一些变量: sysctl net.ipv4.tcp_wmem(最小值或默认值) sysctl net.ipv4.tcp_rmem(最小值或默认值) sock,sock_common,proto和其他按套接字数据结构的大小。 我不确定实际分配了多少tcp_wmem和tcp_rmem以及何时分配了该内存。在套接字创建时?一经请求?
11 linux  memory  tcp 

1
为什么Linux会显示比我实际安装的内存更多或更少的内存?
我知道交换-这个问题不是。在dmesg中,Linux(x86-64)内核告诉我有关我有多少内存的信息: [ 0.000000] Memory: 3890880k/4915200k available (6073k kernel code, 861160k absent, 163160k reserved, 5015k data, 1596k init) cat /proc/meminfo 告诉我我有 MemTotal: 3910472 kB 根据我的计算,我认为我应该有4 * 1024 * 1024 = 4194304k RAM。这是方式比上面dmesg的行第二个数字小! 所有这些不同的数字是什么? 顺便说一句,uname -a输出: Linux pavilion 3.2.2-1.fc16.x86_64 #1 SMP Thu Jan 26 03:21:58 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux


1
“高速缓存”存储器实际上是免费的吗?
运行时cat /proc/meminfo,您将在顶部获得以下三个值: MemTotal: 6291456 kB MemFree: 4038976 kB Cached: 1477948 kB 据我所知,“已缓存”值是Linux系统创建的磁盘缓存,如果任何应用程序需要更多RAM,它将立即释放,因此Linux永远不会用完内存,直到MemFree和“已缓存”都为零。 不幸的是,/ proc / meminfo没有报告“ MemAvailable”,可能是因为它在虚拟服务器中运行。(内核版本为4.4) 因此,出于所有实际目的,可用于应用程序的RAM是MemFree + Cached。 这种观点正确吗?
11 linux  memory  cache  meminfo 

2
结束后如何在Linux上测量应用程序的峰值内存
如何测量在Linux上运行的应用程序的峰值内存? 我批量运行此应用程序,因此无法使用RSS,因为它会报告当前内存。我需要该应用程序过去曾被报告的峰值内存。 VmPeak也不是一种解决方案,因为它报告已分配的内存,并且也不从实际的Ram而是从硬盘进行计算。
11 linux  memory 

2
整理RAM / OOM故障
这个问题相当冗长,因此我将在顶部询问问题,然后逐一探讨提出问题的方法: (基于Busybox的)rm是否没有执行,因为没有足够的连续RAM? 如果是这样,是否有一种轻巧的方法来对DMA进行碎片整理-无需重新启动系统? 如果不是,是什么原因造成的?我如何防止它将来发生? 在过去几天中我们的测试系统相当密集地运行之后,我通过telnet进入系统并检查了测试结果。当我删除一些数据时,系统返回了命令行(就像命令已正确执行一样)。当我检查目录是否有另一组结果时,我看到该文件仍然存在(使用ls)。 此后,我注意到越来越多的shell命令无法按预期执行。 rm无法正确执行后,我将从dmesg的输出开始: 从进程6821(rm)分配长度61440失败 DMA每个CPU: CPU 0:嗨:0,btch:1 usd:0 Active_anon:0 active_file:1 inactive_anon:0 inactive_file:0无法清除:6脏:0回写:0不稳定:0空闲:821平板:353映射:0页表:0反弹:0 DMA空闲时间:3284kB分钟:360kB低点:448kB高位:540kB active_anon:0kB inactive_anon:0kB active_file:4kB inactive_file:0kB不可撤销:24kB当前:8128kB pages_scanned:0 all_unreclaimable?没有 lowmem_reserve []:0 0 0 DMA:31 * 4kB 47 * 8kB 42 * 16kB 64 * 32kB 1 * 64kB 0 * 128kB 0 * 256kB 0 * …
11 linux  memory  embedded 


1
总内存和可用内存有什么区别
我有一个安装了Centos 7的桌面系统。它具有4核和12 GB内存。为了找到内存信息,我使用free -h命令。我有一个困惑。 [user@xyz-hi ~]$ free -h total used free shared buff/cache available Mem: 11G 4.6G 231M 94M 6.8G 6.6G Swap: 3.9G 104M 3.8G 在total列中,表示总计为11GB(是正确的),在最后一列中,则表示6.6GB已使用的是4.6G。 如果使用的内存为4.6 GB,则剩余容量应为6.4 GB(11-4.6 = 6.4)。以上输出的正确解释是什么?总内存与可用内存和可用内存之间有何区别?如果某些新应用程序需要1 GB以上的内存,我的内存不足吗?
11 linux  memory  ram 

2
如何优雅地解决此内存问题?
我有一台带有交换分区的标准Linux(Debian测试)笔记本电脑。 我做了很多实验。其中一些确实非常消耗内存,Linux默认情况下的行为方式对我来说是个问题...让我们举一个愚蠢的例子: 坐在笔记本电脑前 打开一个终端 类型python,然后a = [0]*100000000 现在很有可能您没有足够的RAM来处理这个大列表。Linux将先填充RAM,然后进行交换,几分钟后,OOM杀手将被触发并杀死(几乎)随机服务,如果希望您在适当的时候按Ctrl + C python,并且如果终端仍然有重点,计算机将再次变得敏感。 我想强制执行一些内存限制,以避免不必要的交换,并拒绝给进程分配比我(在RAM中)更多的内存的权利。如果内存需求低于某个限制或由root要求,则只需杀死除root以外的任何用户最耗费内存的进程。 ulimit -Sv [mem] 我在后面听到! 呵呵!“ cgroups通过使用cgexec!” 有人在第一行说! 是的,您是对的:这些确实是非常好的解决方案。但: 它们不适用于整个系统 限制是按过程设置的 限制是静态的,不考虑可用RAM(AFAIK)的实际数量 这里和那里,他们说这些是不是真的很好地解决执行难的限制。 我想要的是内核说:“您属于用户foo(不是root),您使用了大量内存,而我们将用光内存。抱歉,老兄……现在就死了!” 或者:“您到底在干什么?您需要x MB,只有y MB可用。是的,SWAP是空的,但是您不打算使用SWAP来完成您的工作,是吗?不,我说不!你没有记忆!如果你坚持下去,你会死的!
10 memory  limit  cgroups  ulimit 

2
当有足够的内存时,为什么我不能“交换”?
我最近注意到,即使我的系统上有很多内存: # free -m total used free shared buffers cached Mem: 15965 9680 6284 35 1754 2560 -/+ buffers/cache: 5365 10599 Swap: 2047 258 1789 我无法swapoff -a使用2G交换文件 -rw-r----- 1 root root 2.0G Feb 9 21:34 /2GB.swap 我已经通过更改了以下内核参数,sysctl但这应该是原因: vm.swappiness = 5 vm.vfs_cache_pressure = 200 任何原因: # swapoff -a swapoff: /2GB.swap: swapoff …
10 linux  memory  swap 

1
什么使用4GB内存?(不是缓存,不是进程,不是平板,不是shm)
我们有些EC2服务器会在几天或几周内发生内存泄漏。最终,将使用许多GB的内存(根据诸如free和的工具htop),如果不重新启动服务器,我们的进程将开始被OOM杀死。 一台这样的服务器具有15GB的内存。这是的输出free -m: total used free shared buffers cached Mem: 15039 3921 11118 0 0 7 -/+ buffers/cache: 3913 11126 Swap: 0 0 0 该服务器处于空闲状态;我杀死了大多数用户区进程。htop中没有进程显示> 100k VIRT。我最近跑步了echo 3 > /proc/sys/vm/drop_caches,没有任何效果(这就是为什么buffers,它cached是如此之小)。另外: 随便看看/proc/slabinfo,slabtop并没有显示出任何希望 / run / shm中没有任何内容 这是的输出cat /proc/meminfo: MemTotal: 15400880 kB MemFree: 11385688 kB Buffers: 564 kB Cached: 7792 kB SwapCached: …
10 memory  meminfo 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.